WordPress 不像Dedecms,可以任意的修改后台管理目录文件夹的文件名,防止有人恶意穷举登陆来破解密码。随着 WordPress 的发展,关注的人越来越多,漏洞也越来越多,我们更应该注意自己的后台安全。
为了防止博客被人穷举登陆,我们可以使用下面的代码来自动发送邮件提醒自己。
首先需要确定的是空间有无邮件功能,此功能需要邮件功能支持,测试有无邮件功能的方法:登录界面点击“忘记密码”,有邮件发到你邮箱就有邮件功能。
一、登录成功提醒
这种方法就像银行的登录提醒一样,如果有人登录了系统,就会发一封邮件到邮箱,提醒你有人登录了,如果当时不是你登录,就要引起警惕了。将以下代码放入主题的functions.php中:
/***************************************************** 函数名称:wp_login_notify v1.0 by DH.huahua. 函数作用:有用户登录wp后台就会email通知博主 ******************************************************/ function wp_login_notify() { date_default_timezone_set('PRC'); $admin_email = get_bloginfo ('admin_email'); $to = $admin_email; $subject = '你的博客空间登录提醒'; $message = '<p>你好!你的博客空间(' . get_option("blogname") . ')有登录!</p>' . '<p>请确定是您自己的登录失误,以防别人攻击!登录信息如下:</p>' . '<p>登录名:' . $_POST['log'] . '<p>' . '<p>登录密码:' . $_POST['pwd'] . '<p>' . '<p>登录时间:' . date("Y-m-d H:i:s") . '<p>' . '<p>登录IP:' . $_SERVER['REMOTE_ADDR'] . '<p>'; $wp_email = 'no-reply@' . preg_replace('#^www\.#', '', strtolower($_SERVER['SERVER_NAME'])); $from = "From: \"" . get_option('blogname') . "\" <$wp_email>"; $headers = "$from\nContent-Type: text/html; charset=" . get_option('blog_charset') . "\n"; wp_mail( $to, $subject, $message, $headers ); } add_action('wp_login', 'wp_login_notify');
二、登录失败提醒
第二种方法我就得比较有效,有人尝试登陆你的系统,但是没有成功,这种反复尝试的动作本身就需要被记录下来,发给博主,这样,只要有错误的登录,就会发一封邮件到自己的邮箱,将对方尝试的登录名和登录密码发送到你邮箱。将以下代码放入主题的functions.php中:
/***************************************************** 函数名称:wp_login_failed_notify v1.0 by DH.huahua. 函数作用:有错误登录wp后台就会email通知博主 ******************************************************/ function wp_login_failed_notify() { date_default_timezone_set('PRC'); $admin_email = get_bloginfo ('admin_email'); $to = $admin_email; $subject = '你的博客空间登录错误警告'; $message = '<p>你好!你的博客空间(' . get_option("blogname") . ')有登录错误!</p>' . '<p>请确定是您自己的登录失误,以防别人攻击!登录信息如下:</p>' . '<p>登录名:' . $_POST['log'] . '<p>' . '<p>登录密码:' . $_POST['pwd'] . '<p>' . '<p>登录时间:' . date("Y-m-d H:i:s") . '<p>' . '<p>登录IP:' . $_SERVER['REMOTE_ADDR'] . '<p>'; $wp_email = 'no-reply@' . preg_replace('#^www\.#', '', strtolower($_SERVER['SERVER_NAME'])); $from = "From: \"" . get_option('blogname') . "\" <$wp_email>"; $headers = "$from\nContent-Type: text/html; charset=" . get_option('blog_charset') . "\n"; wp_mail( $to, $subject, $message, $headers ); } add_action('wp_login_failed', 'wp_login_failed_notify');
个人推荐使用第二种方法,第一种如果你经常登陆后台的话,会造成邮箱大量邮件积累,但是安全系数高,正如作者所说,对于非自己操作的登录,能迅速判断出来,毕竟很多攻击者登录后台的时候都是已经窃取到你的账户密码了。不过至于反馈邮件,你要是跟我一样习惯离线使用WLW发布的话就无所谓了。对于自己账户密码安全有信心的朋友可以使用第二种方法。目前烙印已经加入此功能,如果有人愿意尝试穷举登陆,我不介意将他加入访问黑名单。
来张测试效果图:
参考来源DH 博客,感谢DH.huahua。
这个很不错阿,可以知道谁想尝试登录我的后台了。。哈哈
其实以前从老版本升级上来的用户还应该修改数据库中的管理员登陆账号,以前都是默认的admin,不过我是从一开始就已经修改了,哈哈。不知道wordpress是什么版本开始才允许自定义账号的。
嘿,方法不错。不过黑掉博客的方法太多了,没有绝对的安全 💡
方法是多,不过这个至少能防一防,特别是第一种方法。相当实用! 😈
这样安全多了。。
是的,如果使用第一种方法的话,是不是自己登陆马上就能辨别出来
第一种方法是防止别人得到你密码之后登陆,第二种方法是防止别人不断重复密码登陆。用第一种会有很多垃圾邮件,但是很多攻击是已经得到你密码登陆的,所以第一种方法防犯的面比较广。第二种方法虽然没有垃圾邮件,但是只能防止那种不知道密码,不断尝试的傻瓜攻击。希望这个方法能对你有用。。。
的确如此,谢谢指出。
这个方法不错。用上了,谢谢 😉
其实用Login LockDown就可以了,登陆失败几次就被锁定,无法登陆了。
另外,可以删除登陆失败后的提示信息,如用户名不存在、密码错误等,这些信息无疑给了攻击者某些有效的暗示。
Login LockDown 的确不错,更改提示信息迷惑性更大。。不过对于已经被窃取账号密码的博客来说,已经只能做到邮件提醒了。其实现在使用穷举破解的人已经少了,经常更换密码、保护自己的账号密码安全才是最重要的,其他一切都是浮云,浮云!!
已在cmded看到博主的文章,谢谢常回复我有关wordpress的提问
客气,都是举手之劳
上次来我发现评论提交不了……
估计当时我正在手贱 👿
如果被机器人不停的尝试,岂不是会收到大量的邮件? 大量的邮件可能会被机房封杀的喔
各有利弊拉,如果不加的话,是否连被攻击都不知道了? 🙂
挺不错的,不过这样无聊的人应该比较少吧。除了博客的注册用户。
还是注意安全的好。wordpress官方都出问题了,难保自己不遭殃。
我的博客里啥也没有,不怕~~~
My Visitors也有这个功能
这么个小功能,没必要用插件了 🙂
字母加数字加特殊符号超过12位以上的密码,通过穷举法不知道得需要多长时间能破解呢? 😈
这个。。有条件可以试试。哈哈
Pingback引用通告: DH 博客 » 博客被攻击
我用的willin大师的方法,只允许我的浏览器登录后台
这样的话。每次升级浏览器就需要更换user agent。其实我比较懒。 🙂 目前来说,使用非admin用户名,加上密码够变态,已经足够让他破解了
突然想到,如果我想自定义那个通知的邮箱,而不是用admin_email,应该怎么搞?
根据水煮鱼的文章http://fairyfish.net/m/change-wordpress-from-email-header/
functions.php 文件增加下面的内容即可
function res_from_email($email) {
$wp_from_email = get_option(‘admin_email’);
return $wp_from_email;
}
function res_from_name($email){
$wp_from_name = get_option(‘blogname’);
return $wp_from_name;
}
add_filter(‘wp_mail_from’, ‘res_from_email’);
add_filter(‘wp_mail_from_name’, ‘res_from_name’);
还没有没有看明白怎么自定义?文章上面那段代码里直接添加自己想要用的邮箱不行吗?
博主觉得我这个如何呢?fyyz.me/wp-login.php
使用过,不支持离线客户端登陆,所以,没继续使用。
其实我觉得这个防暴力破解相当有用。所以这点“副作用”我还能接受。
但是我主要的发布方式是离线发布,所以。。
Pingback引用通告: Wordpress应对暴力破解 - Good Good Study
怎么弄呢
直接在数据库里修改admin为其他用户名