【问题标题】:modsecurity: SecRule REQUEST_METHOD "!^OPTIONS$" "t:none"modsecurity: SecRule REQUEST_METHOD "!^OPTIONS$" "t:none"
【发布时间】:2011-10-14 20:11:15
【问题描述】:

Modsecurity 问题...

REQUEST_METHOD 测试在下面做什么?它出现了两次。

SecRule REQUEST_METHOD "!^OPTIONS$" "t:none"


SecRule &REQUEST_HEADERS:Accept "@eq 0" \
    "chain,phase:2,skip:1,t:none,deny,log,auditlog,status:400,msg:'Request Missing an Accept Header', severity:'2',id:'960015',tag:'PROTOCOL_VIOLATION/MISSING_HEADER'"
SecRule REQUEST_METHOD "!^OPTIONS$" "t:none"
SecRule REQUEST_HEADERS:Accept "^$" \
    "chain,phase:2,t:none,deny,log,auditlog,status:400,msg:'Request Missing an Accept Header', severity:'2',id:'960015',tag:'PROTOCOL_VIOLATION/MISSING_HEADER'"
SecRule REQUEST_METHOD "!^OPTIONS$" "t:none"
SecRule &REQUEST_HEADERS:User-Agent "@eq 0" \
    "skip:1,phase:2,t:none,deny,log,auditlog,status:400,msg:'Request Missing a User Agent Header',id:'960009',tag:'PROTOCOL_VIOLATION/MISSING_HEADER',severity:'4'"
SecRule REQUEST_HEADERS:User-Agent "^$" \
    "t:none,deny,log,auditlog,status:400,msg:'Request Missing a User Agent Header',id:'960009',tag:'PROTOCOL_VIOLATION/MISSING_HEADER',severity:'4'"
SecMarker 969999

请不要解释整个事情,我可以阅读其他所有内容。看起来REQUEST_METHOD 测试不过是某种巫术......

顺便说一句,Accept 的测试是错误的。根据 HTTPAccept 选项不是强制性的。

【问题讨论】:

  • 今天在阅读文档时,我了解到 REQUEST_HEADERS 等名称前的 & 字符用于获取集合中的计数。仍然想知道似乎是链条一部分的选项。

标签: apache http


【解决方案1】:

虽然规则 SecRule REQUEST_METHOD "!^OPTIONS$" "t:none" 出现了两次,但每次都与另一个规则链接在一起。

Chain 是 ModSecurity 中的一种操作,它将两个或多个规则组合成一个规则。

现在是第一条规则:

SecRule &REQUEST_HEADERS:Accept "@eq 0" \
   "chain,phase:2,skip:1,t:none,deny,log,auditlog,status:400,msg:'Request Missing an Accept Header', severity:'2',id:'960015',tag:'PROTOCOL_VIOLATION/MISSING_HEADER'"
SecRule REQUEST_METHOD "!^OPTIONS$" "t:none"

第二条规则现在是:

SecRule REQUEST_HEADERS:Accept "^$" \
    "chain,phase:2,t:none,deny,log,auditlog,status:400,msg:'Request Missing an Accept Header', severity:'2',id:'960015',tag:'PROTOCOL_VIOLATION/MISSING_HEADER'"
SecRule REQUEST_METHOD "!^OPTIONS$" "t:none"

【讨论】:

  • 哦!我懂了!这意味着如果你没有接受也没有选择,那么繁荣,对吗?
  • 规则 1 检查缺少的请求标头,但规则 2 正在检查空的请求标头接受,即接受标头存在但它没有价值。这两条规则做同样的事情,但在不同的上下文中。
猜你喜欢
  • 1970-01-01
  • 2011-11-29
  • 2010-11-09
  • 1970-01-01
  • 1970-01-01
  • 2022-06-21
  • 1970-01-01
  • 1970-01-01
  • 2010-09-29
相关资源
最近更新 更多