Технические данные
- Опубликовано:
- 07.09.2024
- Обновлено:
- 09.09.2024
- Версия:
- 1.0.1
- Установлено:
- Менее 50 раз
- Подходящие редакции:
- «Первый сайт», «Старт», «Стандарт», «Малый бизнес», «Бизнес»
- Адаптивность:
- Да
- Поддержка Композита:
- Нет
- Совместимо с Сайты24
- Нет
- Совместимо с PHP 8.1
- Да
Пользовательское соглашение
Описание
Модуль представляет альтернативу для стандартной CAPTCHA на основе 1С-Битрикс.
Работает со стандартными компонентами регистрации, формами добавления элементов инфоблоков и веб-формами. Также возможна интеграция в формы из сторонних модулей или в самописные (см. инструкцию для разработчиков в разделе "Установка").
1.0.1 (09.09.2024) | В новой версии:
|
Начало работы.
Необходимо получить ключи – ключ клиента и ключ сервера для работы модуля. Получить их можно по ссылке - https://cloud.yandex.ru/ru/services/smartcaptcha/.
Ключи устанавливаются в настройках модуля в соответствующих полях.
Настройки модуля.
· "Текст ошибки при отрицательном ответе при прохождении проверки" - напишите свой текст ошибки.
· "Язык капчи" - на каком языке отобразить текст в форме проверки на робота
· "Невидимый режим" - если флаг установлен, в форме не будет отображено задание для проверки капчи
· "Тестовый режим" - для проверки работы модуля. Система всегда будет "подозревать", что вы робот и будет показывать форму с заданием, даже если вы выбрали "Невидимый режим"
· "Автоматически подставлять капчу в формы" - скрипты проверки будет автоматически подгружены в формы, выбранные в настройках ниже
· "Веб-формы для защиты на стороне сервера" - выберите веб-формы, которые необходимо защитить Yandex SmartCaptcha от спама
· "Автоматически подставлять капчу в регистрацию" - скрипты проверки на работа будут автоматически подгружаться в форму регистрации
· "Защита регистрации" - даже при автоматической регистрации пользователя (например, из внешнего API) будут проверяться токены Yandex SmartCaptcha
· "Автоматически подставлять капчу в iblock.element.add.form" - скрипты проверки на работа в шаблон этого компонента будут подгружаться автоматически
· "Инфоблоки для защиты на стороне сервера" - выберите инфоблоки, которые необходимо защитить от спама. При попытке добавить элемент в выбранный инфоблок (из API или из форм на сайте) будут проверяться токены Yandex SmartCaptcha
· "Скрыть иконку политики со страниц" - даже в невидимом режиме при подгрузке скриптов Yandex SmartCaptcha внизу страницы будет отображаться небольшой блок "Политика обработки данных". Если вам необходимо скрыть этот блок - отметьте галочку в этой настройке.
Защита веб-форм.
Для автоматической защиты веб-формы должны быть соблюдены требования:
1) форма реализована через компонент “form.result.new”. Работоспособность со сторонними компонентами не гарантируется.
2) В настройках компонента выбрано:
· чекбокс "Автоматически подставлять капчу в формы"
· в параметре "Веб-формы для защиты на стороне сервера" выбран ID формы
Защита регистрации
Для автоматической защиты регистрации должны быть соблюдены требования:
1) регистрация на сайте реализована через компонент "main.register" или "system.auth.registration". Работоспособность со сторонними компонентами не гарантируется.
2) в настройках компонента выбрать:
· чекбокс "Автоматически подставлять капчу в регистрацию"
· чекбокс "Защита регистрации"
Важно! При активном чекбоксе "Защита регистрации" будет проверяться любая попытка регистрации на сайте. Необходимо проверить все варианты регистрации на сайте и убедиться, что во все компоненты внедрена капча.
Защита инфоблоков
Для автоматической защиты инфоблоков от спама должны быть соблюдены требования:
1) Добавление элементов в публичной части сайта реализовано через компонент “iblock.element.add.form”. Работоспособность со сторонними компонентами не гарантируется
2) В настройках модуля выбрано:
· чекбокс “Автоматически подставлять капчу в iblock.element.add.form”
· В списке “Инфоблоки для защиты на стороне сервера” выбран инфоблок, который необходимо защитить от спама.
Важно! Если в списке “Инфоблоки для защиты на стороне сервера” выбран инфоблок, но при добавлении элемента не будет передаваться токен смарт-капчи, то элемент добавлен не будет. Это относится только к публичной части сайта, ограничения на административный раздел не распространяются.
Установка в свои компоненты (для разработчиков).
Обычный submit (без ajax режима).
1) Установить контейнер с классом smart-captcha в шаблон формы в нужное место
2) При обработке результатов сабмита добавить
\Bitrix\Main\Loader::includeModule('itescort.yacaptcha'); \Itescort\Yacaptcha\Captcha::checkSmartTokenFromUser($token); |
где $token - токен Yandex SmartCaptcha из формы для проверки на стороне Яндекса
3) Метод возвращает Boolean переменную true или false в зависимости от результата проверки на сервере Яндекса.
Подключение в формы с ajax-режимом.
Видимый режим Yandex SmartCaptcha:
1) Установить контейнер с классом smart-captcha в шаблон формы в нужное место
2) При отправке ajax-запроса добавить в данные "smart-token" из формы. Пример:
let smartTokenValue = document.querySelector('input[name="smart-token"]').value;BX.ajax({ url: '/ajax.php', data: { action: 'save', smart_token: smartTokenValue,},}); |
3) При обработке результатов сабмита добавить
\Bitrix\Main\Loader::includeModule('itescort.yacaptcha');\Itescort\Yacaptcha\Captcha::checkSmartTokenFromUser($token); |
где $token - токен Yandex SmartCaptcha из формы для проверки на стороне Яндекса
4) Метод возвращает Boolean переменную true или false в зависимости от результата проверки на сервере Яндекса.
Невидимый режим:
1) Установить контейнер с классом smart-captcha в шаблон формы в нужное место
2) Добавить на форму дата атрибут data-ajax=true
Пример
<fo rm action="" id="your-form" data-ajax="true"> |
Важно! Для корректной проверки такой формы в ней обязательно должен быть элемент type=”submit” (button или input).
3) При отправке ajax-запроса добавить в данные "smart-token" из формы (пример кода выше).
4) При обработке результатов сабмита добавить
\Bitrix\Main\Loader::includeModule('itescort.yacaptcha');\Itescort\Yacaptcha\Captcha::checkSmartTokenFromUser($token); |
где $token - токен Yandex SmartCaptcha из формы для проверки на стороне Яндекса
5) Метод возвращает Boolean переменную true или false в зависимости от результата проверки на сервере Яндекса.