#php #spam #spam-prevention
#php #спам #предотвращение спама
Вопрос:
В настоящее время я создаю систему обмена сообщениями PHP и, похоже, не могу придумать подходящий способ остановить спам-атаки. Из этой формы будет отправлено сообщение (упрощенное, чтобы содержать основные сведения):
<form action="messages/send" method="POST">
<input type="text" name="message" />
<input type="hidden" name="recipient" value="10" />
<input type="submit" value="Send" />
</form>
В скрытом поле выше хранится идентификатор получателя. Эти данные НЕ защищены на этом сайте и доступны для просмотра людям (например, facebook; profile.php? id = 45345345.)
При отправке формы серверный PHP выполняет следующие проверки:
- Вошел ли отправитель в систему?
- Разрешено ли отправке связываться с получателем?
- Содержит ли сообщение что-нибудь? (Не пустой)
Проблема, о которой я подумал, заключается в том, что кто-то может легко создать простой скрипт, который может автоматически увеличивать значение «получатель» в форме и, по сути, отправлять сообщение для всего сайта. Какие другие внутренние проверки PHP или другие типы проверок могут быть выполнены, чтобы предотвратить это?
Комментарии:
1. Добавьте капчу, случайно сгенерированный небольшой текст, который нужно написать перед отправкой формы. Это позволит избежать неожиданных запусков скриптов.
2. Сохраните значение получателя в сеансе пользователя, а не в форме
Ответ №1:
Вы могли бы добавить несколько вещей:
- CSRF
- Проверка на стороне сервера и на стороне клиента
- captcha — [http://www.smashingmagazine.com/2011/03/04/in-search-of-the-perfect-captcha /]
- Скрипт Roboo. В этом году она была продемонстрирована в Blackhat и также обеспечивает некоторую защиту DOS.
- Добавление скрытого поля honeypot, которое никогда не должно быть завершено. Вы можете использовать Javascript, чтобы автоматически заполнять это при отправке законных форм и проверять на стороне сервера.
- Скорость измеряется, например, как быстро отправляется форма.
Взгляните на — https://security.stackexchange.com/questions/4235/how-should-i-secure-a-contact-form-that-appears-on-every-page-of-a-website