Методы защиты сайта от спама, защита HTML форм

Добавлен: 

Методы защиты сайта от спама, защита HTML форм

Антиспам

Множество сайтов, стараясь защититься от спамеров, слишком сильно увлекаются этой задачей, забывая про юзабилити сайта. Я думаю, многих из нас раздражает ввод каптчи (картинка с символами) при регистрации или отправке комментариев, данная защита, конечно обеспечивает определённый уровень безопасности, но вот на сколько она оправданна? – это вопрос. В данной статье мы поговорим о различных видах защиты HTML форм, о их достоинствах и недостатках, а в конце сделаем вывод, о том какие методы лучше всего использовать. Способы защиты сайта с помощью специальных сервисов мы рассматривать не будем, так как хочется пользоваться своим кодом, а если и чужим, то по крайней мере не от кого не зависеть.

Для начала, следует разделить все способы защиты на защиту типа КАПТЧИ (CAPTCHA) и защиты БЕЗ каптчи. Основная задача каптчи, предоставить пользователю задачу, с которой легко справится человек, но это задание будет гораздо сложнее для программы.

Защита через каптчу

Графическая каптча

Изображение, на которм находятся произвольные символы которые нужно переписать в специальное поле. Таким образом, посетитель подтвердит то, что он человек, а не бот. Для усложнения автоматического распознавания каптчи, символы на картинке искажаются, накладываются друг на друга, немного сливаются с фоном и т.д.

На сегодняшний день, большинство графических каптчей могут быть распознаны автоматически, а самые сложные, могут быть отправлены в в специальные сервисы для ручного разгадывания. Стоимость таких услуг составляет 1$ за 1000 каптчей. Таким образом, графическая каптча не может обеспечить серъёзной защиты для сайта, да и к тому же сложная каптча способна отфильтровать не только автоботов но и простых пользователей, которые не смогут с первого раза прочитать каптчу и просто уйдут. Исходя из вышесказанного, становится ясно, что на сколько сложна бы не была каптча, её могут распознать вручную, на специальных сервисах “за копейки”, и просто нет смысла усложнять её, и к тому же сложная каптча скорее отфильтрует некоторых пользователей чем обученных ботов.

Каптча – задачка (текстовая кптча)

Как правило текстовая (а возможно и графическая) каптча предлагающая посетителю выполнить нехитрые задачки типа “2+2=”, или написать цифрой, написанную прописью число. Несложные задачки не сильно обременяют пользователя, но всё же отнимают лишнее время. Подобная защита может быть разгадана ботом при помощи обновляющейся базы программ спамеров, база состоит из ранее подготовленных ответов разгаданных людьми. Создание такой базы становится возможным, так как не имеет большого количества вариаций, таких как с графической каптчей. Но даже не создавая такой базы, её можно пробить брутфорсом - прямым перебором возможных значений.

Интерактивные каптчи

Представляет собой приложение, как правило на flash, которое предлагает собрать картинку из пазлов или задачки на логику с расположением картинок и т.п. Каптча подобного типа будет работать, только если у пользователя установлен flash плагин. Данный вид каптчи пока не сильно распространён, и по сему имеет наивысший уровень зашиты. Разгадать флешь ребус автоматически будет ОЧЕНЬ сложно, а отправить его на ручное разгадывание скорее всего невозможно, так как flash аплет можно защитить выполнением только на определённом домене. Но данный вид каптчи всё равно уязвим для брутфорса, так как не имеет большого количества вариантов решения (до 1000), да и к тому же можно создать базу готовых ответов не выполняя задачи.

Оценка эффективности каптчи

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

Защита сайта от спама без каптчи

Основным преимуществом безкаптчевой защиты является юзабилити сайта, пользователя не напрягают глупые задачки и угадывание трудночитаемого текста. Но большинство безкаптчевых методов довольно просто обходятся при помощи самописных скриптов или управляемых браузеров. Рассмотрим основные способы защиты HTML форм без каптчи начиная с самых неординарных, и заканчивая самыми адекватными. Совсем глупые способы описывать мы всё же не будем, типа “по времени заполнения формы”, фильтрации HTTP заголовков, анализа HTTP REFFER или анализа USER AGENT. И так, приступим.

