Как создать двойную форму входа в WordPress для повышения безопасности

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

Что такое двойная форма входа и зачем она нужна

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

Пример использования двойной формы входа — разделение ввода логина и пароля на два отдельных шага, где после ввода логина сервер проверяет его существование, и только затем предлагает ввести пароль. Это позволяет отсеивать несуществующие логины и уменьшить нагрузку на сервер.

Еще один вариант — запрос дополнительного кода или капчи после успешного ввода логина, что дополнительно снижает риск взлома.

Как реализовать двойную форму входа в WordPress: пошаговое руководство

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

Шаг 1. Создаем промежуточную страницу для ввода логина

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

<?php
/*
Template Name: WPLogin Double Step 1
*/

if ($_SERVER['REQUEST_METHOD'] === 'POST' && !empty($_POST['wplogin_username'])) {
    $username = sanitize_user($_POST['wplogin_username']);
    if (username_exists($username)) {
        // Сохраняем имя пользователя в сессии и переходим к вводу пароля
        session_start();
        $_SESSION['wplogin_username'] = $username;
        wp_redirect(site_url('/wp-login-step2'));
        exit;
    } else {
        $error = 'Пользователь не найден';
    }
}
get_header();
?>
<form method="post">
    <label for="wplogin_username">Введите логин:</label>
    <input type="text" name="wplogin_username" id="wplogin_username" required>
    <button type="submit">Далее</button>
    <?php if (!empty($error)) echo '<p style="color:red;">' . esc_html($error) . '</p>'; ?>
</form>
<?php get_footer(); ?>

Этот шаблон можно привязать к странице в админке. Он собирает имя пользователя и проверяет его наличие.

Шаг 2. Страница ввода пароля с проверкой сессии

Создаем второй шаблон, где будет вводиться пароль, и выполняться аутентификация.

<?php
/*
Template Name: WPLogin Double Step 2
*/
session_start();

if (empty($_SESSION['wplogin_username'])) {
    wp_redirect(site_url('/wp-login-step1'));
    exit;
}

if ($_SERVER['REQUEST_METHOD'] === 'POST' && !empty($_POST['wplogin_password'])) {
    $username = $_SESSION['wplogin_username'];
    $password = $_POST['wplogin_password'];

    $creds = array(
        'user_login'    => $username,
        'user_password' => $password,
        'remember'      => true
    );
    $user = wp_signon($creds, false);
    if (is_wp_error($user)) {
        $error = 'Неверный пароль';
    } else {
        // Успешный вход
        unset($_SESSION['wplogin_username']);
        wp_redirect(admin_url());
        exit;
    }
}
get_header();
?>
<form method="post">
    <label>Пользователь: <?php echo esc_html($_SESSION['wplogin_username']); ?></label><br>
    <label for="wplogin_password">Введите пароль:</label>
    <input type="password" name="wplogin_password" id="wplogin_password" required>
    <button type="submit">Войти</button>
    <?php if (!empty($error)) echo '<p style="color:red;">' . esc_html($error) . '</p>'; ?>
</form>
<?php get_footer(); ?>

Этот скрипт проверяет пароль и авторизует пользователя. Если пароль неверен, выводит ошибку. Если нет сохраненного логина в сессии — возвращает обратно на первый шаг.

Улучшение безопасности: подключаем капчу и ограничение попыток

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

Для интеграции Google reCAPTCHA достаточно зарегистрировать сайт в консоли Google и добавить следующий код в форму:

<div class="g-recaptcha" data-sitekey="ВАШ_КЛЮЧ"></div>
<script src="https://www.google.com/recaptcha/api.js" async defer></script>

После этого проверить ответ через серверный запрос в PHP перед авторизацией.

Пример плагина для двойной формы входа

Если вы хотите упростить задачу, обратите внимание на плагин WPGPT, который позволяет создавать кастомные формы входа, включая многошаговые варианты. Его API дает гибкость для настройки и интеграции с другими системами безопасности.

Выводы и рекомендации

Двойная форма входа — это эффективный способ повысить безопасность WordPress-сайта без значительных затрат и сложной настройки. Такой подход особенно полезен для сайтов с повышенными требованиями к защите или для пользователей, желающих добавить дополнительный уровень контроля.

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

Как защитить WordPress от взлома и автоматических атак
07.11.2025
Как создать свой плагин для изменения формы входа в WordPress
03.12.2025
Как добавить защиту reCAPTCHA на страницу входа в WordPress
23.01.2026
Как запретить автоматический вход в WordPress через cookie
07.02.2026
Как добавить логины через соцсети в WordPress
26.02.2026

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