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

标签 java jakarta-ee owasp 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 项目负责人进行广泛讨论的情况下才完成的。免疫列表是明智选择的,在所有已知情况下都是“安全的”。 then 不适用于仅某些已知安全的边缘情况。这就是为什么我要问“为什么你想要这样做?你具体想要实现什么目标?”因为可能有更好的方法来完成您正在尝试做的事情。

关于java - 允许某些字符不受 ESAPI 编码器的影响吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53435475/

相关文章:

java - 基于 Zeromq 的 log4j 附加程序未关闭套接字

java - Apache POI 添加列标签

java - 在同一类的不同实现之间进行选择

sonarqube - 我们能否用 SonarQube 替换静态应用程序安全测试 SAST 工具,如(Fortify、Checkmarx 和 IBM Appscan)

PHP OWASP TOP 5 - 防止跨站脚本 (XSS) 列表项 4 和 5

java - Angular5中的日期格式错误

java - HTTP 状态 500 - java.lang.NoClassDefFoundError : Could not initialize class org. apache.jasper.el.E​​LContextImpl

java - 如何在安全上下文中以编程方式进行身份验证和创建 session

java - 在 JBOSS 中升级 Hibernate 版本

PHP $_SERVER ['HTTP_HOST' ] vs. $_SERVER ['SERVER_NAME' ],我是否正确理解了手册页?