Виды проверок: JS, cookie, CAPTCHA

Какие проверки система защиты выдаёт пользователям, как выбирается тип проверки и что происходит после прохождения.

В отличие от других проверок, CAPTCHA по умолчанию выключена. Если хотите использовать CAPTCHA, напишите на cybert@servicepipe.ru — мы всё настроим.

Суть, коротко

В этом разделе даём выжимку без тонких нюансов — для тех, кто ищет быстрый ответ. В разделах ниже рассказываем обо всём подробнее.

Какие проверки наша система защиты может дать пользователю: JS-челлендж, cookie-челлендж, CAPTCHA.

Как система выбирает, какую проверку дать: анализирует запрос и определяет класс источника запроса. Разные классы получают разные проверки. Дефолтная политика выбора такая:

Тип проверки
ситуация: нет DDoS-атаки

Тип проверки
ситуация: идёт DDoS-атака

Бот

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

Нет проверки, даже если CAPTCHA включена. Запрос просто блокируется.

Вероятно бот
либо
Вероятно человек

JS-челлендж — при запросе в локацию, где в качестве ответа ожидается html.
Cookie-челлендж — при запросе в локацию, где в качестве ответа не ожидается html.

Человек

Нет проверки, запрос пропускается

JS-челлендж

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

Что после проверки: проверка пройдена — запрос пропускается на ваш ресурс, нет — блокируется.

Что такое проверка

Проверка — это короткий тест, который система защиты может выдать, если подозревает, что запрос сделал бот.

Представьте, что ваш сайт — это здание, а система защиты — охранник у входа. Обычно посетители (пользователи) проходят спокойно, потому что у охранника нет поводов сомневаться. Но если кто-то ведёт себя странно, охранник может попросить выполнить простое действие — например, показать пропуск. Честный посетитель (человек) без труда его предъявит, а преступник (бот) нет.

Стандартный выбор проверки

Проверки JS-челлендж и cookie-челлендж проходят автоматически и незаметно для пользователя. Система отправляет устройству небольшой тест, который оно выполняет автоматически и почти мгновенно. Максимум, что можно заметить — на мгновение мелькнёт иконка загрузки.

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

Виды проверок

Наша система защиты может выдать пользователю JS-челлендж, cookie-челлендж или CAPTCHA.

Cookie-челлендж — простая проверка, которая показывает, умеет ли клиент работать с cookie.

Как работает:

  1. Система получает запрос.

  2. В ответ она отдаёт редирект (HTTP 307) с заголовком Set-Cookie. Редирект ведёт на тот же адрес, который пользователь запросил изначально. То есть система просто говорит браузеру: «Повтори этот же запрос, но уже с cookie, которую я тебе выдала».

  3. Браузер делает повторный запрос — теперь уже с этой cookie.

  4. Система проверяет: повторный запрос пришёл с cookie, значит всё в порядке, проверка пройдена.

Всё это происходит автоматически и занимает доли секунды.

JS-челлендж

JS-челлендж (JavaScript Challenge) — проверка, при которой браузер должен выполнить небольшой скрипт.

Работает так:

  1. Система получает запрос от пользователя.

  2. В ответ она отправляет страницу с коротким JavaScript-кодом — в нём зашита простая математическая задача.

  3. Браузер решает задачу и отправляет обратно ответ на неё.

  4. Система проверяет результат. Если результат верный, всё в порядке, проверка пройдена.

Всё это происходит автоматически и занимает доли секунды.

CAPTCHA

CAPTCHA (или просто «капча») — визуальная проверка, где нужно с помощью действия подтвердить, что вы человек. Система защиты способна выдавать два вида капчи: символьную и с поворотом картинки.

Custom 403 and CAPTCHA symbol CAPTCHA
Custom 403 and CAPTCHA rotate CAPTCHA

Символьная

С поворотом картинки

По умолчанию капча выключена. Если хотите использовать её, напишите на cybert@servicepipe.ru — мы всё настроим. Укажите, какую версию хотите использовать: символьную или с поворотом картинки (если не указать, установим символьную).