Ловушки для ботов

 Данный способ защищает не саму HTML форму, а сайт от ботов в целом. Принцип такой ловушки состоит в создании какой-то страницы или раздела сайта, на которую ведут ссылки с “нормальных” страниц  вашего сайта, но эти ссылки скрыты от глаз пользователя при помощи CSS стилей (overflow:hidden;). Таким образом, обычный пользователь НИКОГДА не найдёт данный раздел сайта, а бот, который тупо парсит HTML страницы в поисках форм и ссылок, с лёгкостью найдёт такую ссылку и заглянет в данный раздел. И тут срабатывает ловушка – IP адрес этого бота сыпется в БАН-лист сайта, и он уже не сможет бродить по сайту с этого IP. “Нормальным” роботам (типа поисковых Google или Yandex), через файл robots.txt сообщается, о том, что в раздел-ловушку ходить не надо.

Пожалуй, недостатков у данного метода больше чем достоинств, ну поехали: обойти данные ловушки очень просто, можно научить бота читать тот же robots.txt, можно вручную найти такой раздел и “сказать” боту не ходить туда. А можно научить бота понимать ухищрения на CSS и не ходить по таким ссылкам. Управляемый браузер вообще не попадёт в такой раздел, так как просто “не увидит” этих ссылок. Но даже если представить что это на 100% рабочий метод, и он заблокирует всех плохих ботов, не нужно забывать, что за заблокированным IP бота может быть целая сеть невинных юзеров, которые не получат доступа к вашему сайту. И с другой стороны, бот, может запросто сменить IP, через анонимный проси и продолжит успешно спамить ваш сайт.

Ловушки в HTML форме

Уже теплее, данный метод может послужить надёжной защитой от большинства скриптов, но не будем забегать вперёд. Данная защита, по принципу очень схожа с предыдущей, но имеет более адекватный результат. В HTML форму добавляется скрытое поле (возможно и не одно), скрытое – значит не type="hidden", а type="text", но скрыто визуально всё теми же приёмами на CSS, а на стороне сервера, в обработчике формы добавляется условие, что заполнение формы является правильной только при условии что наши скрытые поля будут пустыми. И что у нас получится: пользователь, который просто не видит скрытое поле НЕ заполнит его – оно останется пустым, а подавляющее число ботов, которое просто спарсило HTML форму не думая о стилях обязательно заполнит эту форму. Обработчик форму получит “неправильную” форму и просто не добавит её. Все указанные выше (ловушка для ботов) методы обхода защиты применимы и тут, так что это не панацея, а лишь защита сайта от ботов не настроенных специально на вашу защиту. То есть, если у вас сайт – гигант, то ботов будут учить обходить вашу защиту, а если у вас сайт с небольшой посещаемостью, то получится как в анекдоте про неуловимого Джо…

Ловушка со скрытым полем и HTML сущностями

Принцип построения идентичен с предыдущим, но с той разницей, что вместо пустого поля, отправляются HTML сущности типа (<> " &), любой браузер преобразует эти сущности в присвоенные им знаки (<>"&), а бот, скорее всего вернёт сущности без изменений. Как стало понятно, от управляемого браузера это не защита, и описанные выше уязвимости применимы и сюда.

Защита на JS

Пожалуй, саамы адекватный и “красивый” способ безкаптчевой защиты. Игры со стилями, поисковики могут понять неправильно, и это кончится печально, а с JS никаких проблем. Один из примеров с описанием JS защиты приведен тут. Большинство современных ботов не смогут обойти подобную защиту (без ручного вмешательства конечно под конкретный пример), научить бота обходить такую защиту будет на много сложнее, чем в предыдущих видах ловушек, но и не составит особой сложности. И по-прежнему, для управляемого браузера этот вид защиты не будет даже заметен.

Итоги

