
您现在的位置是:首页 > WordPress教程WordPress教程
WordPress如何限制登录尝试次数
WP集市
2025-09-01
【WordPress教程】
1011人已围观
-
WordPress默认不限制登录尝试这事儿其实挺危险,就像把家门钥匙插在锁眼里谁都能拧两下。你得手动加个锁,装个插件或者写两行代码防暴力破解。比如用「Limit Login Attempts」这种插件,后台搜一下五分钟搞定,但今天咱聊聊代码方案,更有意思。
-
核心逻辑是盯住登录失败记录。WordPress用
wp_authenticate_user
钩子做验证,咱就在这儿埋个计数器。先检查用户是否已被锁定,再记录失败次数,超过阈值直接抛错误。下面是一段可扔进functions.php的代码:
add_filter('authenticate', 'custom_login_limit', 30, 3);
function custom_login_limit($user, $username, $password) {
$lockout_key = 'login_attempts_' . $_SERVER['REMOTE_ADDR'];
$attempts = get_transient($lockout_key) ?: 0;
if ($attempts > 3) {
return new WP_Error('too_many_attempts', '锁了哈,等15分钟再试');
}
if (is_wp_error($user)) {
$attempts++;
set_transient($lockout_key, $attempts, 15 * MINUTE_IN_SECONDS);
} else {
delete_transient($lockout_key);
}
return $user;
}
-
这段代码用
transient
功能存尝试次数,每个IP单独计算。失败超过3次就锁定15分钟——当然你可以改成更狠的,比如用$_SERVER['HTTP_X_FORWARDED_FOR']
抓真实IP,或者结合用户名一起锁。不过要小心别把自己锁外边,测试时记得开俩浏览器。 -
进阶玩法能加失败日志记录,或者像银行那样输错密码就弹图片验证码。但核心思路就三点:计数、判断、拦截。WordPress的灵活性就在这儿,你用插件还是写代码都能达到类似效果。不过代码方案更轻量,不会拖慢网站速度。
-
最后提醒个坑:别光锁IP地址,万一用户用动态IP就可能被误伤。可以搭配登录名一起判断,比如用
$username
和IP生成联合密钥。要是真追求极致安全,建议还是用专业安全插件,它们自带人机验证和威胁情报库,比手动写的更周全。
Tags:
文章版权声明:除非注明,否则均为WP集市原创文章,转载或复制请以超链接形式并注明出处。
上一篇:WordPress如何添加验证码
