modsecurity不包含自定义REDQUEST_HEADER_NAMES

尝试构build一个规则,以使任何不包含头X-CFKey的入站stream量与特定的X-CFKey相匹配。

我已经成功的testing了X-CFKey的modsecurity,但是在标题丢失的时候失败了。 我正在尝试使用!@contains来testing标题存在的不足。 我能够让@contains通过可预见的通过!@contains匹配的一切。

SecRule REQUEST_HEADERS_NAMES "!@contains x-cfkey" \ "id:52,log,deny,status:403,t:lowercase,msg:'Does not contain header X-CFKey'"

我在这里错过了什么,为什么! 变得如此不可预测?

想象一下,你已经解决或解决了这个问题,但刚刚发现这个想法我会回答,以防您或其他人想知道的情况。

它遍历每个名​​称,并且每个名称不包含匹配的x-cfkey。 困惑双重否定呢? 🙂

编写规则的正确方法是这样的:

 SecRule &REQUEST_HEADERS_NAMES:x-cfkey "@eq 0" \ "id:52,log,deny,status:403,t:lowercase,msg:'Does not contain header X-CFKey'" 

在这里查看类似的检查Cookie: https : //github.com/SpiderLabs/ModSecurity/wiki/Reference-Manual#REQUEST_COOKIES_NAMES