header image
 

альтернатива “captcha”

2 года назад делал заказ… CMS для одного новостного агентство. Все было нормально, клиент был доволен, вебмастер тоже… но вот через месяц вебмастер стал жаловаться что не успевает удалять SPAM из комментарий, а те поступали пачками… ну я поставил capcha, но не опен-сорсны… а сам написал… ну такой, простенький, без заморочек… ну, неделю он был рад… но не долго… ситуация почти не изменилось…

Теперь уже не помню почему, но не-как не хотелось ставить нормальный capcha… и начал думать… как делаются spam-ы…

Вариант первый.
spamer приходит на сайт находит там форму комментариев (на пример :) ) , открывает коде странички, находит эелементы формы с их атрибутами “name”, и начинает генерировать POST/GET запросы к серверу уже со своими значениями для каждого элемента формы…

Вариант второй.
spamer парсит исходник страницы парсером, и парсер сам находит все формы и их элементы… а дальше по тому же сценарию…

И тогда у меня возникла идя… Правда она не избавляет нас от спама на 100%, но ведь и capcha тоже ;). Этим методом мы избавимся от спамеров работающих первым варианто, и с значительной частью со вторым. Да и потом, не думаю что спамеру работающий со вторым вариантом (парсером) выгодна спамить при каждем парсе странички только один раз…

И вот в чем ее суть…

в PHP генерируем hash для каждого элемента формы и храним их в $_SESSION-е…

$_SESSION['formItems']['name'] = substr(md5(rand(0, 99999)), 0, 8);
$_SESSION['formItems']['email'] = substr(md5(rand(0, 99999)), 0, 8);
$_SESSION['formItems']['comment'] = substr(md5(rand(0, 99999)), 0, 8);

и в HTML-е соответственно…

<form action=”#” method=”post”>
<input name=”<?=$_SESSION['formItem']['name']?>” />
<input name=”<?=$_SESSION['formItem']['email']?>” />
<textarea name=”<?=$_SESSION['formItem']['comment']?>”></textarea>
</form>

После отправки данных через POST PHP уже имеет доступ к ним через ту же $_SESSION.

И так что мы имеет после этого… каздый раз у нас разные имена для элементов формы.

П.С.
Мой клиент уже полтора года не получает spam в комментариях

~ от arambadalyan on Февраль 29, 2008.

Ответить