我正在尝试在触发 Apache/ModSecurity 规则时显示自定义错误页面。我的计划如下:
- 将所有规则的状态代码更改为(例如)501
- 使用
ErrorDocument
指令显示此代码的自定义错误页面 - 在错误页面中使用 php 记录应用程序级别的错误,显示自定义消息等。
到目前为止我已经尝试过:
SecRuleUpdateActionById 1-999999 "phase:2,status:501"
和
SecDefaultAction "deny,log,redirect:http://some.url/"
我尝试了之前和之后的版本,modsecurity.conf
包括 CRS 规则,以及.htaccess
。
不起作用——仍然总是出现 403 错误。
答案1
您是否尝试过将两者结合起来?:
SecDefaultAction "phase:1,log,auditlog,deny,status:503"
SecDefaultAction "phase:2,log,auditlog,deny,status:503"
请注意,您可以像上面一样对每个阶段执行不同的默认操作。
还要注意,一些规则集(例如 OWASP CRS)也设置了这些默认操作,并且如果使用异常评分或立即阻止,Kay 也需要以某种方式进行设置。
答案2
我找到了一种使用 mod_security 自定义错误页面或消息的方法。您需要做的是在 waf.conf 文件中使用 ProxyPass 文件!
ProxyPass /403.html !
ProxyPass /500.html !
这样我就可以在 Apache 的 webroot 中放置一个自定义的 403 或 500 文件,这样当 mod_security 想要显示错误时,它会显示自定义错误消息。