WordPress模板插件定制

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

WordPress暴力破解防护

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

  1. WordPress这玩意儿用的人多,坏蛋们也爱盯着搞。暴力破解就是他们最懒但最烦人的一招——像拿一万把钥匙瞎试你家门锁。别慌,咱一步步把门焊死。

  2. 先明白坏蛋咋动手:他们用脚本疯狂试「用户名+密码」组合,尤其盯着adminwp-admin这些常见登录入口。WordPress默认登录页是/wp-login.php,简直在喊“来打我呀”。

  3. 第一层盾牌:改登录地址。把默认路径变成秘密通道,脚本就懵了。用代码实现的话,扔这段到主题的functions.php里:

// 重命名wp-login.php的访问路径
function custom_login_url() {
    return site_url('my-secret-entrance'); // 改成你想要的路径
}
add_filter('login_url', 'custom_login_url');

// 屏蔽直接访问wp-login.php
function redirect_login_page() {
    $login_page  = home_url('/my-secret-entrance/');
    $page_viewed = basename($_SERVER['REQUEST_URI']);

    if ($page_viewed == "wp-login.php" && $_SERVER['REQUEST_METHOD'] == 'GET') {
        wp_redirect($login_page);
        exit();
    }
}
add_action('init', 'redirect_login_page');
  1. 第二招:限制登录尝试。默认WordPress不限制失败次数,这不行。装个插件像Limit Login Attempts,或者手搓代码:
// 记录登录失败次数并锁定
function track_failed_logins($username) {
    $failed_logins = get_option('failed_logins', array());
    $ip = $_SERVER['REMOTE_ADDR'];

    if (empty($failed_logins[$ip])) {
        $failed_logins[$ip] = 0;
    }

    $failed_logins[$ip]++;

    if ($failed_logins[$ip] > 3) { // 3次失败就锁定
        wp_die('锁了,等半小时再试吧');
    }

    update_option('failed_logins', $failed_logins);
}
add_action('wp_login_failed', 'track_failed_logins');
  1. 第三块盾:双因子认证(2FA)。密码对了还得手机验证据说能挡99%暴力破解。装插件像Google Authenticator或者Wordfence都行,代码实现略复杂但原理是登录时插个验证钩子:
// 简化的2FA检查示例(实际需配合API)
function check_2fa($user, $password) {
    if (!empty($_POST['2fa_code'])) {
        $stored_code = get_user_meta($user->ID, '2fa_secret', true);
        if ($_POST['2fa_code'] != $stored_code) {
            wp_die('二次验证码错了');
        }
    }
}
add_action('wp_authenticate_user', 'check_2fa', 10, 2);
  1. 隐藏用户名:别用admin当用户名,改掉现有管理员显示名。数据库里跑条SQL改掉user_login字段(备份先!):
UPDATE wp_users SET user_login = 'new_username' WHERE user_login = 'admin';
  1. 用CAPTCHA验证码折磨机器谷歌的reCAPTCHA免费又好用,插件一堆或者代码贴到登录页:
// 在登录表单加CAPTCHA
function add_captcha_to_login() {
    echo '<div class="19ab-cbc2-3ff4-249b g-recaptcha" data-sitekey="你的站点密钥"></div>';
}
add_action('login_form', 'add_captcha_to_login');

// 验证CAPTCHA
function verify_captcha($user, $password) {
    if (isset($_POST['g-recaptcha-response'])) {
        $response = wp_remote_post('https://www.google.com/recaptcha/api/siteverify', array(
            'body' => array(
                'secret'   => '你的密钥',
                'response' => $_POST['g-recaptcha-response']
            )
        ));

        $result = json_decode($response['body'], true);
        if (!$result['success']) {
            wp_die('验证码没通过,你是机器人吗?');
        }
    }
}
add_action('wp_authenticate_user', 'verify_captcha', 10, 2);
  1. 最后,服务器层面防护:用.htaccess封禁连续失败的IP。比如5分钟内失败5次就拉黑:
# 在.htaccess里加这段
<Limit POST>
Order Deny,Allow
Deny from 192.168.1.100 # 手动封IP示例
</Limit>

# 或用Fail2Ban工具动态封禁(需服务器权限)
  1. 日常习惯:用强密码别用password123,插件及时更新,定期查日志看谁在瞎试。安全是个过程不是一劳永逸——但以上组合拳打完,脚本小子基本就去祸害别人了。

(完)

Tags:

WordPress模板插件定制

WP集市

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