modsecurity 的 paranoia_level = 3 禁止在第 2 阶段使用 owasp crs 版本 3.3.4 的规则 920272 使用 POST 有效负载(application/x-www-form-urlencoded)上传不可打印字符
但有时,它也会触发 UTF-8 编码的密码。
首次尝试停用规则 920272 有效:
SecRule REQUEST_URI "/login" \
id:2001,\
phase:2,\
pass,\
nolog,\
ctl:RuleRemoveById=920272"
但它会停用通过 POST 上传的所有字段的保护。
目标:仅为 2 个 POST 参数停用 920272:
- 密码
- 隐藏密码
事情变得复杂了:
SecRule REQUEST_URI "/login" \
id:2001,\
phase:2,\
pass,\
nolog,\
ctl:RuleRemoveById=920272;ARGS:password"
也可以。
但是参数“hidden-password”包含连字符。我尝试了几次才屏蔽掉连字符,但都没有成功。
我努力了:
ctl:RuleRemoveById=920272;ARGS:hidden-password"
ctl:RuleRemoveById=920272;ARGS:hidden\-password"
ctl:RuleRemoveById=920272;ARGS:'hidden-password'"
ctl:RuleRemoveById=920272;ARGS:^/hidden-password/"
ctl:RuleRemoveById=920272;ARGS:^/hidden\-password/$"
可能还有其他一些……
我收到的错误是:
"Not a number: password"
或者"Expecting an action, got: \-password"
或者"Expecting an action, got: 'hidden-password'"
或者与上述某条消息类似。
根据https://github.com/SpiderLabs/ModSecurity/wiki/Reference-Manual-%28v2.x%29#user-content-ARGS 参数名称可以是正则表达式。好的。尝试了几个(见上文)但失败了。
你知道为什么吗 ?