问题描述
我需要一个规则来阻止对 wp-login.PHP 的所有 POST 请求,
但是我需要检查引用域是否等于请求的域名
我们需要检查这些东西:
#Block WP logins with no referring URL
<Locationmatch "/wp-login.PHP">
Secrule REQUEST_METHOD "POST" "deny,status:401,id:5000130,chain,msg:'wp-login request blocked,no referer'"
Secrule &HTTP_REFERER "@eq 0"
</Locationmatch>
在这种情况下,我可以完全检查访问者并确保他是人类 感谢您的帮助
解决方法
我不确定我是否理解您的问题,但这条链式规则可能会对您有所帮助:
SecRule &REQUEST_HEADERS:Referer "!@eq 0" \
"id:5000130,\
phase:1,\
t:none,\
deny,\
status:401,\
chain,\
msg:'wp-login request blocked,no referer'"
SecRule REQUEST_URI "@beginsWith /wp-login.php" \
"chain"
SecRule REQUEST_METHOD "@streq POST" \
"chain"
SecRule REQUEST_HEADERS:Host "@rx .*" \
"capture,\
chain"
SecRule REQUEST_HEADERS:Referer "@streq %{TX.0}"
请记住:
- 此链式规则仅在设置了
Referer
标头时才有效 -
Host
标头也必须存在
可能您需要另一个链式规则,它检查 Referer
标头是否存在,如果 URI 是 /wp-login
,但我认为基于上述规则您可以生成它。