2016-07-27 95 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

謝謝!它運作良好。 –