我正在尝试保护Wordpress安装免受登录页面上的暴力攻击(wp-login.php)。我在我网站的顶级目录中配置了.htaccess文件,如下所示:
# Wordpress START
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# Wordpress END
# Protect wp-login
<Files wp-login.php>
AuthName "Private Access"
AuthType Basic
AuthUserFile /home/passwords/.htpasswd
require valid-user
</Files>
我遇到的问题是,此更改导致密码提示出现在我网站的每个页面上,几乎就像忽略了Files标记一样。我觉得我必须遗漏一些东西,但我无法弄清楚到底是什么。非常感谢任何帮助,非常感谢!
编辑:在使用下面的Sumurai8进行操作后,我尝试使用密码保护wp-admin而不是wp-login.php。我发现Wordpress插件“Wordfence”在我的网站的所有页面上都会出现一些问题,我猜是因为它试图加载一个位于wp-admin目录中的admin-ajax.php文件。
这就是我的wp-admin目录中的.htaccess文件现在看起来像什么,而且它看起来工作得很好我认为:
AuthType Basic
AuthName "Protected Area"
AuthUserFile /home/passwords/.htpasswd
AuthGroupFile /dev/null
Require valid-user
# This is the whitelisting of the ajax handler
<Files "admin-ajax.php">
Order allow,deny
Allow from all
Satisfy any
</Files>
<Files "*.css" >
Order allow,deny
Allow from all
Satisfy any
</Files>
再次感谢sumurai8!
答案 0 :(得分:1)
根据this tutorial,您需要保护wp-admin文件夹,而不是wp-login.php文件。您可以通过在wp-admin文件夹中创建.htaccess
文件,然后将以下代码添加到其中来执行此操作:
AuthName "Private Access"
AuthType Basic
AuthUserFile /home/passwords/.htpasswd
require valid-user
为了提高安全性,您可能希望仅将其限制为ip。如果使用require
执行此操作,请记住使用<RequireAll>
块,否则它将满足任何require
指令,而不是块中包含的所有指令。另外还要注意:一些示例包括使用<Limit>
块将其限制为某些协议。由于对无效协议的处理不当,这会对某些设置造成安全风险,因此不应该使用。