如何构建安全的 WordPress 3:限制登录次数,防止暴力破解

如何防止 WordPress 被暴力破解

现在大部分用户防止 WordPress 用户密码被暴力破解方法是使用一个叫做 Limit Login Attempts 的插件,该插件可以限制登录次数,账号被错误登录次数上了上限之后,用户名或者 IP 就会被限制。

但是 Limit Login Attempts 这个插件把登录尝试错误记录都存在 Options(选项)里面,这样的处理并不是最佳选择,首先可能效率可能会存在一些问题,另外也会填充太多的数据到 Options 表中。

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

使用 Memcached 限制登录次数

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

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 );

再次登录的时候,我们检测一下访问者对应的 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 );

登录失败打到上限次数之后的界面如下图所示:

640

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

add_filter('shake_error_codes'function ($error_codes){	$error_codes[]	= 'too_many_retries';	return $error_codes;});

最后还是那句话,任何站点,安全是最重要的,攻击者可以说无所不在,如果用户名被攻击者获知了,一定要限制登录次数,防止暴力破解。

WPJAM 用户管理插件 已经集上面所有的功能和相关代码,直接启用即可,点击查看 WPJAM 用户管理插件的详细介绍,Modular 主题也集成了。

我会在介绍 WordPress 安全这系列文章的时候,将这些安全相关代码也整合到 Modular 主题中,争取打造最安全的 WordPress 企业主题。

本文内容来源于公开网络,出于传递信息之目的整理发布。原文版权归原作者所有,若涉及侵权请先提供版权后联系我们删除

(0)
WP之家WP之家
上一篇 2025年3月13日 下午5:42
下一篇 2025年3月13日 下午8:04

相关推荐

  • 您对本网站的访问已被网站所有者限制

    Wordfence是一个安全插件,安装在超过300万个WordPress网站上。这个网站的所有者正在使用Wordfence来管理对他们网站的访问。您也可以阅读文档了解Wordfence的屏蔽工具,或访问w

    WP教程 2025年3月13日
  • 如何通过MySQL数据库添加WordPress新用户

    WordPress的设计目标为您提供了灵活性,但执行任务的最有效方式是通过仪表盘执行此操作。您可以在此处获得安装的几乎所有方面,通常通过直观的图形用户界面(GUI)为您提供帮助。但有时,使用仪表盘可能不是最好的方法。例

    2025年3月13日
  • 如何为WordPress配置SendGrid以发送电子邮件

    在排除WordPress不发送电子邮件的故障时,这有时会有点棘手。为什么?因为许多托管的WordPress主机不提供传统的电子邮件托管。SendGrid是另一个流行的交易电子邮件服务提供商。事务性电子邮件的一些示例包括新用户注册电子邮件、密码重置电子邮件、WooCommerce订单通知等。基本上,网站功能或任何与营销无关的内容所需的基本电子邮件。这意味着您通常可以起床走动,而不必担心电

    2025年3月13日
  • 初学者如何搭建一个网站(2022建站入门指南)

    掌握创建新网站的艺术可能会让人不知所措。您必须同时考虑文案、设计和功能。此外,您需要确保它针对搜索引擎进行了优化,以便您的客户可以找到它。即使是最有经验的营销人员有时也很难知道从哪里开始。不要误以为需要成为网站设计师或开发人员才能搭建一个网站。有许多工具在您无编写任何代码能力下也能够帮助您快速建站。这就是为什么我们将本指南放在一起,重点介绍

    2025年3月13日
  • 古腾堡编辑器教程:如何使用WordPress分隔符区块

    您在网站上安排和显示内容的方式会显着影响您的参与度和转化率。为了增强用户体验(UX)并使您的页面和文章更易于使用,拆分大块文本是一个明智的主意。有多种方法可以做到这一点,但最简单的选择是使用WordPress分隔符区块。在这篇文章中,我们将向您介绍

    2025年3月13日
  • 如何使用Namecheap添加A记录

    Namecheap是ICANN认可的注册商,已经发布了超过500万个域,并且是WordPress用户中非常受欢迎的选择,因为他们提供廉价的WordPress托管,拥有出色的客户服务,并保持着强烈的反SOPA立场。自2001年以来,他们一直在帮助人们在网上获得自己

    2025年3月13日
  • 如何通过电子邮件发布WordPress文章

    如果您想在WordPress网站上发布一些内容,但没有时间或不想花时间进入网站,该怎么办?很简单!用电子邮件写一篇博文,然后发送到您的网站。WordPress会帮您发布!通过电子邮件发送博文意味着您可以随时随地发布博文,而无需登录您的网站。您只需访问

    2025年3月13日
  • Wordpress开启CDN静态文件加速以及简单配置

    目前越来越多的网站开始使用CDN进行网站静态文件加速了,开启CDN不仅能够加速打开速度,而且还能减少网站的带宽流量消耗,虽然目前免费的CDN加速比较少,但是相对于传统的带宽流量,CDN流量计费也会优惠不少。对于…

    2025年3月13日