[英]AWS WAF Regexp issue with lookahead
我正在使用负前瞻为 AWS WAF 构建正则表达式。
joe(?!(ann|jen))
但是,我从 WAF 控制台返回了以下错误
WAFInvalidParameterException: Error reason: The parameter contains formatting that is not valid., field: REGEX_PATTERN_SET, parameter: joe(?!(ann|jen))
似乎 AWS WAF 不支持这种正则表达式。 我发现这个博客https://aws.amazon.com/about-aws/whats-new/2017/10/aws-waf-now-supports-regular-expressions-regex/
有没有人有类似的问题? 你能分享一下如何解决吗?
由于不支持否定前瞻,我将我的表达分解为涵盖所有情况的几个表达式。 WAF 允许您指定多个表达式。 它使用逻辑 OR 匹配,因此只有其中之一必须匹配。 使用问题中的示例,解决方案可能是...
joe[^aj]
joea[^n]
joean[^n]
joej[^e]
joeje[^n]
joe
匹配,除非他后跟a
或j
。 然后他很可疑,所以我们继续下一个规则。 如果a
后跟n
,我们仍然怀疑,所以我们继续下一个规则。 我们重复这个过程,直到我们决定整个词是joeann
还是joejen
我的特定用例是 URI 匹配。 我想限制对整个目录的请求,除了一个子目录(及其所有子目录)。
假设我们想限制/my/dir
但不想限制/my/dir/safe
任何内容。 我们会这样做...
^/my/dir/?$
^/my/dir/[^s]
^/my/dir/s[^a]
^/my/dir/sa[^f]
^/my/dir/saf[^e]
^/my/dir/safe[^/]
我们遵循相同的过程来依次识别每个字母。
“你不能以 S 开头。好吧,你可以以 S 开头,但你不能也有 A。好吧,我让它滑,但你不能也有 F。好吧,你的执着, 但...”
请注意,我们必须为尾部斜杠/
包含一条规则。 这包括/my/dir/safe/
的可选斜杠和所有子目录,例如/my/dir/safe/whatever
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.