Почему капча не спасает от ботов
Содержание
Поделиться
Капча не закрывает автоматический заход. Справка Директа описывает её как возможный ответ на подозрительный клик, а справочник OWASP называет поражение теста ситуацией, когда головоломку решили — машинным чтением или на ферме людей. Ниже — где капча всё же полезна, где она ломается и чем от неё отличается вычислительная задача в браузере.
Если вы ставите капчу на форму или на вход и считаете тему закрытой, трафик всё равно может дойти до сайта. Имеет смысл заранее решить, что вы проверяете вторым слоем, когда тест пройден.
Что делает капча в Директе
Справка описывает обновление антифрода для кампаний в РСЯ и на поиске. Раньше алгоритм разбирал поведение после перехода и вычитал недействительные показы, клики и конверсии из статистики, но не мешал такому трафику попасть на сайт. Теперь он ещё и снижает риск самого перехода: до показа объявление могут не показать, если система уверена, что перед ней бот или мошенник, а при подозрительном клике может показать капчу.
Справка не обещает, что трафик на сайт больше не попадает. Следующий абзац прямо говорит, что фрод всё же может дойти до сайта. Капча в кабинете — возможный шаг площадки, не замок на вашей форме.
Почему тест проигрывают
Справочник автоматических угроз OWASP (OAT-009) расшифровывает CAPTCHA как полностью автоматический публичный тест Тьюринга, который отличает компьютер от человека. Угроза названа CAPTCHA Defeat: автоматизация пытается получить ответ на визуальный или звуковой тест, мини-игру или арифметическое задание. Ответ могут получить машинным чтением или на ферме людей.
В предисловии редакции справочника от 15 февраля 2018 года прежнее имя Bypass заменено на Defeat. Смысл замены такой: головоломку не пропускают из-за кривой установки, её решают, и против заинтересованного атакующего сам тест неэффективен. Имена сервисов и порядок решения справочник в открытое описание не кладёт, и доли успеха там нет. Вывод для вас практический: пройденная капча не доказывает, что форму отправил человек.
Рекомендации OWASP по защите от подстановки чужих паролей говорят то же на входе в учётную запись. Капча на попытке входа помогает заметить автоматизацию и может замедлить подбор, но не совершенна: существуют инструменты и сервисы, которые решают капчу с заметно высокой долей успеха. Блокировка IP останавливает простой перебор и не должна быть единственной защитой: адрес легко сменить, а распределённый заход через прокси держит низкую частоту с одного адреса. Клиентские проверки, включая JavaScript, можно подделать, поэтому OWASP требует второй слой. Имена программ и пороги частоты в этот разбор не переносятся: вам нужен второй слой, а не список обходов.
Чем задача в браузере отличается от капчи
Статья Адама Бэка от 1 августа 2002 года описывает hashcash как способ притормозить систематическое злоупотребление ресурсами без учёта, исходно почтой и анонимными ремейлерами. Первое предложение автор относит к маю 1997 года. Функция стоимости считает токен, который служит доказательством работы. Её должно быть дёшево проверить и настраиваемо дорого вычислить. В интерактивном варианте сервер выдаёт задание клиенту. Статья отделяет этот приём от капчи: человека в цикле нет, цену задаёт объём вычисления. Формула сборки токена и число нулевых битов остаются в статье Бэка. Сложность для веб-визита он тоже не назначает.
У Binetro подозрительному визиту может быть выдана вычислительная задача в браузере. Верное решение подтверждает проверку и может сменить решение «проверить» на «пропустить». Решение «не пустить» задача не отменяет. Задачу нельзя предъявить вместо пропуска. Сложность, срок и формат не публикуются. Это не капча: человек картинку не разгадывает, а отказ вычислительной работой не откупается.
Что проверить у себя
Отделите капчу площадки от капчи на сайте. Директ может показать её на подозрительном клике и всё равно пропустить часть фрода до сайта.
Не считайте пройденный тест доказательством человека. OWASP описывает поражение как решённую головоломку, в том числе чужими руками.
Не оставляйте блокировку IP единственной мерой. Адрес меняется, а заход через прокси держит низкую частоту с одного адреса.
Добавьте второй слой, который нельзя подделать одной подменой JavaScript в браузере.
Если вместо картинки вы ставите вычислительную задачу, помните границу Binetro: верный ответ может сменить «проверить» на «пропустить» и не отменяет «не пустить».
| Приём | Что он делает | Где ломается |
|---|---|---|
| Капча на клике в Директе | Может появиться при подозрительном клике, объявление могут не показать | Фрод всё же может дойти до сайта |
| Капча на входе | Замечает автоматизацию и замедляет подбор | Тест решают инструменты, сервисы и люди |
| Блокировка IP | Останавливает простой перебор | Адрес меняют, частота с одного адреса низкая |
| Вычислительная задача | Дорого собрать, дёшево проверить, человека в цикле нет | Верный ответ не отменяет отказ |