WordPress 博客默认的登陆链接地址为(http://example.com/wp-login.php),为保证安全,可以修改WordPress登陆文件名wp-login.php后缀,防密码被暴力破解。
方法:
一、修改在网站根目录下的wp-login.php文件名为wp-denglu.php(或者其他名字,以下以此为例),并将该文件wp-denglu.php中出现的字符wp-login.php全部改为wp-denglu.php;
二、查找根目录下的wp-includes/general-template.php文件,除了代码大概第238行
代码如下 | 复制代码 |
$login_url = site_url('wp-login.php', 'login'); |
不要修改,该文件其他的字符wp-login.php替换为wp-denglu.php,注意完成修改后覆盖原文件保存,这样就可以避免黑客知道你的登陆地址!
8.27日更新:经过测试,在最新的WordPress3.6 中可以实现。
插件法:可以安装安全插件 Limit Login Attempts, 安装并启用该插件后不需要做其他特别设置。当连续登陆失败,插件会临时屏蔽登陆 IP 地址。
代码法
不想用插件的话,直接将下面的代码复制到当前主题的 functions.php 文件中:
代码如下 | 复制代码 |
//保护后台登录 function login_protection(){ |
这样只有打开 http://siteurl/wp-login.php?word=fuck,才会打开登录页,否则就会自动跳转到 http://www.111cn.net/
但是博主这样做之后,邮箱里还是每天都收到很多登录失败的提醒邮件,于是采取了一个更加简单粗暴的方法:修改wp-login.php文件名
比如将wp-login.php修改成gimhoy-login.php,同时还要打开这个文件,将里面所有的wp-login.php替换成gimhoy-login.php。这样登录地址便成了http://siteurl/gimhoy-login.php.跟前面那个方法结合起来,就成了http://siteurl/gimhoy-login.php?word=fuck.
方法三 代码法
打开wordpress根目录找到wp-login.php文件用编辑器打开在55行左右找到如下代码
代码如下 | 复制代码 |
if ( $shake_error_codes && $wp_error->get_error_code() && in_array( $wp_error->get_error_code(), $shake_error_codes ) ) add_action( 'login_head', 'wp_shake_js', 12 ); 在其代码之下加上一段代码 if($_GET["qq"]!="1032106247"){ header('Location:/404 '); } |
方法四RewriteRule
1.首先给wp-admin目录改名,比如我改成shunix,然后在.htaccess里加上如下内容:
代码如下 | 复制代码 |
RewriteEngine On RewriteBase / RewriteCond %{REQUEST_URI} wp-admin/ RewriteCond %{QUERY_STRING} ! |
这里来个复杂字符串(数字英文横杠下划线组成)
代码如下 | 复制代码 |
RewriteRule .*.php [F,L] RewriteCond %{QUERY_STRING} ! 与上面的那个密码相同 RewriteRule ^shunix/(.*) wp-admin/$1?%{QUERY_STRING}& |
与上面的那个密码相同
这个.htaccess实现了URL的重写,禁止访问wp-admin下的所有.php文件,访问/shunix 的话会直接替换成/wp-admin下的对应文件。也就是说访问/shunix与访问wp-admin的结果是一样的,但是访问wp-admin则行不通。
更名完成,但是会有一些问题需要修改部分文件。因为wp-admin被禁止访问,而部分功能还直接调用wp-admin的.php文件。这导致上传功能将不能使用;自动保存,自定义字段都无法使用。
2.下面要做的就是修改几个重要文件,重新恢复这些功能:查找
wp-admin/includes/media.php
wp-includes/script-loader.php
wp-includes/link-template.php
三个文件中所有的wp-admin,换成shunix
这样edit链接与comments编辑链接将继续有效。
如果使用了wp-cache等缓存插件,一定要将你的新目录名添加到缓存过滤规则里,不然后台有的地方生成静态会很麻烦的。