当类型为 text/xml 时如何使用 mod_security 过滤 POST 数据?

当类型为 text/xml 时如何使用 mod_security 过滤 POST 数据?

我正在尝试制定一条能够匹配 POST 请求中的某些正则表达式的规则。

我迄今为止的规则如下;

SecRule REQUEST_FILENAME "form.php" \
  "id:'12345',chain,deny,status:406,log,msg:'foobar detected'"
SecRule REQUEST_METHOD "POST" chain
SecRule REQUEST_BODY "@rx (?i:(bad|words|to|be|blocked))"

规则适用于内容类型不是‘文本/xml’

我正在用 curl 测试

curl -vs http://domain.tld/form.php -d 'blocked'

但是当我设置 'Content-Type:text/xml'; 规则无法匹配; 测试

curl -vs http://domain.tld/form.php -H "Content-Type:text/xml" -d 'blocked'

如果在标头中发现内容类型“text/xml”,则有一条附加规则将 REQBODY_PROCESSOR 设置为 XML。我很想知道匹配策略如何随着不同的 REQBODY_PROCESSOR 而变化,因为很明显当 REQBODY_PROCESSOR 不是 XML 时(当省略 Content-Type 时;规则匹配)。我尝试强制其他 REQBODY_PROCESSOR 选项以使规则链正常工作,但没有成功。

相关内容