Как это выглядит для посетителя
Если запрос показался фильтру подозрительным, вместо страницы на мгновение открывается экран «Проверяем соединение». Браузер выполняет скрипт, получает подписанный токен, и страница загружается. Повторно в течение сессии проверка не показывается. Большинство посетителей вообще её не видят: проверка нужна только запросам с повышенным риском.
Из чего состоит проверка
- Вычислительная задача. Браузер подбирает число, которое вместе с выданной строкой даёт хеш с нужным числом нулей. Для одного посетителя это десятки миллисекунд, для ботнета, отправляющего миллион запросов, — огромная стоимость.
- Проверка окружения. Скрипт собирает несколько признаков настоящего браузера и сверяет их с заявленными в заголовках.
- Подпись. Результат превращается в подписанный токен, привязанный к адресу и отпечатку клиента. Подделать или передать его другому клиенту нельзя.
- Капча — последний рубеж. Её видят только те, кто не прошёл автоматическую проверку: обычно это старые браузеры или клиенты с отключённым JavaScript.
Сложность задачи меняется по ситуации
В обычный день сложность минимальна. Во время атаки она растёт для групп запросов с высоким риском: каждый следующий запрос из такой группы обходится атакующему всё дороже, а посетители с хорошей репутацией не замечают разницы.
Где проверку нельзя показывать
- API, к которому обращаются мобильные приложения и сервер-серверные интеграции, — для него работают лимиты и ключи, а не JavaScript.
- Вебхуки платёжных систем, служб доставки и 1С.
- Файлы, которые скачивают программы обновления или менеджеры загрузок.
Для этих путей в личном кабинете задаются исключения. В настройках по умолчанию планируется заранее исключить типовые адреса вебхуков популярных платёжных систем, но список в любом случае стоит проверить для своего сайта.
Вопросы и ответы
Работает ли проверка в браузерах с блокировщиками рекламы?
Да. Скрипт проверки отдаётся с домена вашего сайта и не относится к рекламе или аналитике, поэтому блокировщики его не трогают.
Собирает ли проверка персональные данные?
Проверка использует технические признаки браузера только для решения «человек или программа» и не предназначена для установления личности посетителя. Токен хранится в cookie, необходимом для работы сайта. Как учесть фильтр в документах сайта — в материале о 152-ФЗ.
Что увидит пользователь без JavaScript?
Простую капчу, после решения которой он получит такой же токен и сможет пользоваться сайтом.
Читайте также
- ВозможностиЗащита сайта от ботов и вредной автоматизацииОтделение людей и полезных роботов от вредной автоматизации
- ВозможностиЗащита API от DDoS, ботов и злоупотребленийЛимиты по ключам, схема запросов, защита мобильных приложений
- АтакиHTTP-флуд: что это и как защититьсяМассовые запросы к страницам, которые перегружают сервер