ESAPI 2.4.0.0正则无法匹配\0转义字符问题求助
问题:ESAPI 2.4.0.0及以上版本中NULL字符(\0)触发参数验证失败
背景配置
在ESAPI.properties中配置了以下参数验证正则:
Validator.HTTPParameterName=^\[\u0080-\uFFFFa-zA-Z0-9.,;?!:%'\\p{L}$\\-"\<\>\~\\[\\]\`\\^#&()\\n\\t\\r\*/+=@\_}{|\\\\ \\]\*$ Validator.HTTPParameterValue=^\[\u0080-\uFFFFa-zA-Z0-9.,;?!:%'\\p{L}$\\-"\<\>\~\\[\\]\`\\^#&()\\n\\t\\r\*/+=@\_}{|\\\\ \\]\*$
问题现象
当输入值为"3Y....1000.....24\0AB123456"时,其中的\0(NULL字符)被判定为特殊字符,触发验证错误。但该场景在ESAPI 2.2.0.0版本下可正常运行,仅在2.4.0.0及以上新版本出现此问题。
控制台报错信息
WARNING [IntrusionDetector] [SECURITY FAILURE Anonymous:null@unknown -> /IntrusionDetector] Invalid input: context=HTTP parameter name: transactionId, type(HTTPParameterValue) [input=**3Y....1000.....24AB123456**: org.owasp.esapi.errors.ValidationException: HTTP parameter name: transactionId: Invalid input. ]Please conform to regex
已尝试的无效方案
- 使用
/\b([0-9]|10)\b /正则模式 - 使用
\d正则模式
以上调整均未解决问题。
求助内容
- 如何修改配置或代码,解决该NULL字符的验证错误?
- ESAPI 2.4.0.0及以上版本是否新增了验证规则,或是存在依赖缺失导致的问题?
内容的提问来源于stack exchange,提问作者Monisha
相关产品推荐
相关产品推荐

