1

我正在使用内置的 esapi 验证器。定义如下:

Validator.SafeString=^[.\\p{Alnum}\\p{Space}]{0,1024}$

我对正则表达式不是很熟悉,经过阅读,我知道这个表达式匹配字母数字和空格。

我想将此表达式扩展为包括 *、-()&+ 和 /。我尝试执行以下操作,但似乎不起作用

Validator.SafeString=^[.\\p{Alnum}\\p{Space}*,-()&+]{0,1024}$
4

2 回答 2

2

您必须将连字符放在末尾,因为如果您不这样做,连字符将用作范围而不是单个字符:

Validator.SafeString=^[.\\p{Alnum}\\p{Space}*,()&+-]{0,1024}$
                                                  ^--- here

更新:以下avgvstvs评论:

从 1.7 到更高版本,您必须在正则表达式的开头添加标志 (?u) 才能使 \w\s 工作。

你也可以试试:

Validator.SafeString=(?u)^[.\\w\\s*,()&+-]{0,1024}$
于 2015-03-23T18:34:03.260 回答
1

我会在validation.properties 中创建一个单独的条目,OWASP 的目的SafeString是为任何应用程序提供有保证的安全字符串。通过接受可以在 Javascript 中解释为代码的字符,您不再拥有SafeStringAPI 所期望的字符。如果您的应用程序的其他部分SafeString按原计划使用,这可能会产生灾难性的后果。

使用@Fede 的第一个正则表达式,但像这样处理它:

Validator.SomethingElse=^[.\\p{Alnum}\\p{Space}*,()&+-]{0,1024}$

并这样称呼它:

ESAPI.validator().isValidInput(CONTEXT, input, "SomethingElse", MAX_FIELD_LENGTH, true);

请注意,“true”标记对应于字符串是否可以null

于 2015-03-24T14:40:49.297 回答