Apache mod_security下usprivacy cookie含1---触发403如何定位禁用规则
排查思路评估
你初步判断是SQL注入类规则触发拦截的方向是正确的,OWASP CRS规则对--这类SQL注释特征有严格拦截,但当前操作存在两个明显问题:
- 未定位实际触发的规则ID,盲目批量禁用规则效率极低,还可能漏过目标规则
SecRuleRemoveById配置必须放在OWASP规则加载语句的之后才会生效,放在前面会被后续加载的规则覆盖
触发拦截的规则定位方法
先开启mod_security审计日志,在Apache配置中添加:
SecAuditEngine On SecAuditLog /var/log/apache2/modsec_audit.log SecAuditLogParts ABIJDEFHZ
重启Apache后复现403错误,打开审计日志搜索id:字段即可直接得到触发拦截的规则ID,你遇到的场景大概率触发了以下未禁用的规则:
- 942100:SQL注入检测类基础规则,专门匹配
--注释特征 - 942110:SQL注入检测类规则,匹配SQL注释开头特征
- 920270:HTTP协议合规类规则,检测Cookie中的异常字符序列
- 932100:远程代码执行检测类规则,匹配连续特殊字符特征
最优修复方案
不建议全局禁用规则,仅对usprivacy cookie做针对性白名单即可,参考配置如下(将{实际触发的规则ID}替换为日志中查到的ID):
SecRule REQUEST_COOKIES:usprivacy "@contains 1---" \ "id:10001,\ phase:2,\ pass,\ nolog,\ ctl:ruleRemoveById={实际触发的规则ID}"
该配置仅对usprivacy cookie的指定内容跳过对应规则检测,不会降低全站安全防护等级。
内容的提问来源于stack exchange,提问作者marcos
相关产品推荐
相关产品推荐

