Без заголовка

МТС сделал у себя на сайте защиту спама в сервисе отправки SMS. Защита, надо сказать плюшевая - усреднением помехи убираются почти подчистую, дальше распознать цифры очень просто - я пробовал. Удалось добиться стопроцентной вероятности распознавания.

CAPTCHA МТС (1.69КиБ)

Алгоритм на этот раз не публикую даже из исследовательских целей. Алгоритм для Beeline потом был использован в одной из спам-машин, извините, уважаемые пользователи этой сотовой компании.

Кстати, подходящее время вернуться к разговору о защите от спамовых роботов, специализирующихся на форумах, гостевых книгах и т.п. Поводом послужила попытка Helix (aka Ulitka) усовершенствовать предложенные мною методы CAPTHA.

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

Предлагаю, умозрительно, поискать другие способы защиты от роботов, в стороне от методов CAPTCHA. Скажем, некоторые форумы генерируют для каждого пользователя или хоста, заходящего к ним, идентификатор, который может зависеть, от IP и User-agent пользователя. Идентификатор этот заносится в hidden-поле формы и должен присутствовать в данных формы. Как сервер получает эти данные, идентификатор удаляется и генерируется другой. Если по прошествии какого-то времени идентификатор не был использован, он так же удаляется.

Всё бы ничего, но хорошие спамовые программы давно содержат средства для быстрой настройки обхода таких средств защиты - идентификатор легко изымается из кода страницы и отсылается серверу. Тем не менее, этот путь мне кажется плодотворным.

Как известно, в браузерах есть скриптовые языки. Наиболее распространённым является JavaScript - его понимает максимальное количество современных браузеров. Код на этом языке включается прямо в страницу браузера "как есть", что делает заимствование кода на JavaScript часто минутным делом. Это положение вещей не устраивает некоторых разработчиков, что привело к появлению (обычной для интерпретируемых языков) защиты - программ изменяющих код таким образом, чтобы его было трудно прочитать человеку (такие программы часто называют "obfuscator").

Обычно такие программы изменяют имена пользовательский функций, процедур и переменных, убирают форматирование и, иногда, модифицируют сам код программы. Даже программисту средней руки вполне по силам создать неплохой obfuscator, делающий над строкой такие преобразования, чтобы JavaScript смог восстановить исходную строку, а написание программы-раскодировщика стало проблемой - ведь можно написать obfuscator, который при двух запусках выдаст разный, сгенерированный случайно (в каких-то пределах) код.

Таким образом, объединение "маркеров", которыми помечаются пользователи и JS-obfuscator'a, возможно, будет хорошим решением проблемы защиты от роботом-спамеров. Проблемы, которые нужно решить - написание хорошего obfuscator для JavaScript и вопрос генерации "маркера" (не забывайте о защиты от flood'a, если "маркер" генерируется при каждом заходе пользователя, злоумышленник может сгенерировать гигантское количество "маркеров"), оставляю на читателя.
13 ноября 2004 20:05

Ваше имя или адрес блога (можно OpenID):

Текст вашего комментария, не HTML: