Защита Froms от скриптового спама

Итак, у меня есть форма, которая может создать учетную запись, и прямо сейчас процесс создания учетной записи заключается в вызове REST API javascript. Я подумал, что это может быть очень легко взломать программно, поскольку все, что им нужно будет сделать, это посмотреть на javascript, чтобы узнать URL-адрес для спама, и что может быть безопаснее выполнять обработку в PHP-скрипте. Тогда я подумал, что они могут просто посмотреть на форму, чтобы найти URL-адрес, так же просто, если я не сделаю это через javascript. Форма будет обрабатывать только данные POST, но не уверена, что этого достаточно и имеет ли значение, обрабатываю ли я их через javascript или PHP.

Каков наилучший способ помешать кому-либо программно спамить форму (т. е. запретить им писать серверный, например PHP, или клиентский, например javascript, код для спама скрипта обработки).


person ryanzec    schedule 25.02.2011    source источник
comment
Прежде всего, чтобы ваша форма работала, клиент должен иметь всю информацию, необходимую для отправки формы. Поэтому вы ничего не можете сделать, чтобы помешать кому-либо получить эту информацию и использовать ее в сценарии. Лучшее, что вы можете сделать, это какая-то стратегия распознавания человека, например, Captcha, как предложил kjy112.   -  person Misko    schedule 25.02.2011
comment
предполагается, что у вас уже есть все проверки на стороне клиента и сервера для обязательных полей, очевидно. появляются другие новые «капчи», которые требуют от пользователя просмотра видео, но я думаю, что это слишком много для того, что вы делаете.   -  person KJYe.Name 葉家仁    schedule 25.02.2011


Ответы (3)


Один из способов — использовать Captcha для фильтрации ботов reCaptcha, но это не 100% защита.

person KJYe.Name 葉家仁    schedule 25.02.2011

Использование Captcha, вероятно, является первым методом: версия Google

Во-вторых, я бы выполнил проверку данных на стороне сервера и, возможно, проверку электронной почты, если электронная почта не проверена, у меня был бы cron для очистки строк в вашей таблице, которые не имеют проверки электронной почты.

С помощью этих двух методов вы должны избегать большинства из них.

person Petrogad    schedule 25.02.2011

Используйте reCAPTCHA. Это довольно легко.

Вы можете получить там пару ключей, зарегистрировав URL своего веб-сайта. Используйте этот ключ для создания изображения/текстового поля reCAPTCHA в вашей форме. Данные вашей формы будут опубликованы и добавлены в базу данных только в том случае, если запись соответствует тексту, отображаемому на изображении, в противном случае нет (это проверка на стороне сервера, которую вы должны сохранить). Вы получите много связанного кода в Google :)

Другой метод, как и большинство веб-сайтов в наши дни, заключается в отправке пользователю ссылки для активации учетной записи по электронной почте. Учетная запись будет создана только при нажатии на эту ссылку активации. Вы также можете установить время истечения срока действия (например, 24 часа) для этой цели.

Надеюсь это поможет.

person Barun    schedule 25.02.2011