Автоматизация
Внедрение битрикс24 бесплатно
При покупке лицензии у меня
Подробнее
Назад

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

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

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

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

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