我正在为AWS WAF构建一个regexp,它使用的是负的前瞻性。
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不支持这种regexp。我找到了这个博客https://aws.amazon.com/about-aws/whats-new/2017/10/aws-waf-now-supports-regular-expressions-regex/
有没有人有类似的问题?你能告诉我怎么修吗?
发布于 2020-08-26 20:02:01
由于否定的外观是不支持的,我把我的观点分解成几个涵盖所有情况的表达式。WAF允许您指定多个表达式。它使用逻辑或匹配,因此只有其中一个必须匹配。使用问题中的例子,解决方案可能是..。
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 )中的可选斜杠。
https://stackoverflow.com/questions/59783687
复制相似问题