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

创建ModSecurity 930110排除规则时如何识别REQUEST_BODY内的附件

ModSecurity CRS 3.0.2 930110规则精细化排除配置问题

基础背景

  • 当前环境使用ModSecurity CRS 3.0.2,需对规则ID为930110做自定义排除配置
  • 930110规则原生能力:拦截请求中携带../、..\等路径遍历攻击特征的内容
  • 当前存在的误报:用户携带文件附件提交请求时,请求体内容经常命中该规则特征触发误拦截,需要在不降低整体防护强度的前提下规避这类误判

粗粒度全局排除方案

可通过全局配置直接移除930110对请求体的检测,配置语句为:
SecRuleUpdateTargetById 930110 "!REQUEST_BODY"

但该方案粒度过粗,会让930110完全放弃对请求体内容的路径遍历检测,存在防护缺口。

精细化控制目标

希望实现两类可接受的控制效果:

  • 优先目标:仅排除REQUEST_BODY中属于文件附件的内容,对请求体内的普通表单字段保持930110的正常检测能力
  • 退而求其次目标:识别REQUEST_BODY是否携带文件附件,仅在检测到附件的请求场景下,临时移除930110对REQUEST_BODY的检测,无附件的普通请求保持全量检测

已验证的配置效果对比

  • 尝试的无效配置:观察到附件上传的请求体中必然包含filename特征字符串,因此编写规则匹配该特征后触发排除逻辑,对应配置为:
    SecRule REQUEST_BODY "@contains filename" "id:1001,phase:1,pass,nolog, ctl:ruleRemoveTargetById=930110;REQUEST_BODY"
    
    实际运行时该配置完全不生效,无法触发930110的规则排除
  • 可正常生效的参考配置:基于请求URI匹配的排除逻辑可正常运行,比如匹配请求路径前缀为/process时触发REQUEST_BODY检测排除的配置,可正常执行规则移除逻辑,对应配置为:
    SecRule REQUEST_URI "@beginsWith /process" "id:1001,phase:1,pass,nolog, ctl:ruleRemoveTargetById=930110;REQUEST_BODY"
    

待解决问题

如何配置才能实现前述的精细化检测控制需求?

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.26 22:06:04