Кстати, капчи с поворотом картинки можно загрузить свои изображения вместо наших стандартных.

Капча выдаётся пользователям, которых система распознала как ботов. Это альтернатива блокировке: обычно запросы от ботов блокируются, а после включения капчи вместо блокировки такие пользователи будут получать проверку. Пройдя её, смогут попасть на ваш сайт/приложение.

Как работает капча:

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

  2. Система перенаправляет пользователя страницу с капчей.

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

  4. Если действие выполнено верно, проверка пройдена.

  5. Система перенаправляет пользователя на страницу, которую он запрашивал.

У капчи есть уровни сложности. Чем выше уровень, тем сильнее «замазаны» символы или тем точнее нужно повернуть изображение под указанным углом. Пример: символьная капча со стандартной и повышенной сложностью.

Challenges 1
Challenges 2

Стандартная

Более сложная

Стандартная сложность подходит для защиты большинства сайтов и приложений. При необходимости мы можем сами повысить сложность для отдельных типов трафика — например, если видим, что вас атакуют продвинутые боты, способные пройти несложную капчу. Если у вас есть свои пожелания по сложности, напишите на cybert@servicepipe.ru — мы поменяем настройки.

Как система выбирает, какой вид проверки выдать

Вид зависит от того, кто отправил запрос (человек/бот) и идёт ли сейчас DDoS-атака на ваш ресурс.

Как это работает: каждый запрос к ресурсу проходит через нашу систему защиты. Система анализирует большое количество данных о вашем запросе (выражаясь технически, она анализирует телеметрию запроса на уровнях L3/L4–L7). Эти данные помогают понять, кто отправил запрос. Система маркирует источник одним из четырёх классов:

  • Бот — запрос точно отправил бот

  • Вероятно бот — скорее всего, запрос отправлен ботом, но нет 100% уверенности

  • Вероятно человек — скорее всего, запрос отправлен человеком, но нет 100% уверенности

  • Человек — запрос точно отправил человек

Дальше система смотрит, не попал ли запрос под действие вашего чёрного списка, белого списка или пользовательских правил. Если да, действует в соответствии с вашими настройками. Если нет, то выбирает проверку в зависимости от класса источника запроса (бот/верояно бот/вероятно человек/человек) и ситуации.

Тип проверки
ситуация: нет DDoS-атаки

Тип проверки
ситуация: идёт DDoS-атака

Бот

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

Нет проверки, даже если CAPTCHA включена. Запрос просто блокируется.

Вероятно бот
либо
Вероятно человек

JS-челлендж — при запросе в локацию, где в качестве ответа ожидается html.
Cookie-челлендж — при запросе в локацию, где в качестве ответа не ожидается html.

Человек

Нет проверки, запрос пропускается

JS-челлендж

Эта таблица даст вам общее представление о выборе проверки. В реальности мы гибко донастраиваем политику под каждого клиента индивидуально, опираясь на его пожелания и особенности трафика.

Что происходит после проверки

Если проверка не пройдена, запрос блокируется. Он не попадёт к вашему сайту/приложению.

Если проверка пройдена, запрос передаётся вашему сайту/приложению. Также система добавляет в браузер пользователя cookie, подтверждающую, что клиент — легитимный. С этой cookie он какое-то время может свободно работать с вашим сайтом/приложением, без повторных проверок.

Резюме

  • Проверки помогают отличать людей от ботов и не дают ботам попасть на ваш ресурс

  • JS- и cookie-челленджи выдаются, если есть сомнения, бот или человек отправил запрос. Они проходят мгновенно и незаметно для пользователя.

  • CAPTCHA — альтернатива блокировке для тех, кого система посчитала ботом. По умолчанию она выключена. Чтобы включить, напишите нам в техподдержку. Капча требует от пользователя активных действий — поворота картинки или ввода символов.

  • Выдачу проверок можно настраивать. Для этого добавьте пользовательские правила или напишите нам в техподдержку cybert@servicepipe.ru — мы со всем поможем.