我将一个标签列入白名单,我很好奇是否有办法将其列入白名单并同时保持记录。
SecRuleUpdateTargetByTag "OWASP_CRS/WEB_ATTACK/SQL_INJECTION" !ARGS:/^fallout/
像这样的东西会起作用吗?
SecRuleUpdateTargetByTag "OWASP_CRS/WEB_ATTACK/SQL_INJECTION", "log","allow" !ARGS:/^fallout/
我将一个标签列入白名单,我很好奇是否有办法将其列入白名单并同时保持记录。
SecRuleUpdateTargetByTag "OWASP_CRS/WEB_ATTACK/SQL_INJECTION" !ARGS:/^fallout/
像这样的东西会起作用吗?
SecRuleUpdateTargetByTag "OWASP_CRS/WEB_ATTACK/SQL_INJECTION", "log","allow" !ARGS:/^fallout/
不,这仅用于更新规则所针对的目标。
有一个 SecRuleUpdateActionById 命令,它允许您使 SQL_INJECTION 规则通过而不是阻止,但不适用于您想要的特定场景(即只有 ARGS/^fallout/ 请求),而不是 ctl 等效于允许您链接此实现这个 :-(
您可以删除您的 SecRuleUpdateTargetByTag 自定义,而是将规则引擎转为仅针对以下请求进行检测:
然而,这意味着没有 phase:2 规则会阻止这些 URL,这会在您的 WAF 中留下一个巨大的漏洞。
一种可行的方法是将其添加到 modsecurity_crs_41_sql_injection_attacks.conf 文件的开头并在结尾处反转以再次将其重新打开。这将起作用,因为规则会按照它们在配置中加载的顺序进行处理。但是通常我不喜欢编辑实际的 CRS 文件,因为这会使升级变得困难(很容易覆盖这样的更新)。
或者,只需记录所有 ARGS 后果请求,然后手动检查它们是否有 SQL_INJECTION 尝试: