具有前瞻性的AWS WAF Regexp问题
我正在使用负前瞻为AWS WAF构建一个regexp具有前瞻性的AWS WAF Regexp问题,regex,amazon-web-services,amazon-waf,Regex,Amazon Web Services,Amazon Waf,我正在使用负前瞻为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。我找到了这个博客 有没
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。我找到了这个博客
有没有人有类似的问题?您能分享一下如何修复它吗?由于不支持负面外观头部,我将我的表达式分解为几个表达式,涵盖所有情况。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/which)中的可选斜杠?!(安仁)
没有前瞻性<代码>e是可选的,带有?
量词。你有乔(?安|珍)吗?有。我有这个乔(?!安·珍)。感谢您更正此文档。他们说引擎是PCRE,但似乎只有POSIX函数作为任意零宽度断言启用,基本上不支持所有酷特性。你确定需要一个具有负前瞻性的正则表达式吗?像这样的东西怎么样?比如像“%joe%”这样的col和不像“%joeann%”的col和不像“%joejen%”的col。
?@WiktorStribiżew WAF在任何地方都不使用SQL语法,而且它们不允许您将消极规则和积极规则结合起来。您可以匹配所有规则,也可以不匹配任何规则。