Как добавить многофакторную авторизацию в WordPress для защиты входа

Почему многофакторная авторизация важна для WordPress

Многофакторная авторизация (MFA) — это дополнительный уровень защиты при входе в систему, который требует не только пароль, но и второй фактор, например, одноразовый код из приложения аутентификации или SMS. Для WordPress, учитывая его популярность и высокую вероятность атак, MFA значительно снижает риск взлома аккаунтов, даже если пароль скомпрометирован.

Внедрение MFA помогает защитить администраторские и пользовательские учетные записи от фишинга, перебора паролей и других видов атак. Это особенно актуально для сайтов с несколькими пользователями, интернет-магазинов и порталов с чувствительной информацией.

В этой статье мы рассмотрим, как добавить многофакторную авторизацию в WordPress с помощью готовых плагинов и как создать собственное решение с использованием кода.

Популярные плагины для многофакторной авторизации в WordPress

1. Wordfence Login Security

Wordfence — известный плагин для безопасности WordPress, который также поддерживает MFA через приложения Google Authenticator и Authy. Плагин прост в настройке и интегрируется с существующими учетными записями.

Основные возможности:

  • Поддержка TOTP (Time-Based One-Time Password) — генерирует коды в приложениях аутентификации.
  • Уведомления о попытках входа.
  • Возможность отключения MFA для конкретных пользователей.

2. Two Factor Authentication

Это легкий и бесплатный плагин, который добавляет MFA с минимальными настройками. Поддерживает несколько методов, включая приложения аутентификации, email, и аппаратные ключи.

Преимущества:

  • Легко настраивается через панель администратора.
  • Поддержка ролей для обязательного включения MFA.
  • Совместимость с WooCommerce и другими популярными плагинами.

3. miniOrange 2 Factor Authentication

Более продвинутый плагин с широким выбором методов MFA, включая push-уведомления и биометрию. Подходит для крупных сайтов и корпоративных решений.

Особенности:

  • Поддержка SMS, email, приложения Google Authenticator и другие.
  • Гибкая настройка политик безопасности.
  • Возможность интеграции с LDAP и SAML.

Как вручную добавить многофакторную авторизацию в WordPress с помощью кода

Если вы хотите создать кастомное решение без использования плагинов, можно добавить MFA с помощью фильтров и хуков WordPress, а также сторонних библиотек для генерации кодов TOTP.

Ниже приведен пример базовой реализации MFA с использованием Google Authenticator.

Шаг 1. Установка библиотеки PHPGangsta/GoogleAuthenticator

Для работы с TOTP используем библиотеку PHPGangsta/GoogleAuthenticator. Установите ее через Composer в корне вашего сайта:

composer require phpgangsta/googleauthenticator

Если Composer не используется, скачайте библиотеку вручную и подключите в functions.php.

Шаг 2. Генерация секретного ключа и отображение QR-кода

Добавим в профиль пользователя поле с секретом Google Authenticator и отобразим QR-код для сканирования в приложении.

function wplogin_add_mfa_field($user) {
    require_once __DIR__ . '/vendor/autoload.php';
    $ga = new PHPGangsta_GoogleAuthenticator();

    $secret = get_user_meta($user->ID, 'wplogin_ga_secret', true);
    if (empty($secret)) {
        $secret = $ga->createSecret();
        update_user_meta($user->ID, 'wplogin_ga_secret', $secret);
    }

    $qrCodeUrl = $ga->getQRCodeGoogleUrl('wplogin.ru (' . $user->user_login . ')', $secret);
    echo '<h3>Настройка многофакторной авторизации</h3>';
    echo '<p>Отсканируйте QR-код в приложении Google Authenticator:</p>';
    echo '<img src="' . esc_attr($qrCodeUrl) . '" alt="QR code">';
}
add_action('show_user_profile', 'wplogin_add_mfa_field');
add_action('edit_user_profile', 'wplogin_add_mfa_field');

Шаг 3. Проверка кода при входе пользователя

Добавим проверку одноразового кода при попытке авторизации.

function wplogin_verify_mfa_code($user, $username, $password) {
    if (empty($username) || empty($password)) {
        return null; // пропускаем проверку
    }

    $user = get_user_by('login', $username);
    if (!$user) {
        return null; // пользователь не найден
    }

    if (!isset($_POST['wplogin_mfa_code'])) {
        // запрашиваем код, если его нет
        wp_clear_auth_cookie();
        wp_die(
            '<form method="post">'
            . '<p>Введите код из приложения Google Authenticator:</p>'
            . '<input type="text" name="wplogin_mfa_code" required />'
            . '<input type="submit" value="Проверить" />'
            . '</form>
            ', 'Дополнительная проверка');
    }

    require_once __DIR__ . '/vendor/autoload.php';
    $ga = new PHPGangsta_GoogleAuthenticator();
    $secret = get_user_meta($user->ID, 'wplogin_ga_secret', true);

    $code = sanitize_text_field($_POST['wplogin_mfa_code']);
    $checkResult = $ga->verifyCode($secret, $code, 2); // 2 - допустимый интервал в 30-секундных шагах

    if (!$checkResult) {
        wp_die('Неверный код многофакторной авторизации.');
    }

    return $user;
}
add_filter('authenticate', 'wplogin_verify_mfa_code', 30, 3);

Шаг 4. Добавление поля ввода кода на страницу входа

Чтобы пользователь мог ввести код MFA, добавим поле на форму входа.

function wplogin_add_mfa_field_to_login() {
    echo '<p><label for="wplogin_mfa_code">Код аутентификации<br/>'
         . '<input type="text" name="wplogin_mfa_code" id="wplogin_mfa_code" class="input" value="" size="20" /></label></p>';
}
add_action('login_form', 'wplogin_add_mfa_field_to_login');

Рекомендации по внедрению многофакторной авторизации на WordPress

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

  • Резервные методы доступа. Обязательно предусмотрите альтернативный способ входа, например, резервные коды или возможность отключения MFA по email, чтобы не потерять доступ к сайту.
  • Учет ролей. Можно ограничить MFA только для администраторов или редакторов, чтобы не усложнять жизнь всем пользователям.
  • Совместимость с плагинами. Проверьте, как MFA влияет на работу плагинов для кеширования или которые изменяют процесс входа.
  • Обучение пользователей. Объясните пользователям, как настроить и использовать MFA, чтобы избежать лишних вопросов и сбоев.

Заключение

Многофакторная авторизация — это эффективный способ значительно повысить безопасность вашего WordPress-сайта. Использование готовых плагинов позволяет быстро и просто добавить MFA, а кастомная реализация на основе Google Authenticator дает полный контроль и гибкость настройки.

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

Как создать автоматический отчет о входах в WordPress
19.03.2026
Как удалить или поменять wp-login.php без редиректа в WordPress
09.03.2026
Как добавить логины через соцсети в WordPress
26.02.2026
Как исправить проблему с входом в WooCommerce из-за конфликтов кеша и cookie
21.07.2026
Как исправить проблемы входа в WordPress при использовании WooCommerce
31.07.2026

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