【发布时间】:2020-03-07 12:22:12
【问题描述】:
我想用字母数字字符、方括号和连字符验证输入字符串,例如[Z01-Z02],为此我将验证属性设置为
Validator.SqBrackText=^[0-9a-zA-Z \[\]\-]{1,111}$
但是 ESAPI.validator().getValidInput(context, input, "SqBrackText", maxLen, allowNull, true);
给出异常
java.lang.IllegalArgumentException: The selected type [SqBrackText] was not set via the ESAPI validation configuration
at org.owasp.esapi.reference.DefaultValidator.getValidInput(DefaultValidator.java:215)
虽然 regExTester 接受规则,但显然 ESAPI 不接受验证属性。 在同一个文件中还有其他 ESAPI 可以使用的验证属性规则。
任何人都可以建议其中可能有什么问题或遗漏。
谢谢
【问题讨论】:
-
我认为它不能解决您的问题,但让我建议您改进正则表达式:^[[0-9a-zA-Z]+-[0-9a-zA-Z]+] $
-
基本上,如果您了解上下文,最好缩小范围,以避免匹配不需要的输入。你的:regex101.com/r/pFInEd/1,我的:regex101.com/r/dr5on4/1
-
您将正则表达式分配为不是字符串,这可能是问题吗?
-
如果您使用的是字符串,您是否进行了转义?因为正则表达式有像斜线这样的罪恶。它们需要在 Java 中转义。
-
我不熟悉java如何解析属性。属性中的 ^ $ 或 {} 可能有问题。因为基本上java说没有属性。