Можно с уверенностью сказать, что панацеи от спама нет и быть не может, какую бы человек не придумал защиту, её сможет обойти другой человек (в нашем случае), но стоит заметить, что если постоянно менять, скажем алгоритм защиты на JS, то спамеры просто не в состоянии будут всё время обучать бота и ваш сайт с плавающим алгоритмом защиты будет защищён от ботов такого типа. Но с другой стороны, чего бы вы не придумали на JS или на другой ловушке, управляемы браузер даже не спотыкнётся. С управляемым браузером можно бороться только при помощи каптчи любого вида. Графическая каптча разгадывается “на ура” на автомате или руками. А вот интерактивная или текстовая каптча с вопросами и задачками будет разгадана только по базе готовых ответов, а если такая каптча будет тоже плавать? – то есть генерироваться разные вопросы или картинки и т.д. то и базу писать-то нет на что. Единственным решением останется только отправить такую каптчу на ручной анализ, но и этому можно воспрепятствовать используя каптчу на FLASH с защитой по домену на выполнение, то есть флешь каптча будет работать только на домене вашего сайта, и отправка её на ручной разбор ничего не даст. Но FLASH каптча – это ещё одно узкое место, у некоторых пользователей не установлен флешь плеер. А с другой стороны, интерактивная и текстовая каптча имеет ограниченное количество вариантов ответов и уязвима для брутфорса, и тут уже понадобится простенький фаервол с анализатором лога, который не допустит слишком быстрых/частых попыток отправить форму для одной сессии/IP/User agent. Но и эту защиту можно обойти используя БОТНЕТ или много прокси, и так можно продолжать до бесконечности.

Главное не перестараться, ведь у нас задача не просто обеспечить супер безопасность, но и найти компромисс с юзабилити и доступными ресурсами посетителей (FLASH, JS..), можно прикрутить отправку уникального кода на СМС, и это станет страшным ударом для спамеров, но не менее сильным будет удар и по обычным пользователям которые не станут вводит свой номер телефона, ждать СМС, вводить секретный код лишь для отправки комментария (пример).

Подводя итоги, становится ясно, что, для мощной защиты своего сайта от спама нужно использовать оба метода в комплексе, и использовать их стоит в самых простых реализациях, которые не отнимут у посетителя больше 2-3 секунд. Но самое главное, это создать динамику обоих видов защиты, а это уже гораздо сложнее – алгоритмы защиты и вопросы/ответы каптчи должны постоянно меняться. И учитывая ограниченность интерактивной и текстовой каптчи (возможность брутфорса), не стоит забывать про простой фаервол с анализатором логов.

P.S. если у вас пока не большой проект, и он не имеет большой посещаемости, то не стоит сильно заморачиватся, используйте любой вид безкаптчевой защиты (например предложенный выше на JS)или придумайте свой и будет вам счастье.

P.P.S не стоит сильно полагаться на защиты в популярных CMS и движках форумов, эти движки лакомые для всех спамеров, так как на них поднято много сайтов, и их все можно спамить по одному алгоритму.

Не забываем оставлять комментарии и отзывы, нам важно ваше мнение!

А еcли статья Вам очень понравилась и Вы считаете, что она достойна внимания. Тогда просто поделитесь ею, в социальной сети:


Интересная рекламма:


Возможно вам будет интересно
JS антибот для сайта, избавляемся от спама Самостоятельное продвижение сайта в поисковых системах Семантическое ядро сайта, как правильно составить семантическое ядро

Комментарий добавил: Гость - уйуйуйуй
Добавлен: 26 06 2013 22:28:08
Гость - уйуйуйуй
хай

Комментарий добавил: Гость - 1
Добавлен: 14 07 2013 14:37:56
Гость - 1
1

Комментарий добавил: Гость - michael
Добавлен: 05 05 2014 18:07:51
Гость - michael
onsubmit="window.document.comentform.antibot.value=7452 + 45134"

Комментарий добавил: Гость - йй
Добавлен: 09 06 2016 14:08:55
Гость - йй
сайт защитил себя от спама )) fghfhfhffdghbfghfghnbfgdhfgbdfgbfbhdghfghfbghfgbbhfghfgb

Комментарий добавил: Гость - Да хуй знает
Добавлен: 05 07 2016 22:11:06
Гость - Да хуй знает
По моему лажа это все

Добавление комментария

Имя -

E-mail -





Читать в Яндекс.Ленте

Яндекс.Метрика


Power by xDroid. Copyright © 2009 - 2016 VEB.name
Копирование информации только с обратной ссылкой
Время генерации страницы : 0.0111 сек.