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

时间:2018-11-22 16:58:39

标签: java java-ee owasp esapi

我试图将ESAPI编码器与我的JavaEE应用程序结合在一起,并希望它不对某些字符集进行编码,例如'<','!','((',')'。

我在文档https://static.javadoc.io/org.owasp.esapi/esapi/2.0.1/org/owasp/esapi/Encoder.html上读到,“除了特定的“免疫”字符列表之外,所有字符都应进行编码”。

我想知道在哪里以及如何配置“免疫”字符的此特定列表。它将在ESAPI.properties文件中吗?

1 个答案:

答案 0 :(得分:1)

简单的答案是,你不能。或至少不容易。您可以通过以下方式更改 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项目负责人进行广泛讨论,也无法做到这一点。在所有已知情况下,免疫列表都明智地选择为“安全”。因此,这并不打算仅应用于某些已知安全的边缘情况。这就是为什么我问“ 为什么为什么要这样做?您到底要达到什么目标?”因为可能会有更好的方法来解决您的问题。