Регистрация через AJAX

На одном малоизвестном ресурсе нужно было переделать процедуру регистрации на AJAX. Так просило начальство. Форма была переделана и все были счастливы. Позже был замечен побочный эффект: прекратился спам. Дело в том, что стандартные роботы парсят формы регистрации и отправляют запрос на адрес из атбрибута action.
Пример:
<form method="post" action="/registration.php">

Переделанная форма через ajax выглядит теперь так
<form method="post" action="/registration.php" onsubmit="registration()">

Функция registration() — javascript-функция, спрятанная в отдельном js-файле. В этой функции прописан путь к ajax-обработчику (например, /ajax/registration.php). Робот не может залезть так далеко и соответственно отправляет запрос на адрес из action, который уже не работает.

У данного способа есть два основных минуса:
Во-первых, мы выкидываем нормальных пользователей, у которых отключен javascript. Хотя, таких людей в эпоху web 2.0 становится всё меньше. По разным данным это количество 0.1-5%, в зависимости от географии, тематики ресурса и других факторов.
Во-вторых, данный метод защиты эффективен пока ресурс малоизвестен. Не составит никакого труда написать специальный обработчик для конкретного ресурса.

Оставить комментарий