ModSecurity CRS的核心价值在于将SQL注入和XSS攻击拆解为可识别、可配置、可拦截的细粒度规则,依托多层检测、上下文判断与异常评分机制协同工作;其真正起效依赖请求体可解析、规则引擎启用拦截动作及执行阶段正确。

ModSecurity CRS 的核心价值,在于它把 SQL 注入和 XSS 这两类最常见、危害最大的 Web 攻击,拆解成可识别、可配置、可拦截的细粒度规则。它不依赖单条“万能正则”,而是靠多层检测+上下文判断+异常评分机制协同工作。真正起效的关键,不是装上规则,而是让规则能读到数据、能做出动作、能适配业务。
SQL 注入识别:不止是关键词匹配
CRS 对 SQLi 的检测不是简单搜 union select 或 or 1=1。它分四类逻辑层层递进:
- 语法结构识别:检测 SQL 关键字(SELECT、INSERT、UPDATE)、操作符(=、!=、AND、OR)、括号嵌套、分号结尾等基础语法特征
- 函数与行为特征:专门捕获 sleep()、benchmark()、pg_sleep() 等用于时间盲注的函数;也识别 load_file()、concat()、group_concat() 等常用于数据提取的函数
- 编码与绕过手法:覆盖 URL 编码、双写绕过(select)、大小写混用(SeLeCt)、空格替换(/**/、%09)、注释干扰(–+、#)等常见变形
- LibInjection 深度分析:规则 942100 调用 libinjection 库,对参数内容做语义建模,能识别无关键字但具备 SQL 结构的混淆载荷,比如 base64 解码后为恶意 SQL 的情况
XSS 识别:从反射到存储再到 DOM 型
CRS 的 XSS 防护覆盖 OWASP 定义的三类主流 XSS 场景,重点在请求入口处截断:
- 反射型 XSS:扫描 ARGS、REQUEST_HEADERS(如 User-Agent、Referer)、REQUEST_COOKIES 中是否含 <script></script>、javascript:、onerror=、eval( 等典型标签、事件处理器或 JS 执行函数
- DOM 型 XSS 辅助识别:虽不能直接检测前端 JS 执行,但会拦截包含 document.write、innerHTML=、location.href= 等高危字符串的输入,阻断恶意载荷进入 DOM 渲染链路
- 编码逃逸检测:识别 HTML 实体编码(<script>)、JS Unicode 编码(\u003cscript\u003e)、URL 编码(%3Cscript%3E)及多层混合编码,防止绕过基础过滤</script>
- 上下文感知:部分规则区分 HTML 标签内、属性值中、JS 字符串内等不同上下文,避免在非执行位置误报
真正拦截的三个硬性前提
即使规则文件完整加载,若以下任一条件未满足,攻击请求仍会放行:
- 请求体必须可解析:Nginx 必须启用 SecRequestBodyAccess On;Apache 默认开启,但需确认 SecRequestBodyLimit 和 SecRequestBodyNoFilesLimit 足够大,否则大 POST 或 JSON 请求体被截断,ARGS 变为空
- 规则引擎必须启用拦截动作:CRS v3.3+ 默认为 SecRuleEngine DetectionOnly,仅记录不阻断。必须显式设为 On,且每条关键规则末尾带 deny,status:403(或通过异常评分兜底规则统一处理)
- 执行阶段必须正确:SQLi/XSS 规则大多位于 phase:2(请求体解析后),若错误写成 phase:1(请求头解析阶段),则无法访问 ARGS、REQUEST_BODY 等变量,规则永远不触发
调优建议:降低误报,守住底线
开箱即用的 CRS 在真实业务中常因误报影响功能。建议按节奏调整:
- 上线前先运行 DetectionOnly 模式 3–7 天,收集日志,用 modsec-analyzer 或自定义脚本统计高频误报规则 ID
- 优先调整 Paranoia Level:PL1 是默认平衡点;PL2 增加盲注、编码绕过等规则;PL3/4 更激进,适合高安全场景,但需配套更多白名单
- 对已知安全接口(如富文本编辑器提交、API 文件上传)添加精准白名单,例如:
SecRule REQUEST_URI "@streq /api/v1/content" "id:1001,phase:1,pass,nolog,ctl:ruleRemoveById=942100;942160" - 禁用不适用规则要谨慎:比如禁用 942100(libinjection)会大幅削弱 SQLi 检测能力,不如用 ctl:ruleRemoveTargetById 局部排除某参数










