考虑以下从 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 通常没有意义。一个 RESPONSE_HEADER 我可以看到更多用途,但它同样是只读的,并且更改您需要使用标准 mod_headers 模块:
虽然老实说不确定如何或是否将重定向作为 ModSecurity 操作起作用,或者是否立即发生。