Документация на модуль abcwww.antispam для CMS 1С-Битрикс

Модуль для защиты от заполнения форм ботами и как следствие защита от спама.

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

  1. Спасет от 99% ботов. Успешно работает на множестве проектов.
  2. Ни каких капчей, ни каких подключений внешних скриптов типа reCAPTCHA, все работает локально без внешних ресурсов.
  3. Возможность включения модуля только для выбранных сайтов, если используете многосайтовость.
  4. Если основной функционал не справляется, то можно настроить второй барьер защиты с гибкими настройками.
  5. Возможность использовать модуль на кастомных формах.

Установка:

Стандартная установка модуля из MarketPlace для CMS 1С-Битрикс (ссылка на модуль).

Настройка модуля

После установки модуля перейдите в административную панель 1С-Битрикс:

Настройки → Настройки продукта → Настройки модулей → Антиспам для web-форм

Также страницу настроек можно открыть по адресу:

/bitrix/admin/settings.php?lang=ru&mid=abcwww.antispam&mid_menu=1


1. Основная защита форм

На вкладке «Настройки (Сайт ...)» можно включить антиспам-защиту для следующих типов форм:

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

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



2. Дополнительный фильтр

На вкладке «Дополнительный фильтр» находятся дополнительные механизмы защиты, которые можно использовать совместно с основной антиспам-проверкой.

Ограничение количества отправок формы

Позволяет ограничить количество отправок форм одним пользователем за определённый промежуток времени.

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

Проверка HTTP_REFERER

При включении этой настройки модуль дополнительно проверяет источник запроса на отправку формы. Если источник отсутствует или не соответствует текущему сайту, отправка отклоняется.

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

Определение IP-адреса пользователя

В зависимости от конфигурации веб-сервера, использования обратного прокси-сервера (например, Nginx), балансировщика нагрузки или CDN реальный IP-адрес посетителя может передаваться через различные серверные переменные и HTTP-заголовки.

Выберите вариант, при котором правильно определяется IP-адрес посетителя. Если правильный IP-адрес отображается в первом варианте, обязательно выберите именно его.

Дополнительное скрытое поле

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

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



3. Обязательное подключение защиты к формам

ВНИМАНИЕ!!! Если антиспам-защита включена для определённого типа форм, необходимо добавить вызов метода \Bitrix\Abcwww\Antispam\WebForm::init() в каждую защищаемую форму этого типа.

Без вызова данного метода отправка защищаемой формы будет отклоняться!!!

Метод необходимо вызывать внутри HTML-тега <form>, в любом удобном месте.

Например, в шаблоне компонента bitrix:form.result.new вызов можно разместить между выводом заголовка и подвала формы:

<?
//Начало шаблона
...тут какой то код...
?>
<?=$arResult["FORM_HEADER"])?>
    <?
    //...тут какой то код...
    ?>

    <?\Bitrix\Abcwww\Antispam\WebForm::init()?>

    <?
    //...тут какой то код...
    ?>
<?=$arResult["FORM_FOOTER"]?>
<?
...тут какой то код...
//Конец шаблона
?>

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


4. Использование в кастомных формах

Модуль также поддерживает защиту форм, разработанных без использования стандартных компонентов 1С-Битрикс.

Для таких форм предусмотрены методы \Bitrix\Abcwww\Antispam\WebForm::init(), \Bitrix\Abcwww\Antispam\WebForm::check() и \Bitrix\Abcwww\Antispam\WebForm::addLog(), позволяющие подключить защиту, проверить отправленные данные и учитывать успешные отправки при использовании ограничения их количества.

Подробное описание каждого метода приведено в разделе «Методы».

Методы:

Метод \Bitrix\Abcwww\Antispam\WebForm::init()

Назад к методам

Обязательный

Вызов метода располагается в шаблонах стандартных компонентов 1С-Битрикс, выбранных в настройках модуля форм, внутри тега <form>

Он задает служебную информацию для формы, без него форма отправляться не будет!!! (см. Настройки модуля)

Метод \Bitrix\Abcwww\Antispam\WebForm::check()

Назад к методам

Только для кастомных форм

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

Метод необходимо вызывать до обработки и сохранения данных формы.

Возвращаемые значения:

Пример использования:

<?
if (\Bitrix\Abcwww\Antispam\WebForm::check()) {
    // Проверка пройдена, можно обрабатывать данные формы
} else {
    // Проверка не пройдена, отклоняем отправку формы
}
?>

Метод \Bitrix\Abcwww\Antispam\WebForm::addLog()

Назад к методам

Только для кастомных форм

Регистрирует успешную отправку формы для учёта количества отправок и контроля установленного ограничения.

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

Пример использования:

<?
\Bitrix\Abcwww\Antispam\WebForm::addLog();
?>

Важно: использование метода имеет смысл только в том случае, если в настройках «Дополнительный фильтр» заданы оба параметра: Диапазон времени и Максимальное разрешенное количество отправок формы за выбранный диапазон времени

Если ограничение количества отправок не настроено, вызов метода не требуется.