是否有可能在第 1 阶段创建白名单规则以将所有 GET 请求列入白名单?
我的 custom_rule 文件正在运行 - 我之前测试过各种规则,但我真的不知道如何禁用 GET 请求的所有规则。
类似于:SecRule REQUEST_METHOD "GET" "phase:1,log,pass"
是否有可能在第 1 阶段创建白名单规则以将所有 GET 请求列入白名单?
我的 custom_rule 文件正在运行 - 我之前测试过各种规则,但我真的不知道如何禁用 GET 请求的所有规则。
类似于:SecRule REQUEST_METHOD "GET" "phase:1,log,pass"
通过将继续进行下一条规则。你想使用允许:
请注意,您可能也不想费心记录此规则,您应该给它一个 id(对于 ModSecurity 2.7 及更高版本是必需的):
SecRule REQUEST_METHOD "GET" "phase:1,id:1000;nolog,allow"
另请注意,允许在 DetectionOnly 模式下不起作用,因为它是一个破坏性规则,这总是让我觉得这是一种不好的处理方式。所以你必须强制规则引擎让它在那里工作。
如果有帮助,我有以下规则允许将静态内容列入白名单(需要根据您的特定环境进行调整):
#Allow any GET & HEAD requests, where no parameters passed, for static content file types
SecRule REQUEST_METHOD "^(GET|HEAD)$" "phase:1,id:'1000',chain,allow,nolog"
SecRule &ARGS "@eq 0" "chain"
SecRule REQUEST_FILENAME ".*\.(css|eot|gif|htm|html|jpeg|jpg|js|pdf|png|svg|ttf|woff|woff2)$" "t:lowercase,ctl:ruleEngine=On"
#Allow any GET & HEAD requests, where no parameters passed, for default index files (e.g. /somepage/)
#except for dynamic content urls (which start with api or application):
SecRule REQUEST_METHOD "^(GET|HEAD)$" "phase:1,id:'1001',chain,allow,nolog"
SecRule &ARGS "@eq 0" "chain"
SecRule REQUEST_URI "/$" "chain"
SecRule REQUEST_URI "!^/(api|application)" "t:lowercase,ctl:ruleEngine=On"
如果您对这些有任何疑问,请告诉我。