允许某些字符不受 ESAPI 编码器的影响?

Allow certain characters to be immune for ESAPI encoder?

我正在尝试将 ESAPI 编码器与我的 JavaEE 应用程序合并,并希望它不对特定字符集进行编码,例如“<”、“!”、“(”、“)”。

我在文档 https://static.javadoc.io/org.owasp.esapi/esapi/2.0.1/org/owasp/esapi/Encoder.html 上读到 "all characters should be encoded, except for a specific list of " 免疫“字符”。

我想知道在哪里以及如何配置这个特定的 "immune" 字符列表。它会在 ESAPI.properties 文件中吗?

简单的回答是,你不能。或者至少不容易。您可以通过将 ESAPI.properties 中的行从:

更改为

ESAPI.Encoder=org.owasp.esapi.reference.DefaultEncoder

类似于

ESAPI.Encoder=com.MyCompany.myApp.MyEncoder

然后在 MyEncoder.java 中,用您自己的 IMMUNE_* 变量替换 ESAPI 的一个或多个 初始化 的各种 IMMUNE_* 变量。巴特那是唯一的方法。没有方法或 属性 来重新定义它,因为在一般情况下,您不应该这样做。 (有一个 [可怜的,IMO] 设计决定使所有 ESAPI 的参考实现成为一个单例,所以向 DefaultEncoder class 提供这样的方法我会为 class 的所有实例更改它这似乎太危险了。)

所以与其像我一样回答你的问题,我应该问你为什么你想这样做? IMMUNE_CSS 编解码器最近在中添加了“#”(目前仅在 GitHub 上的 'develop' 分支中),但即便如此也没有完成没有在现任和前任 OWASP 项目负责人之间进行广泛讨论。在所有已知情况下,免疫列表都被明智地选择为 "safe"。 Then 不打算仅应用于某些已知安全的边缘情况。这就是为什么我要问“为什么 你想这样做?你具体想要达到什么目的?”因为可能有更好的方法来处理您正在尝试做的事情。