Антиспам метод «Горшочек с медом»
На моем сайте есть форма отправки комментария. Через эту форму регулярно спам-боты оставляли всякую ерунду. Ерунду эту я чистил раз в день. Нездорово. Решил я придумать какой-то способ борьбы со всем этим безобразием. Делать CAPTCHA не хотел. Вообще не хотел чинить никаких препятствий пользователю. Поэтому реализовал простое решение, которое мне известно под названием Honeypot — «Горшочек с медом».
Смысл метода Honeypot прост, как и его реализация. Помимо настоящих полей ввода, делаются скрытые поля. Пользователь их не видит, следовательно, не может их заполнить. Если поле заполнено, комментарий не нужно добавлять. Почему пользователь не заполняет поле понятно, а почему спам-бот заполняет? В ловушке должна быть приманка. В качестве приманки выступает значение атрибута name.
<input type="input" name="email" value="" /> <input type="input" name="blablabla" value="" />
Бот, очевидно, умеет находить нужные поля и правильно их заполнять. Бот находит поле email, считает, что дело в шляпе, вбивает в него адрес (кстати, валидный). Заполняет тело комментария, отправляет форму. Обрабатывающий скрипт берет данные из поля blablabla. Это настоящие данные с которыми нужно работать. Скрипт также проверяет, есть ли что-то в поле email. Если есть, комментарий просто не будет добавлен в базу.
Несколько штрихов. Я не знаю, как работают боты. Но думаю, они не дураки. Если поле помечено, как hidden, бот может решить, что ловушка и искать другое поле. Поэтому я скрыл поле с помощью CSS, при этом не присваивал отдельный класс, а использовал селектор [name="email"]. Даже такого простого приема хватило, чтобы за сутки не было ни одного спам-комментария.
Комментарии
Михаил
Хороший метод, давно его использую
Валерий
Как скрыл через CSS? Если с помощью "display: none;", то некоторые боты смогут определить такой трюк. Надёжнее писать что-то вроде "position: absolute; left: -10000px;". А так метод весьма неплохой, сам использую его в течение нескольких лет.
Александр Черный
Я скрыл с помощью display:none. Вот уже неделю ни одного левого комментария. Вариант с большой отрицательной позицией мне нравится.
Максим Папежук
Очень полезное суждение. Спасибо.
vdxvxdvdxvxdvdxvdx
dvdxvxd