Как установить ограничения на число попыток входа в WordPress без сторонних плагинов

Ограничение числа попыток входа — один из эффективных способов защитить WordPress-сайт от атак грубой силы (brute force). Обычно для этого используют популярные плагины, такие как Limit Login Attempts Reloaded или WP Cerber. Однако иногда хочется обойтись без сторонних расширений, чтобы не нагружать сайт и сохранить полный контроль над процессом.

Почему важно ограничивать число попыток входа

При злоумышленных атаках боты перебирают пароли, пытаясь войти под администратором или другими пользователями. Если не ограничивать попытки, можно получить взлом сайта, потерю данных и репутационные риски. Ограничение попыток защищает от таких сценариев, блокируя IP-адреса после нескольких неудачных входов.

Реализация ограничения попыток входа в WordPress через код

Мы реализуем функционал, который будет считать неудачные попытки входа с одного IP и блокировать дальнейшие попытки на определённый период. Для этого используем transient API WordPress, чтобы хранить данные во временном кэше, и хуки, чтобы отследить процесс авторизации.

Шаг 1. Отслеживание неудачных попыток

Используем хук wp_login_failed, который срабатывает при ошибочном входе. В обработчике будем увеличивать счётчик попыток для текущего IP.

function wplogin_inc_login_attempts( $username ) {
    $ip = $_SERVER['REMOTE_ADDR'];
    $attempts = (int) get_transient( 'wplogin_login_attempts_' . $ip );
    $attempts++;
    set_transient( 'wplogin_login_attempts_' . $ip, $attempts, 15 * MINUTE_IN_SECONDS );
}
add_action( 'wp_login_failed', 'wplogin_inc_login_attempts' );

Здесь мы увеличиваем счётчик попыток для IP и сохраняем его на 15 минут.

Шаг 2. Блокировка попыток после превышения лимита

Прежде чем WordPress начнёт обработку входа, проверим, не превышено ли число попыток. Для этого используем фильтр authenticate, который позволяет прервать процесс авторизации с ошибкой.

function wplogin_block_after_limit( $user, $username, $password ) {
    $ip = $_SERVER['REMOTE_ADDR'];
    $attempts = (int) get_transient( 'wplogin_login_attempts_' . $ip );
    $max_attempts = 5; // Максимум попыток
    if ( $attempts >= $max_attempts ) {
        return new WP_Error( 'too_many_attempts', __('<strong>Ошибка:</strong> Слишком много неудачных попыток входа. Попробуйте позже.') );
    }
    return $user;
}
add_filter( 'authenticate', 'wplogin_block_after_limit', 30, 3 );

Если попыток больше или равно 5, пользователь получает ошибку и вход блокируется.

Шаг 3. Очистка счётчика при успешном входе

После успешной авторизации нужно сбросить счётчик попыток, чтобы не блокировать пользователя в будущем.

function wplogin_reset_login_attempts( $user_login, $user ) {
    $ip = $_SERVER['REMOTE_ADDR'];
    delete_transient( 'wplogin_login_attempts_' . $ip );
}
add_action( 'wp_login', 'wplogin_reset_login_attempts', 10, 2 );

Тонкости и улучшения кода

В представленном коде счётчик основан на IP-адресе, что удобно, но может создавать проблемы для пользователей с динамическими IP или при использовании прокси. В продакшн-решениях можно расширить логику, учитывая имя пользователя и хранить данные в базе для большей устойчивости.

Также можно добавить оповещения администратору при блокировке и интегрировать с такими плагинами, как Clearfy Pro, которые помогают оптимизировать безопасность сайта.

Заключение

Таким образом, без установки плагинов можно реализовать базовое ограничение по числу попыток входа для повышения безопасности WordPress. Этот способ подходит для небольших проектов, где важна легковесность и контроль над кодом. Для более продвинутых задач рекомендуются специализированные плагины.

Как установить ограничения на число попыток входа в WordPress без сторонних плагинов
28.01.2026
Как изменить метод авторизации в WordPress на токены для повышения безопасности
31.12.2025
Как изменить URL страницы входа в WordPress
13.11.2025
Как исправить проблему с циклическим редиректом при входе в WooCommerce
12.06.2026
Как удалить или изменить cookie авторизации в WordPress для решения проблем с входом
08.05.2026

wp-login.php - это страница входа в системе управления вордпресс. Если Вы хотите изменить внешний вид страницы входа - читайте здесь. Если вам нужно защитить админку - подробный мануал. Вы можете установить плагин Clearfy, в котором есть функция защиты админки и страницы входа.