WordPress 安全第三步:限制登录次数,防止暴力破解

WordPress 的一个重大的安全隐患就是 WordPress 没有防止暴力破解的功能,在登录界面,用户可以不停的登录尝试输入账号密码,直到暴力破解,如果密码不够复杂,破解的人如果被使用软件扫描的话,那么很快就会被破解的。

如何防止 WordPress 用户密码被暴力破解

现在常用的方法是有一个叫做 Limit Login Attempts 的插件,它可以限制登录次数,这个插件把登录尝试错误记录都存在 Options 里面,这样的处理效率可能会存在一些问题。

如果服务器安装了 Memcached 的话,我们可以把失败的尝试记录存到 Memcached 里面,通过内存缓存去优化登录次数限制功能。

使用内存缓存优化登录次数限制功能

广告

侠客剑影

进入小游戏

进入小游戏

当用户登录失败的时候,以 IP 作为 key,失败登录次数 +1 作为值,存到内存里面。

add_action('wp_login_failed', function($username){

$key = wpjam_get_ip();

$times = wp_cache_get($key, 'wpjam_login_limit');

$times = $times ?: 0;

wp_cache_set($key, $times+1, 'wpjam_login_limit', MINUTE_IN_SECONDS*15);

});

再次登录的时候,我们检测一下访问者对应的 IP 的失败次数,如果是大于 5 次,就直接报错不能访问了。

add_filter('authenticate', function($user, $username, $password){

$key = wpjam_get_ip();

$times = wp_cache_get($key, 'wpjam_login_limit');

$times = $times ?: 0;

if($times > 5){

remove_filter('authenticate', 'wp_authenticate_username_password', 20, 3);

remove_filter('authenticate', 'wp_authenticate_email_password', 20, 3);

return new WP_Error('too_many_retries', '你已尝试多次失败登录,请15分钟后重试!');

}

return $user;

}, 1, 3 );

登录失败之后的界面如下图所示:

最后附上一点小功能,登录多次失败报错的时候登录框也支持摇头的功能。

add_filter('shake_error_codes', function ($error_codes) {

$error_codes[] = 'too_many_retries';

return $error_codes;

});

安全是最重要的,防止用户名暴露是 WordPress 最重要的一步,所以一定要重视。

WPJAM 用户管理插件已经集成了使用内存缓存优化登录次数限制功能,直接启用即可,点击阅读原文查看 WPJAM 用户管理插件的详细介绍。

未经允许不得转载:万道一(网站被天天篡改) » WordPress 安全第三步:限制登录次数,防止暴力破解
莫要搞事情哦
你喜欢的人刚好也未喜欢你
张学友刘德华邓紫琪已关注
赞(0) 打赏

赏点小费吧客倌

微信扫一扫打赏