214-697-723 |
info@mainsource.ru |
(812) 946-31-81
Все контакты
Автор статьи Алексеев Андрей
Оригинальная защита от спама средствами AJAX на примере проекта, построенного на фреймворке Ruby on Rails
Для того, чтобы защитить систему от спама, надо, прежде всего, понять, как работают спамилки. Итак,
бот заходит на вашу страничку, на которой есть форма отправки сообщения и ищет код этой формы
в исходном коде страницы. Когда он находит соответствующий тег <form> он берет из него атрибут
action, чтобы знать куда ему сабмитить форму и собирает информацию по поводу полей этой формы.
Далее спам-бот просто посылает информацию на страницу, взятую из атрибута action, post-
или get-методом, заканчивая свое «черное» дело. Возможно, на пути робота встанет CAPTCHA,
но уже давно у современных спам-ботов есть алгоритмы по взлому всех стандартных картинок защиты.
Остается либо установить сложную CAPTCHA, либо придумать какой-то оригинальный способ защиты.
Мы поговорим о втором способе, так как о первом (установка CAPTCHA) уже много сказано в интернете.
Идея метода заключается в том, чтобы скрыть от спам-бота код формы отправки сообщения, таким образом у него
даже не будет информации о том, есть ли на данной странице форма отправки сообщения (комментария) или нет.
Изначально формы на странице не будет и она будет подгружаться AJAX-ом
(Asynchronous Javascript and XML — «асинхронный JavaScript и XML») по требованию пользователя,
решившего оставить комментарий.
Так выглядит область страницы, где можно оставить комментарий.
То есть изначально на этой странице нет формы для отправки сообщения, она появится позже.
Код вышеописанной области в данный момент выглядит так:
Таким образом, спам-бот злоумышленника не сможет определить параметры формы, необходимые для спама,
в автоматическом режиме. Такой метод можно обойти вручную, просмотрев DOM-дерево с помощью JS (JavaScript)
через строку браузера либо плагинами к разным браузерам, и выудив нужные параметры. Но, таким мало кто
станет заниматься, тем более для этого нужны соответствующие знания, так что данный метод можно считать
достаточно стойким к спаму.
К тому же, в базу спам-ботов сайт с такой защитой не попадет, так как, когда его будут сканировать на
наличие форм обратной связи, скан-бот просто не найдет таковой на этом сайте.
По своему опыту могу сказать, что, имея 3 проекта с такой защитой в течении 2 лет они ни разу не подвергались
атаке спам-ботов.
Удачи вам при защите своих сайтов и сайтов заказчиков от спама!
Спасибо, интересная статья. Я у себя немного по другому реализовал. Я оставил форму обратной связи в коде страницы, но она не имеет кнопочки submit. То есть кнопка есть, но обычная картинка, при нажатии на которую включается обработчик формы на ajax и отправляет форму другому скрипту. Конечно можно передать данные напрямую нужному скрипту если подсмотреть код. Но этим никто не занимается.