wpmoney.ru wordpress WP Money

Как сделать защиту от bruteforce атак в WordPress с помощью кода

Bruteforce атаки — одна из самых распространённых угроз для сайтов на WordPress. Злоумышленники пытаются подобрать пароль к админке, используя автоматические скрипты, что может привести к взлому сайта, потере данных и проблемам с производительностью. В этой статье мы рассмотрим, как реализовать простую, но эффективную защиту от bruteforce атак с помощью пользовательского кода без установки дополнительных плагинов.

Почему важно защитить WordPress от bruteforce атак

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

  • получить доступ к административной панели;
  • установить вредоносный код;
  • использовать сайт для рассылки спама;
  • повлиять на SEO-показатели сайта;
  • привести к полной потере контроля над сайтом.

Поэтому защита от bruteforce — неотъемлемая часть безопасности WordPress.

Ключевые методы защиты от bruteforce атак

Существует несколько способов повысить уровень безопасности входа на сайт:

  • Ограничение количества попыток входа с одного IP;
  • Реализация задержек после неудачных попыток;
  • Использование двухфакторной аутентификации;
  • Блокировка IP на уровне сервера;
  • Переименование или скрытие стандартной страницы входа.

В этой статье мы сосредоточимся на реализации ограничения количества попыток с помощью кода.

Как реализовать ограничение попыток входа с помощью кода

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

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

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

function wpmoney_track_failed_login( $username ) {
    $ip = $_SERVER['REMOTE_ADDR'];
    $transient_key = 'wpmoney_failed_login_' . $ip;
    $count = (int) get_transient( $transient_key );
    $count++;
    set_transient( $transient_key, $count, HOUR_IN_SECONDS );
}
add_action( 'wp_login_failed', 'wpmoney_track_failed_login' );

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

Теперь при попытке входа проверим количество неудачных попыток и при превышении лимита — заблокируем вход с сообщением об ошибке.

function wpmoney_limit_login_attempts() {
    if ( ! empty( $_POST['log'] ) && ! empty( $_POST['pwd'] ) ) {
        $ip = $_SERVER['REMOTE_ADDR'];
        $transient_key = 'wpmoney_failed_login_' . $ip;
        $count = (int) get_transient( $transient_key );
        $max_attempts = 5; // Максимум попыток
        if ( $count >= $max_attempts ) {
            wp_die( 'Вы превысили максимальное количество попыток входа. Попробуйте позже.' );
        }
    }
}
add_action( 'login_form_login', 'wpmoney_limit_login_attempts' );

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

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

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

Дополнительные рекомендации по усилению защиты

Использование плагинов для безопасности

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

Двухфакторная аутентификация

Для максимальной безопасности рекомендуется добавить двухфакторную аутентификацию. Это можно сделать с помощью плагинов, например, WPGPT – хотя он и заточен под AI, в экосистеме WordPress существует множество специализированных решений для 2FA.

Смена URL страницы входа

Стандартный URL входа /wp-login.php легко найти и атаковать. Рекомендуется использовать плагин, чтобы изменить URL страницы входа — это значительно усложнит задачу злоумышленникам.

Как проверить работу защиты от bruteforce

После внедрения кода протестируйте защиту:

  • Попробуйте ввести неправильный пароль 5 раз с одного IP — должно появиться сообщение о блокировке;
  • Попробуйте войти с правильным паролем — счетчик должен сброситься;
  • Проверьте, что блокировка снимается через час (или другой период, установленный в transient).

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

Заключение

Реализация защиты от bruteforce атак в WordPress с помощью собственного кода — простой и эффективный способ повысить безопасность сайта без установки лишних плагинов. В сочетании с другими мерами — двухфакторной аутентификацией, сменой URL входа и использованием проверенных плагинов, таких как Clearfy Pro — вы получите надежную защиту от большинства атак.

×

AI-плагин от WPShop.ru

анализирует конкурентов

пишет статьи

готовит SEO

генерирует изображения

и еще кое-что...
WPGPT
Плагин, который наполняет ваш сайт WordPress
Узнать больше