java - 允许某些字符对 ESAPI 编码器免疫?
问题描述
我正在尝试将 ESAPI 编码器与我的 JavaEE 应用程序结合起来,并希望它不对某些字符集进行编码,例如'<'、'!'、'('、')'。
我在文档https://static.javadoc.io/org.owasp.esapi/esapi/2.0.1/org/owasp/esapi/Encoder.html上读到“所有字符都应该被编码,除了一个特定的列表“免疫”字符”。
我想知道在哪里以及如何配置这个特定的“免疫”字符列表。它会在 ESAPI.properties 文件中吗?
解决方案
简单的答案是,你不能。或者至少不容易。您可以通过将ESAPI.properties中的行更改为:
ESAPI.Encoder=org.owasp.esapi.reference.DefaultEncoder
类似于
ESAPI.Encoder=com.MyCompany.myApp.MyEncoder
然后在 MyEncoder.java 中,用您自己的替换一个或多个 ESAPI对其各种变量的初始化。IMMUNE_*
屁股这是唯一的方法。没有方法或属性可以重新定义它,因为在一般情况下,您永远不应该这样做。(有一个 [糟糕的,IMO] 设计决定使 ESAPI 的所有参考实现都成为单例,因此为 DefaultEncoder 类提供这样的方法会让我为类的所有实例更改它,这似乎太危险了。)
所以与其像我一样回答你的问题,我应该问你为什么要这样做?IMMUNE_CSS编解码器最近添加了“#”(目前仅在 GitHub 上的“开发”分支中),但即使是在没有现任和前任 OWASP 项目负责人广泛讨论的情况下也没有完成。在所有已知情况下,免疫列表都是明智地选择“安全”的。然后不打算仅应用于一些已知安全的边缘情况。这就是为什么我要问“你为什么要这样做?你具体要达到什么目的?” 因为您尝试做的事情可能有更好的方法。
推荐阅读
- postgresql - 插入到 postgres 时省略尾随零
- sql - 从函数中检索记录
- asp.net - 尝试在 asp.net 框架 api 中执行 GetAllPatients 方法时出现 Stackoverflow 异常
- karate - 从组合框中选择可见文本
- javascript - 如何提高three.js中许多精灵的动态纹理性能?
- javascript - 将用户从一个视图重定向到另一个视图或在 SignalR 集线器内
- python - 如何使用烧瓶蓝图为多个视图文件避免循环依赖
- reactjs - 如何在 Reactjs 的轮播中选择图像?
- chart.js - 图表 JS 对数 x 轴
- java - 使用 VPC 终端节点连接到 AWS S3 的示例 Java 代码