相信很多人用wordpress都有这样的情况,如果你的密码不够强度,被人这样天天猜,迟早要被破。
当然wordpress是不会主动通知你的,我们可以在主题的Function.php文件内加入如下代码来实现这个功能(前提是你的php要配置发信模块)
当然这个功能只是起到了提示作用,最终如何限制访问来源还是需要你自己配置的。
你可以使用nginx的ua判断,或者ip判断等等信息来确认访问者身份后返回正确的信息。
/*****************************************************
函数名称: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>登录名:' . $_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');
为了最大程度的减少恶意破解,这里我用到了nginx的ua检测,如果返回正确的ua信息,那么显示我们的正确页面,如果返回的信息不对,那么只能对不起,页面不存在!
当然你也可以配置多个访问信息,例如页面包含wp-admin、phpadmin这些内容它都会检测用户登录来源,如果不对直接无信息返回,那么恶意程序的猜测就没用了。
在NGINX的配置文件的Server段内加入
#login block
# 判断访问地址
if ($request ~* "(wp-login.php|wp-admin|pma|phpmyadmin|admin|login)"){
set $theme "o";
}
# 判断浏览器UA是否包含我们的信息,正确就直接返回正常页面,不正确就直接显示404页面
if ($http_user_agent !~* "(jalena|loginua)"){
set $theme "${theme}k";
}
if ($theme = "ok") {
return 404;
}
这样之后我们需要重启nginx服务,然后你再试试吧!
如何获取UA:
文章评论
判断ua指的是?
ua判断显示的信息是什么呢?
坏人无处不在,有这招就能提防下