如何修改ESAPI.properties白名单&字符,避免forHTML()编码它?
ESAPI forHTML() 保留&字符的配置方法
要让ESAPI的ESAPI.encoder().forHTML()方法不编码&,需修改ESAPI.properties中的以下配置项:
核心配置项
使用**Encoder.ValidHTMLCharacters**配置项,它专门定义HTML编码场景下的有效字符白名单,优先级高于全局默认配置。
修改步骤
- 找到项目中的
ESAPI.properties文件(通常位于src/main/resources目录下) - 查找或新增
Encoder.ValidHTMLCharacters配置行,将&添加到字符列表中 - 示例配置:
Encoder.ValidHTMLCharacters=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 ,.-_*@#$%^&+=|\/<>()
注意事项
- 修改后需重启应用使配置生效
- 全局默认配置
Encoder.DefaultListOfValidCharacters会被Encoder.ValidHTMLCharacters覆盖,针对HTML编码场景优先使用后者 - 保留
&可能存在XSS风险,因为&是HTML实体的起始标记,需确保业务场景不会引入注入漏洞
内容的提问来源于stack exchange,提问作者Saptarshi
相关产品推荐
相关产品推荐

