Назад

Как защитить сайт на Битрикс от спама при регистрации пользователей

Главная
Блог
Как защитить сайт на Битрикс от спама при регистрации пользователей

Спам-боты — частая проблема для сайтов с открытой регистрацией. Они создают фейковые аккаунты, рассылают рекламу и даже могут использоваться для мошенничества. В этой статье разберём, как настроить защиту от автоматических регистраций в 1С-Битрикс, используя встроенные инструменты и дополнительные методы фильтрации.

1. Базовый способ: проверка имени и фамилии

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

Код для init.php

AddEventHandler("main", "OnBeforeUserRegister", "checkUserForSpam");
AddEventHandler("main", "OnBeforeUserUpdate", "checkUserForSpam");

function checkUserForSpam(&$args) {
    $spamKeywords = [
        'Вам оплатили', 'www.', 'http://', 'купить', 'заказать', 
        'номер телефона', 'оплатите', 'перейдите'
    ];

    foreach ($spamKeywords as $keyword) {
        if (stripos($args['NAME'], $keyword) !== false || stripos($args['LAST_NAME'], $keyword) !== false) {
            $GLOBALS['APPLICATION']->ThrowException('Обнаружены подозрительные данные. Обратитесь к администратору.');
            return false;
        }
    }
    return true;
}

Что делает этот код?

  • Проверяет имя и фамилию пользователя на наличие спам-ключей.

  • Использует stripos (регистронезависимый поиск).

  • Блокирует регистрацию, если найдено совпадение.

2. Улучшенная защита: регулярные выражения и проверка email

Некоторые боты маскируют ссылки (example точка ru вместо example.ru). Чтобы их отлавливать, используем регулярные выражения и проверку email.

Дополненный код

function checkUserForSpam(&$args) {
    // Проверка имени и фамилии
    $nameSpamPatterns = ['/оплат[иы]/ui', '/купи[тьт]/ui', '/заказ[аы]/ui', '/http:\/\//i', '/www\./i'];
    foreach ($nameSpamPatterns as $pattern) {
        if (preg_match($pattern, $args['NAME']) || preg_match($pattern, $args['LAST_NAME'])) {
            $GLOBALS['APPLICATION']->ThrowException('Обнаружены запрещённые слова в данных.');
            return false;
        }
    }

    // Проверка email на временные домены
    $tempEmailDomains = ['mail.ru', 'yandex.ru', 'gmail.com']; // можно расширить список
    $emailDomain = explode('@', $args['EMAIL'])[1] ?? '';
    if (in_array(strtolower($emailDomain), $tempEmailDomains)) {
        $GLOBALS['APPLICATION']->ThrowException('Регистрация с временных email запрещена.');
        return false;
    }

    return true;
}

3. Дополнительные меры защиты

3.1. Включение капчи

Битрикс поддерживает CAPTCHA и reCAPTCHA (Google). Настройка:

  1. Админка → Настройки → Настройки модулей → Главный модуль → CAPTCHA.

  2. Выбрать тип (например, reCAPTCHA v3).

  3. Добавить поля в форму регистрации.

3.2. Логирование попыток регистрации

Чтобы анализировать атаки, можно записывать подозрительные попытки в лог:

CEventLog::Add([
    'SEVERITY' => 'WARNING',
    'AUDIT_TYPE_ID' => 'SPAM_ATTEMPT',
    'MODULE_ID' => 'main',
    'DESCRIPTION' => 'Попытка спама: ' . print_r($args, true),
]);

3.3. Ограничение регистраций с одного IP

В init.php можно добавить проверку по IP:

$userIp = $_SERVER['REMOTE_ADDR'];
$bannedIps = ['123.123.123.123', '111.222.333.444']; // можно подгружать из базы

if (in_array($userIp, $bannedIps)) {
    $GLOBALS['APPLICATION']->ThrowException('Доступ с вашего IP запрещён.');
    return false;
}

4. Готовые решения из Маркетплейса

Если нет времени на кастомную разработку, можно установить модули:

  • «Антиспам: защита форм»

  • «StopSpam — защита от спама»

  • «Капча для форм»

Итог

  1. Базовый уровень: проверка имени/фамилии на спам-слова.

  2. Продвинутый уровень: регулярные выражения + проверка email.

  3. Максимальная защита: капча + логирование + чёрные списки IP.

Комбинируя эти методы, можно значительно снизить количество фейковых регистраций на сайте.

Нужен надежный исполнитель?
Разрабатываем сайты, выполняем миграцию на Битрикс, дорабатываем функционал, сопровождаем проекты, а также занимаемся поисковым продвижением и комплексным маркетингом
Получить консультацию
Читайте по теме
Все статьи
Нужен надежный исполнитель?
Разрабатываем сайты, выполняем миграцию на Битрикс, дорабатываем функционал, сопровождаем проекты, а также занимаемся поисковым продвижением и комплексным маркетингом
Получить консультацию
Все статьи