【问题标题】:ESAPI validation is not accepting a particular regExESAPI 验证不接受特定的正则表达式
【发布时间】: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说没有属性。

标签: regex owasp esapi


【解决方案1】:

很好的解决方案 - 需要给出 2 个反斜杠来转义 []- 字符。

所以使用了这个正则表达式,它工作正常

  Validator.SqBrackText=^[0-9a-zA-Z \\[\\]\\-]{1,1024}$

感谢所有的帮助!

【讨论】:

    猜你喜欢
    • 2021-12-23
    • 1970-01-01
    • 2023-03-24
    • 2021-03-04
    • 2016-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多