Mod-Security
Modsecurity : 從 SecRule 創建新的請求標頭
考慮以下從 Lua 腳本啟動的重定向 SecRule
SecRule &TX:SQLI "@eq 1" "id:'129793',phase:2,t:none,redirect:http://www.example.com/failed.html,msg:'SQLi Injection Payload Found',setvar:REQUEST_HEADERS:Blocked"
當變數
tx.sqli
被賦予一個值時,規則被啟動。重定向成功,但規則嘗試創建新的“已阻止”請求標頭。然而,創作並不成功。調試器中的日誌輸出以下內容:
Could not set variable "REQUEST_HEADERS.Blocked" as the collection does not exist.
這顯然是不正確的。Modsecurity 如何創建新的請求標頭?
在 ModSecurity 中,大多數標準集合(包括 REQUEST_HEADERS)都是只讀的。因此,您將設置一個變數而不是 REQUEST_HEADER。
設置 REQUEST_HEADER 通常沒有意義。A RESPONSE_HEADER 我可以看到更多用途,但它同樣是只讀的,並且更改您需要使用標準 mod_headers 模組:
#Use ModSecurity to set an env variable SecRule &TX:SQLI "@eq 1" "id:'129793',phase:2,set-env:BLOCK_RESPONSE" #Use mod_header to set Header based on that env variable Header set Blocked "True" env=BLOCK_RESPONSE
雖然老實說不確定如何或是否將重定向作為 ModSecurity 操作起作用,或者是否立即發生。