尝试在 ESAPI.properties 的正则表达式中包含(0 到 9 之间的任何数值),但它会抛出错误,因为不是有效的正则表达式

问题描述 投票:0回答:1

ESAPI.properties
HTTPParameterValue
中定义的正则表达式值如下所示:

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 AB123456”时,此

\\0
被视为特殊字符并从给定的正则表达式抛出无效输入错误。但当我使用 esapi 2.2.0.0 jar 时,同样工作正常。此问题仅出现在 2.4.0.0 的最新 esapi jar 中。

在控制台中出现以下错误:

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
,但不起作用。如何解决这个错误。

最新的 esapi jar 中是否包含任何验证或我错过了任何依赖项?

java regex esapi
1个回答
0
投票

对我来说,这些看起来像是自定义正则表达式。

您提到这适用于版本 2.2.0.0,但在 2.4.0.0 中失败,但是对于这 2 个属性,只有 Validator.HTTPParameterValue 发生了变化,并且其变化很小:

对于 2.2.0.0: Validator.HTTPParameterValue=^[\p{L}\p{N}.\-/+=_ !$*?@]{0,1000}$

对于 2.4.0.0: Validator.HTTPParameterValue=^[-\p{L}\p{N}./+=_ !$*?@]{0,1000}$

换句话说,唯一的变化是参数名称中允许使用“-”。 (在提交中进行的更改https://github.com/ESAPI/esapi-java-legacy/commit/b7e9a55e3614d6a471ee531d4107652c5952678b.

为了以防万一,我检查了版本 2.5.4.0,这些甚至不是最新 2.5.4.0 版本的值。

另请注意,在 2.2.0.0 和 2.5.4.0(撰写本文时的当前版本)之间,Validator.HTTPParameterName 的值保持不变。

© www.soinside.com 2019 - 2024. All rights reserved.