WordPress模板插件定制

您现在的位置是:首页 > WordPress教程WordPress教程

WordPress如何限制登录尝试次数

查看 WP集市 的更多文章WP集市 2025-09-01 【WordPress教程】 1011人已围观

  1. WordPress默认不限制登录尝试这事儿其实挺危险,就像把家门钥匙插在锁眼里谁都能拧两下。你得手动加个锁,装个插件或者写两行代码防暴力破解。比如用「Limit Login Attempts」这种插件,后台搜一下五分钟搞定,但今天咱聊聊代码方案,更有意思。

  2. 核心逻辑是盯住登录失败记录。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;
}
  1. 这段代码用transient功能存尝试次数,每个IP单独计算。失败超过3次就锁定15分钟——当然你可以改成更狠的,比如用$_SERVER['HTTP_X_FORWARDED_FOR']抓真实IP,或者结合用户名一起锁。不过要小心别把自己锁外边,测试时记得开俩浏览器。

  2. 进阶玩法能加失败日志记录,或者像银行那样输错密码就弹图片验证码。但核心思路就三点:计数、判断、拦截。WordPress的灵活性就在这儿,你用插件还是写代码都能达到类似效果。不过代码方案更轻量,不会拖慢网站速度。

  3. 最后提醒个坑:别光锁IP地址,万一用户用动态IP就可能被误伤。可以搭配登录名一起判断,比如用$username和IP生成联合密钥。要是真追求极致安全,建议还是用专业安全插件,它们自带人机验证和威胁情报库,比手动写的更周全。

Tags:

WordPress模板插件定制

WP集市

V管理员
文章 280 篇 | 评论 0 次
最新文章

热门文章

热评文章