我试图使用多种条件拒绝对wp-login.php的访问,这些条件是针对蛮力攻击而改编自Wordpress Codex的,但需要添加一个子句来检查查询字符串。
我正在改编Wordpress Codex(https://codex.wordpress.org/Brute_Force_Attacks)提供的代码。
我使用的是自定义登录表单和流程,因此希望重定向或阻止对wp-login.php的所有直接访问。但是,当我这样做时,用户电子邮件中的密码重置链接将不起作用。因此,我想到了添加OR条件来检查查询字符串中是否存在一个值,但无法使该值正常工作。
我已经阅读了htaccess手册和一些StackExchange问题,但是找不到解决方案。以下是基于这项研究的当前解决方案。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_URI} .*/(login|wp-login)\.php.*
RewriteCond %{HTTP_REFERER} !.*dev.site.com.* [OR]
RewriteCond %{QUERY_STRING} !(^|&)site=cad(&|$) [OR]
RewriteCond %{HTTP_USER_AGENT} ^$
RewriteRule (.*) http://%{REMOTE_ADDR}/$1 [R=301,L]
</ifModule>
这仍然会将密码更改链接重定向到404,但我不确定为什么。样本链接:http://dev.site.com/wp-login.php?site=cad&action=rp&key=O71L4xaXB25ljsdf902&login=uname
查询字符串“ site = cad”是查询字符串的第一部分,但是如果有必要,我可以将其放置在任何地方。
我也可以拒绝所有请求,而不是进行重定向。
感谢任何想法!