wphow.ru wordpress WPHow

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

Диагностика проблемы с регистрацией поддельных пользователей

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

  • Большое количество новых пользователей с подозрительными email (например, временные почты);
  • Пользователи с одинаковыми или похожими именами;
  • Неожиданные всплески активности регистрации;
  • Увеличение нагрузки на сервер без видимой причины.

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

SELECT ID, user_login, user_email, user_registered FROM wp_users ORDER BY user_registered DESC LIMIT 50;

Обратите внимание на подозрительные email и даты регистрации.

Пошаговое решение: удаление и блокировка поддельных регистраций

1. Удаление поддельных пользователей через код

Для удаления пользователей по определенному условию используйте следующий код. Например, удалим пользователей с email, содержащим "tempmail" (часто используется в спаме):

function delete_spam_users_by_email_part( $email_part ) {
    $args = [
        'search' => '*'.esc_attr( $email_part ).'*',
        'search_columns' => ['user_email'],
        'fields' => 'ID'
    ];
    $user_query = new WP_User_Query( $args );
    if ( ! empty( $user_query->results ) ) {
        foreach ( $user_query->results as $user_id ) {
            require_once( ABSPATH.'wp-admin/includes/user.php' );
            wp_delete_user( $user_id );
        }
    }
}
delete_spam_users_by_email_part('tempmail');

Подставьте в вызов функции часть email или имя, которые встречаются в спам-аккаунтах.

2. Блокировка регистрации поддельных пользователей

Чтобы предотвратить регистрацию спам-аккаунтов, рекомендуем реализовать несколько уровней защиты:

  • Подключить рекапчу (Google reCAPTCHA v2/v3) на форму регистрации;
  • Добавить проверку email на временные почтовые сервисы;
  • Отключить регистрацию или ограничить её по домену email;
  • Использовать фильтры для проверки данных при регистрации.

Пример фильтра для блокировки временных почтовых сервисов на этапе регистрации:

add_action( 'registration_errors', 'block_temp_email_registration', 10, 3 );
function block_temp_email_registration( $errors, $sanitized_user_login, $user_email ) {
    $temp_domains = [ 'tempmail.com', 'mailinator.com', '10minutemail.com' ];
    $email_domain = substr( strrchr( $user_email, '@' ), 1 );
    if ( in_array( $email_domain, $temp_domains, true ) ) {
        $errors->add( 'temp_email_blocked', __( 'Регистрация с временных почтовых сервисов запрещена.' ) );
    }
    return $errors;
}

3. Внедрение Google reCAPTCHA v2 на форму регистрации

Добавьте в форму регистрации поле reCAPTCHA и проверьте ответ на сервере. Пример упрощенной проверки:

function verify_recaptcha_on_registration() {
    if ( isset( $_POST['g-recaptcha-response'] ) ) {
        $response = wp_remote_post( 'https://www.google.com/recaptcha/api/siteverify', [
            'body' => [
                'secret' => 'ВАШ_SECRET_KEY',
                'response' => sanitize_text_field( $_POST['g-recaptcha-response'] ),
                'remoteip' => $_SERVER['REMOTE_ADDR']
            ]
        ] );
        $response_body = wp_remote_retrieve_body( $response );
        $result = json_decode( $response_body, true );
        if ( empty( $result['success'] ) || ! $result['success'] ) {
            wp_die( 'Ошибка проверки reCAPTCHA. Попробуйте снова.' );
        }
    } else {
        wp_die( 'Пожалуйста, подтвердите, что вы не робот.' );
    }
}
add_action( 'register_post', 'verify_recaptcha_on_registration', 10, 3 );

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

После выполнения удаления и добавления защиты:

  • Перейдите в «Пользователи» в админке, проверьте, что спам-аккаунты удалены;
  • Попробуйте зарегистрироваться с временным email — регистрация должна быть заблокирована;
  • Проверьте работу reCAPTCHA на форме регистрации;
  • Мониторьте логи сервера и базу данных на предмет новых подозрительных регистраций.

Частые ошибки и как их исправить

  • Ошибка: Удаление пользователей не происходит — причина в отсутствии прав или неправильном ID.
    Решение: Убедитесь, что код запускается с правами администратора и что WP_User_Query возвращает корректные ID.
  • Ошибка: reCAPTCHA не проверяется или форма не блокируется.
    Решение: Проверьте правильность secret key и наличие поля g-recaptcha-response в форме.
  • Ошибка: Регистрация продолжается с временными почтовыми доменами.
    Решение: Добавьте в массив $temp_domains актуальные почтовые сервисы, используемые спамерами.

Практические советы по безопасности и производительности

  • Регулярно обновляйте список временных почтовых доменов для фильтрации.
  • Используйте плагин Clearfy Pro для удаления лишних REST API эндпоинтов и оптимизации работы сайта.
  • Ограничьте количество попыток регистрации с одного IP — используйте плагин Limit Login Attempts Reloaded.
  • Периодически делайте аудит пользователей и удаляйте неактивные аккаунты.

Сравнение способов блокировки спам-регистраций

МетодПлюсыМинусыПример реализации
Фильтр email-доменов Простота, быстрое внедрение Требует обновления списка доменов Хук registration_errors + проверка домена
Google reCAPTCHA Высокая эффективность, защита от ботов Зависимость от стороннего сервиса, требует настройки Добавление поля в форму + серверная проверка
Ограничение по IP Дополнительный уровень защиты Может блокировать легитимных пользователей Плагины Limit Login Attempts
×
Оптимизируй свой сайт!

Скидка -15% на премиум плагин Clearfy Pro

Купить плагин сейчас ⋙