繁体   English   中英

AWS WAF Regexp 问题与前瞻

[英]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匹配,除非他后跟aj 然后他很可疑,所以我们继续下一个规则。 如果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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM