На сегодняшний день далеко не каждый пользователь Сети является человеком, возможно это покажется странным для не интересующегося ИТ читателя, но существует множество программ, способных передвигаться по сайтам, следуя по гипер-ссылкам, как внутри одного сайта, так и переходя с одного сайта на другой (в целом такой тип программ называется spider или crawler). Такие программы могут иметь совершенно разное предназначение, самый распространенный пример: поисковые системы используют crawler'ов для пополнения своих индексов, но, к сожалению, далеко не все программы этого класса написаны для благих целей.
Good vs Evil
Большая часть "хороших" spider'ов используется лишь для сбора информации о сайте и следуют пожеланиям владельцев сайтов, оставленных ими в специальном файле под названием robots.txt
, либо внутри HTML-разметки с помощью специально предназначенных для этого тэгов (этот механизм выходит за рамки данного повествования, так что позволю себе его пропустить, оставив как тему для отдельного разговора).
Но даже сбор информации во время автоматизированного путешествия программы по сайтам можно использовать в корыстных целях - на многих сайтах люди размещают свою контактную информацию для тех или иных целей, и некоторые сайты эту информацию "публикуют". Spider, настроенный на сбор контактной информации (в основном адресов электронной почты и номеров ICQ и прочих служб обмена сообщениями) может в очень сжатые сроки насобирать длинный список адресов, пригодный, например, для рассылки нежелательной рекламы, в простонародье называемой спам. Избежать попадания своей контактной информации в такие списки относительно просто - достаточно лишь следить за тем, чтобы она либо не публиковалась, либо была защищена любым из простейших способов защиты от такого рода программ, начиная от банального требования регистрации для просмотра контактных данных пользователей, заканчивая выводом адресов через изображения или шифрование посредством JavaScript.
Среди прочих функций, которые может выполнять такого рода программа, одной из наиболее часто используемых является возможность заполнения такой неотъемлемой составляющей практически любого сайта, как формы. Имея возможность заполнения существенно большего количества форм в единицу времени, чем человек, такие программы служат основным источником спама в гостевых книгах, форумах и блогах. Еще одним из возможных применений автоматического заполнения форм является регистрация на множестве интернет-ресурсов с целью получения какой-либо выгоды, например регистрация сайтов в каталогах. Помимо этого crawler перемещается по сайту с относительно высокой скоростью, что резко увеличивает нагрузку на сервер, особенно при недостаточно оптимизированном движке сайта и/или недостатке ресурсов сервера, выделяемых на выполнение скриптов сайта.
Защита форм от автоматического заполнения
Наверняка многие из вас раньше слышали термин CAPTCHA, но боялись спросить: что же он значит? Как не трудно догадаться этот термин является аббревиатурой :). Расшифровывается она как "Completely Automated Public Turing test to tell Computers and Humans Apart". Для меня до сих пор остается загадкой по какому принципу выбирались слова для составления этой аббревиатуры, наверное тупо случайным образом :). Смысл этой фразы в переводе на русский можно передать как "полностью автоматический способ отличить человека от компьютера". Конечно же имеется ввиду не внешние различия, а особенности их поведения на просторах сети Интернет. В роли "компьютера" в данном случае как раз выступают программы, о которых шла речь в самом начале. Эта технология позволяет владельцам сайтов, желающих исключить (по крайней мере чисто теоретически, на практике же - минимизировать) посещение своего ресурса "плохими" "компьютерами", крайне затруднить их использование.
В основе этой технологии лежит тот факт, что у программ в большинстве случаев отсутствует даже какое-либо подобие образного мышления - они следуют заранее четко определенному алгоритму. Существует множество вариантов реализации защиты сайта с использованием этого недостатка компьютерных программ, но все они представляют некоторую проверку, предлагаемую пользователю и стремящуюся к удовлетворению следующего ряда требований:
- Современные компьютеры не должны иметь возможности точно ее пройти.
- Она должна быть "по зубам" большинству людей.
- Не должна полагаться на тот факт, что потенциальный "злоумышленник" просто не знаком с принципом работы данной проверки.
Более подробно о возможностях этой технологии можно узнать, прочитав запись о нескольких вариантах ее реализации.