我正在使用内置的 esapi 验证器。定义如下:
Validator.SafeString=^[.\\p{Alnum}\\p{Space}]{0,1024}$
我对正则表达式不是很熟悉,经过阅读,我知道这个表达式匹配字母数字和空格。
我想将此表达式扩展为包括 *、-()&+ 和 /。我尝试执行以下操作,但似乎不起作用
Validator.SafeString=^[.\\p{Alnum}\\p{Space}*,-()&+]{0,1024}$
您必须将连字符放在末尾,因为如果您不这样做,连字符将用作范围而不是单个字符:
Validator.SafeString=^[.\\p{Alnum}\\p{Space}*,()&+-]{0,1024}$
^--- here
更新:以下avgvstvs评论:
从 1.7 到更高版本,您必须在正则表达式的开头添加标志 (?u) 才能使 \w\s 工作。
你也可以试试:
Validator.SafeString=(?u)^[.\\w\\s*,()&+-]{0,1024}$
我会在validation.properties 中创建一个单独的条目,OWASP 的目的SafeString
是为任何应用程序提供有保证的安全字符串。通过接受可以在 Javascript 中解释为代码的字符,您不再拥有SafeString
API 所期望的字符。如果您的应用程序的其他部分SafeString
按原计划使用,这可能会产生灾难性的后果。
使用@Fede 的第一个正则表达式,但像这样处理它:
Validator.SomethingElse=^[.\\p{Alnum}\\p{Space}*,()&+-]{0,1024}$
并这样称呼它:
ESAPI.validator().isValidInput(CONTEXT, input, "SomethingElse", MAX_FIELD_LENGTH, true);
请注意,“true”标记对应于字符串是否可以null
。