我正在尝试将ESAPI编码器与我的JavaEE应用程序结合起来,并希望它不要编码特定的字符集,例如“<”、“!”、“(‘,’)”。
我在文档https://static.javadoc.io/org.owasp.esapi/esapi/2.0.1/org/owasp/esapi/Encoder.html上读到“所有字符都应该被编码,除了一个特定的”免疫“字符列表”。
我想知道我可以在哪里以及如何配置这个“免疫”字符的特定列表。它会在ESAPI.properties文件中吗?
发布于 2018-11-23 22:12:57
简单的答案是,你不能,或者至少不容易。您可以通过将ESAPI.properties中的行更改为:
ESAPI.Encoder=org.owasp.esapi.reference.DefaultEncoder
到某种程度上
ESAPI.Encoder=com.MyCompany.myApp.MyEncoder
然后在MyEncoder.java中,用自己的IMMUNE_*变量替换ESAPI的各个IMMUNE_*变量的一个或多个初始化。屁股那是唯一的办法。没有方法或属性来重新定义这一点,因为在一般情况下,您永远不应该这样做。(有一个糟糕的IMO设计决定,使所有ESAPI的引用实现都是单例的,所以如果向DefaultEncoder类提供这样的方法,您将对类的所有实例进行更改,这似乎太危险了。)
所以,与其像我一样回答你的问题,我应该问你为什么要这么做?IMMUNE_CSS编解码器最近添加了“#”(目前仅在GitHub上的“开发”分支中),但即使这样做,也必须在当前和前任OWASP项目负责人之间进行广泛讨论。在所有已知的情况下,免疫清单都是明智地选择“安全”的。则不打算仅适用于已知安全的边缘情况。这就是为什么我要问:“你为什么要这么做?你到底想达到什么目的?”因为也许有一个更好的方法来做你想要做的事情。
https://stackoverflow.com/questions/53435475
复制相似问题