我正在尝试将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中,用您自己的各种IMMUNE_*
变量替换ESAPI的一个或多个初始化。对接是唯一的方法。没有方法或属性可以重新定义,因为在一般情况下,您永远都不想这样做。 (IMO的一个设计决定是,使ESAPI的所有参考实现都成为一个单例,因此为DefaultEncoder类提供这种方法将使您对类的所有实例都进行更改,这似乎太危险了。)
因此,与其说像我那样回答您的问题,不如说我为什么要这样做? IMMUNE_CSS编解码器最近添加了“#”(当前仅在GitHub的“ develop”分支中),但是即使没有现任和以前的OWASP项目负责人进行广泛讨论,也无法做到这一点。在所有已知情况下,免疫列表都明智地选择为“安全”。因此,这并不打算仅应用于某些已知安全的边缘情况。这就是为什么我问“为什么要这样做?您到底要达到什么目标?”因为可能会有更好的方法来解决您的问题。
关于java - 允许某些字符不受ESAPI编码器的影响?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53435475/