2016-07-27 93 views
1

如果整个网站的mod_security设置为ON,有没有办法将特定页面设置为detection_only?将mod_security设置为仅针对特定页面进行检测?

用例是应用程序用于配置网站,并且使用CSS或js非常普遍,但很可能会使modsecurity引发XSS规则异常。我想检测这些例外,但不会阻止它们,只在这些页面上。但是,在所有其他页面上,我想要规则异常来阻止。

更多细节:应用程序实际上是在另一台Windows服务器上运行的IIS应用程序,而mod_security在Apache服务器上运行。 haproxy将传入的请求指向apache,并且apache通过modsecurity接受请求;如果它通过,它将反向代理回haproxy,然后将它传递给IIS。

== incoming request ==> haproxy ==> apache 
             v 
            mod_security 
             v 
     IIS machine <== haproxy <== mod_proxy 

(是的,有使用HAProxy的一个很好的理由。我们有数百个HTTPS证书的,我们可以在一个充斥其中的文件夹指向HAProxy的,它会选择一个正确的基础上,SNI HTTPS请求。还没有发现任何可以做到的事情。)

因此,在apache方面没有一个.htaccess文件有意义的目录,至少对于我的小脑袋来说。

路径被视为DetectionOnly将匹配主机admin.mysite.com^/site/[a-zA-Z0-9-]+/Settings$

回答

2

像这样的东西应该工作的路径(未经测试):

SecRule REQUEST_HEADERS:Host "@streq admin.mysite.com" "phase:1,id:1234,chain" 
    SecRule REQUEST_URI "^/site/[a-zA-Z0-9-]+/Settings$" "ctl:ruleEngine=DetectionOnly" 

之前任何其他人只需添加该规则,使确定id是唯一的(我用1234作为例子)。

规则引擎将为下一个请求重置,因为ctl更改仅针对此请求。

+0

谢谢!它运作良好。 –