ESAPI升级至2.5.2后出现addHeader验证异常求助
解决方案:ESAPI 2.5.2升级后ValidationException问题
问题原因
ESAPI 2.5.2版本对HTTPHeaderValue的默认白名单验证正则比2.1版本更严格,你的输入包含两个非法内容:
- 双引号(对应输入里的
") - 换行符(输入中
3.3.3和647之间的换行)
这两个字符都不在默认正则^[a-zA-Z0-9()-=*.?;,+/:&_ ]*$允许范围内,因此触发ValidationException。
具体解决步骤
1. 修复输入内容(优先推荐)
- 移除非法字符:确保HTTP头内容不含换行符,同时去掉filename值的双引号,调整后的输入示例:
attachment;filename=CstmUpdFile-I_3.3.3647_20230822213220.ZIP - 正确编码:如果需要保留文件名特殊字符,用ESAPI编码工具对内容做HTTP头编码后再设置:
String encodedFilename = ESAPI.encoder().encodeForHttpHeader("CstmUpdFile-I_3.3.3647_20230822213220.ZIP"); String headerValue = "attachment;filename=" + encodedFilename;
2. 调整ESAPI验证规则(仅业务必须允许双引号时使用)
修改ESAPI.properties配置文件中的HTTPHeaderValue正则,加入双引号字符:
HTTPHeaderValue=^[a-zA-Z0-9()"-=*.?;,+/:&_ ]*$
注意:修改正则需谨慎,必须符合HTTP/1.1规范,避免引入注入类安全风险。
内容的提问来源于stack exchange,提问作者Sowjanya Gade
相关产品推荐
相关产品推荐

