Защита web-сервисов от спама
Многие
из вас видели, что в гостевых книгах, форумах, при регистрации новых
пользователей часто в формах используется защита от роботов -
кривенькие буковки и циферки. Этот вид защиты называется captcha. Вот, что по этому поводу сказано в Википедии: CAPTCHA
(английская аббревиатура от «Completely Automated Public Turing test to
tell Computers and Humans Apart»...) - ... компьютерный тест,
используемый для того, чтобы определить, человек ли использует
систему... CAPTCHA чаще всего используется при необходимости
предотвратить использование интернет-сервисов ботами, в частности, для
предотвращения автоматической регистрации, скачивания файлов, массовых
рассылок и т. п.Я сам использовал эту защиту на своих
сайтах. Однако, как-то мне попалась ссылка на ресурс спамеров, где
приведено около 20 видов captcha, которые их программа может
распознать. По идее все просто - достаточно вспомнить программы
распознавания текста для сканеров. Очертание буквы А, как ее не
коверкай, все равно принципиально не изменяются, иначе человек, пишущий
сообщение в гостевую, тоже не сможет ее узнать.Мысль о создании
чего-то такого, что человек сможет легко распознать, а робот никогда,
прочно засела в голове. Первым пришел в голову пример, прочитанный
когда-то давно в книге, посвященной искусственному интеллекту: как
объяснить машине разницу между кошкой и собакой. Человеку достаточно
одного взгляда, а попробуйте хотя бы рассказать, в чем отличия...Распознавание
образов - вот в чем компьютер еще не скоро сравнится с человеком.
Отсюда и возникла идея, которую сейчас я предлагаю вашему вниманию.Выбираем
несколько картинок (чем больше - тем лучше), на который изображены
различные объекты. Как в детских играх - мячик, цветочек, дерево,
машина. Каждому изображению ставим в соответствие его название
(текстовое). Теперь нужно предъявить посетителю сайта несколько картинок
и рядом напечатать название одной из них с просьбой кликнуть именно по
ней. В этом и есть основной принцип этой защиты.Понятно, что робот
может запомнить ваши картинки (ведь их не бесконечное количество) или
просто кликать в одну из них до тех пор, пока не угадает - вероятность
попадания очень большая. Здесь начинаются хитрости.Во-первых,
можно показывать не целую картинку, а только ее часть. Согласитесь,
если вы увидите рот, нос или глаз, то вы однозначно поймете, что это
лицо. А для машины - это абсолютно разные картинки.Во-вторых,
помещать наши фрагменты на какой-нибудь фон, делать их полупрозрачными,
возможно даже частично перекрывать их друг другом. Главное, чтобы человеку все равно оставалось понятно, куда надо кликать.И, в-третьих,
можно просить кликнуть не на одну картинку, а на несколько в
определенном порядке. От этого вероятность попадания роботом
уменьшается на порядки.Вот
пример такой captcha. Я просил покликать всех своих родственников,
включая детей. Практически ошибок не было. Более того, это выглядело
как игра (что, кстати, может дополнительно привлечь посетителей на ваш
сайт).
Несколько слов о технической стороне реализации этой программы - мной использован PHP со стандартной графической библиотекой и совсем немножко Ajax. Если возникнут трудности с написанием такого скрипта - могу помочь. Буду рад услышать ваши мнения по поводу такого способа защиты web-форм от роботов и спама. Ниболее интересные из них будут обязательно здесь опубликованы. Возможно, кто-либо знает о подобных методах защиты - напишите. Мои поиски по Интернету не увенчались успехом... Также буду благодарен, если вы,
воспользовавшись этой идей, поставите ссылку на данную статью.
Ярослав Полещук
|
Комментарии
18.01.2007, Алекс Экслер, exler.ru
Эти вещи давно обсуждаются в интернет-сообществе. Есть масса всяких решений. На
данный момент голову себе особо можно не морочить - тест Тьюринга роботы толком не
обходят - это давно проверено. Да им и смысла особого нет этим заниматься. Кроме того,
есть намного более простые способы отсечь робота - например, попросить решить простейшую
арифметическую задачу, используя комбинацию цифр и слов, например: "сколько будет 2 плюс
5".
|
ЯП Да, согласен, на сегодняшний день распознавание букв и цифр в традиционных captcha еще не приняло массового характера. Есть несколько десятков самых распространенных, которые известны роботам, а до остальных, тем более самодельных, пока дело не дошло. Однако, давайте вспомним, что еще совсем недавно обычный спам на почтовые ящики не был таким изощренным, как теперь. Алгоритмы и технологии спамеров подстраиваются под окружающую среду и мутируют очень оперативно. Кто даст гарантии, что они не обратят свой пристальный взор на web и не начнут атаковать гостевые и форумы с таким же упорством? Вот тогда они обязательно изобретут способ распознания традиционных captcha, пускай даже способы деформации будут меняться владельцами каждый час . Повторюсь - очертания букв всегда останутся одинаковыми. Что касается арифметических задач - сколько вы можете придумать таких примеров? Даже если и сто - вероятность угадывания ответа соответственно 1/100 - роботу на полсекунды.
|
|
23.01.2007, Несколько конструктивных замечаний с форумов mastertalk и searchengines
1. Трудности с пользованием:
- Да, тяжёло для меня это пока искал где там листья где че) - вот это ребусы))) хорошо хоть кроссворд разгадать не просят.. - У меня на ввод капчи ушло около 30 секунд - долго искал листья. В обычной ситуации я бы не стал тратить столько времени.
2. Качество предлагаемых картинок
- Картинки надо просто попроще, зачем такие сложные и многоцветные? 256 цветов и на размере положительно скажутся и сами картинке по структуре более явные, а не вырезки из обоев, тогда по мойму все будет ок.
3. Возможность обхода роботами
- перебором пробьют, если конечно смыл будет туда пролезти точнее ..если такие капчи будут в массовм порядке ставится
|
ЯП 1. Заранее следует оговориться: завсегдатаи этих форумов - это специалисты по оптимизации и раскрутке сайтов. И одним из видов их деятельности является регистрирование ресурсов во всякого рода каталогах, количество которых исчисляется сотнями. Естественно, что для них критичным является время заполнения формы. Однако, давайте вдумаемся - чем принципиально такая работа отличается от деятельности тех же роботов? Если владелец каталога скурпулезно и трепетно отбирает сайты - а ему сыплятся заявки на внесение со скоростью звука? Конечно, некоторые каталоги мечтают иметь в себе миллионы ресурсов никем не отобранные - тогда каптча вовсе не нужна. Давайте представим себе человека, пишущего сообщение в гостевую или владельца сайта, который он хочет зарегистрировать. Представьте себе, как он заполняет форму - вдумчиво, никуда не торопясь. В этом случае кликнуть по каптче не составит большого труда. Я все это к чему говорю: никто не утверждает, что этот вид captcha является универсальным - в некоторых случаях можно вообще без нее обходиться, а в некоторых - ввести 3 цифры и на этом остановиться.
2. Дествительно, подбор фона и самих картинок - это чуть ли не самая трудная и важная составляющая этой программы. Здесь все зависит от владельца. У меня даже была мысль подобрать вообще черно-белые изображения или что-то типа гравюр. С другой стороны, вспомните те случаи, когда вам приходилось распознавать традиционные captcha. Наверняка, случались и отрицательные результаты - 1, I, l или 0 и О, а иногда просто фон или искривления вообще доводят до неузнаваемости ту или иную букву. Погрешность неизбежна и не стоит ее бояться.
3. Теперь по поводу обхода роботами этой защиты. Здесь мои изыскания шли в двух направлениях - невозможность распознания каптчи роботом и наименьшая вероятность угадывания. Для решения первой задачи применяются методы, описанные в статье. Несколько цифр по второму направлению. Поле каптчи 300 х 200. Сторона фрагмента картинки 60. Следовательно картинок может уместиться около 15 штук. Вероятность угадывания нетрудно посчитать: 1/15 (Кстати, на форуме приводился пример всего с тремя картинками - робот угадает в худшем для него случае с 5 раз) Для уменьшения вероятности можно пойти двумя путями - либо увеличивать количество укладываемых картинок, либо задавать не один вопрос, а несколько. В предложенном варианте 3 вопроса дают вероятность угадывания в 1/2730, что уже значительно лучше. Тут нужно прийти к разумному компромиссу между сложностью для робота и сложностью для человека.
|
|
24.01.2007, Yukko, Зачем заставлять людей думать не заставляйте меня думать ;) есть решения, которые отлично защищают от спама и не заставляют меня думать.
|
ЯП Не удержался, чтобы не выставить. Это правда жизни...
|
|
6.03.2007, Sam
Вот в продолжение:
rmc.net.ru/article/web/antispam_no_captcha/
|
ЯП Мысли, подобные изложенным в этой статье часто встречаются на ресурсах, посвященных защите от спама web-форм. Вкратце изложу суть: спамерские роботы автоматически находят по Интернету страницы с формами и автоматически их заполняют. Практически без участия людей. Предлагается манипулировать с полями ввода - изменять их названия, делать невидимые поля для проверки и т.п. На самом деле, действительно, какое-то время (возможно продолжительное) это будет срабатывать. Но вот небольшая цитата из блога http://ru-traff.blogspot.com/2007_01_01_archive.html "... открыл я коменты и сразу повалили спамеры, в основном из US и Индии. И
спам начал валить не такой как в ... рунете, в стиле - "Пожалуйста
посетите мой сайт! Там много новых игр!". Ихние спамеры - Жгут! Спам
весь набивается ручками и под каждую статью. К примеру: один чувак
пишет - "Спасибо, чудесный пост! Читая этот пост я вспомнил фильм..
блаблабла... Читая этот абзац я вспомнил как мой отец говорил.." и так
пару абзацев и только в конце ставит текстовую ссылку на свой блог где он пишет о том же." Возможно, это не совсем по теме, но просматривается явная тенденция - спамеры усовершенствуются. Честно говоря, если бы я был спамером я бы вручную заносил куда-нибудь в базу данных свойства конкретной формы, и только потом бы засылал спам.
|
|
|