You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NGINX ModSecurity WAF误判SQL注入攻击的配置优化咨询

解决ModSecurity误拦截合法西里尔文请求的配置方案

问题根源

本次误拦截是因为libinjection驱动的SQL注入检测规则,将URL编码后的西里尔文(如%u041e对应俄文字母О)误识别为攻击特征(日志中提到匹配到sos),而非实际存在SQL注入行为。

可行配置方案

方案1:针对特定参数添加规则例外

直接对触发误拦截的BoxOrgName参数,禁用对应的SQL注入检测规则。在ModSecurity配置文件(如modsecurity.conf或单独的规则文件)中添加以下规则:

SecRule ARGS:BoxOrgName "@rx ^.*$" \
    "phase:2,nolog,pass,ctl:ruleRemoveById=942100,ctl:ruleRemoveById=942200"
  • 说明:942100是libinjection SQL检测的核心规则ID,942200是关联的辅助规则;若日志中显示的拦截规则ID不同,替换为实际ID即可。
  • 优势:精准只放行目标参数,不影响其他请求的防护。

方案2:针对西里尔文编码特征跳过检测

针对包含西里尔文Unicode转义(%u04xx格式,西里尔文Unicode范围为U+0400至U+04FF)的请求,跳过SQL注入检测:

SecRule ARGS:BoxOrgName "@rx %u04[0-9A-Fa-f]{2}" \
    "phase:2,nolog,pass,ctl:ruleRemoveById=942100"
  • 说明:该规则仅当参数中出现西里尔文编码时才跳过检测,比方案1更精准,避免无差别放行参数内容。

方案3:更新OWASP核心规则集(CRS)

若使用的是OWASP Core Rule Set,新版本(如3.3.2及以上)已优化了非ASCII字符的检测逻辑,减少对西里尔文等非拉丁字符的误判。直接更新CRS到最新版本即可缓解此类问题。

注意事项

  • 禁止全局禁用SQL注入检测规则,避免大幅降低WAF防护能力;
  • 修改配置后需重启NGINX生效,同时测试合法请求是否正常通过,持续监控WAF日志确认防护有效性;
  • 若后续仍有其他参数出现类似误拦截,可参照方案1/2的逻辑添加对应例外规则。

内容的提问来源于stack exchange,提问作者Marat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 18:05:03