День борьбы со спамом
Я очень не люблю ломать глаза, пытаясь разглядеть искорёженные буковки в капче и считаю, что большинству сайтов она не нужна, но как же тогда бороться со спамом? Мне кажется, я нашел достаточно действенное решение этого вопроса.
Наверно, всем известно, что спамят в комментах в основном боты — тупые скрипты, которые ищут в интернете страницы с формами и забивают в эти формы пакостные данные. Но кроме ботов, распространять спам в сети могут и реальные люди, люди, которым за это платят. Обычно, это индусы или просто школота, которая хочет заработать копеечку на мороженку. И есть капча может помочь против бота, то против человека она бессильна, особенно если этому человеку платят $2 за 100 распознанных каптч.
Как бороться с ботами
Википедия нам подсказывает, что капча помогает определить где человек, а где робот с помощью особого теста, который робот выполнить никак не сможет, а вот среднестатистический человек — запросто. Таких тестов изобрели превеликое множество, вот только несколько примеров:
- Картинка с текстом — наверно самая древняя и самая традиционная капча.
- Аудиокапча — вместо картинки с буквами нам проигрывают звуковой файл с цифрами — глаза не сломаешь, зато уши — запросто.
Вопрос-ответ — нас просят решить либо простенькое математическое уравнение, либо вспомнить, как называется голубой шарик, по которому мы все ходим.- Капча с картинкой — нужно либо перевернуть картинку верхом вверх, а низом — вниз в помощью специального ползунка, либо отметить на какой из картинок изображен определённый предмет.
- Пазл — это тоже капча с картинкой, но для самых хардкорных извращенцев — нужно собрать картинку из разрозненных частей. Очень увлекательно.
А как еще можно определить робота?
- Honeypot. Это, наверное, одна из самых древних методик выведения негодяев на чистую воду. Суть метода в том, что бы подсунуть злоумышленнику специально подготовленную систему, которую он неприменно захочет атаковать. Своеобразная подсадная утка. В переложении на
веб-формы , honeypot — это дополнительное поле в форме, которое обычные пользователи должны оставить пустым, например, потому что это поле скрыто. Рассчет на то, что бот станет заполнять все поля подряд, включая и нашеполе-ловушку . К сожалению, на мой блог ходят достаточно умные боты, чтобы не заполнять такие поля. - Сессия. Этот способ помогает защититься от
CSRF-атак . Суть его состоит в том, что, когда пользователь заходит на страницу с формой, мы в его сессию записываем некоторое число, которое называетсяCSRF-токен , а и в скрытое поле в форме вставляем его же. Если реальный человек зашел на страницу с формой, заполнил её и отправил, то число в его сессии и число, отправленное в скрытом поле формы совпадёт. Здесь рассчет на то, что боты не используют сессию — обычнобото-писателям лень возиться с куками — это раз. И еще боты не заходят на страницу с формой, они сразу посылают заполненные данные на сервер жертвы — это два. К сожалению, мои боты оказалось достаточно трудолюбивыми, чтобы делать и то и другое. - Javascript. Всем известно, что боты не умеют выполнять javascript. B даже всемогущий Google
едва-едва научился выполнять простенькие скрипты внутри страниц. Этого знания нам хватит, чтобы установить достаточно высокую стену на путиспам-ботов , нужно лишь сделатьчто-нибудь javascript’ом. Например, можно скриптом добавлять поле в форму, без которого форма будет считаться заполненной некорректно. Можно устанавливать javascript’омCSRF-токен из предыдущего пункта. Это защита будет эффективно работать против большинства обычныхспам-ботов и я считаю, что её достаточно для 99% сайтов в интернете. Разумеется, у пользователей с отключенным javascript’ом, отправить форму не получится, но они сами знают, на что идут. Однако, есликто-то вознамерился заспамить именно ваш сайт, то он конечно напишет такого бота, который выполнит или сэмулилрует все необходимые действия. - Последний рубеж обороны — самый надёжный и практически непробиваемый — использование сервисов типа Akismet или Mollom. Суть их работы в том, что они анализируют текст сообщений по
каким-то хитрым алгоритмам и выносят свой вердикт: спам или не спам. Если сервис Akismet известен любому владельцу блога на wordpress’е, то про сервис, который использую я у себя в блоге, знают немногие. Но называется Яндекс.Чистый Веб. Преимущество этого сервиса в том, что он использует ту самую Яндекс.Спамооборону, которая работает на Яндекс.Почте. И конечно эти сервисы замечательно работают и против железных ботов и против индусов из плоти и крови.
Надеюсь после этой статьи капч в интернете станет чуточку меньше. А если вы