![如何使用 RegEx 实现 mod_security](https://linux22.com/image/560788/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%20RegEx%20%E5%AE%9E%E7%8E%B0%20mod_security.png)
我在 Apache/2.2.19 (Win32) 服务器上使用 mod_security + core ruleset/2.2.1 设置了一个这样的目录/站点
/website1/login.php
/website2/login.php
/website3/login.php
/websiteN/login.php
在我的 modsecurity_crs_10_config.conf 中我有
setvar:'tx.brute_force_protected_urls=login.php'
问题是,除非我输入每个 login.php 页面的完整路径,否则它不会工作,如下所示:
setvar:'tx.brute_force_protected_urls=/website1/login.php /website2/login.php andSoOn'
我曾尝试使用 RegEx 的其他方法来解决该问题(例如 /(.*)/login.php),但似乎无法解决。
所以,问题基本上是;如何在服务器上所有名为 login.php 的页面上强制执行 BFP?
谢谢。
答案1
尝试这个:
setvar:'tx.brute_force_protected_urls=/login.php'
如果它不起作用,我建议您启用调试来查看日志的内容。
答案2
我让它工作了。在“modsecurity_crs_11_brute_force.conf”中,我必须更改第 39 行:
SecRule REQUEST_FILENAME "!@within %{tx.brute_force_protected_urls}" ...
到
SecRule REQUEST_FILENAME "!@contains %{tx.brute_force_protected_urls}" ...
在‘modsecurity_crs_10_config.conf’中有:
setvar:'tx.brute_force_protected_urls=/login.php' ...
谢谢您的帮助。