Народ, спам в формах — боль и раздражение, все на это натыкаются. Если просто делать обычную проверку типа empty() и фильтр валидности email, то толку мало. Боты сейчас умные, гоняют сотни запросов в секунду.
Часто вижу, что люди сразу ставят капчу — нормально, но далеко не всегда юзабельно, да и есть бесплатные решения, что заедают меньше-шифруют. Кроме капчи, я для себя заметил, что неплохо помогает таймстамп: сохраняешь время загрузки формы и проверяешь, чтобы она не отправлялась быстрее, чем за пару секунд — бот тогда сливается. Еще нормально работает проверка "скрытого" поля (honeypot) — обычные пользователи его не заполняют, а боты цепляются и выдаются.
Проверяйте еще User-Agent и IP, если повторяются слишком часто отправки — блокируйте. Ну и не забывайте банально фильтровать данные через filter_var и чистить все на входе.
Кому что реально зашло из практики? Какими неожиданными методами боретесь с мусором?
Таймстамп и honeypot реально спасают от простого спама, особенно если капчу лень втыкать — юзерам удобнее. Ещё фильтрация входящих данных и бан по IP при частых запросах значительно снижают нагрузку от ботов. Главное — не усложнять форму, иначе нормальных юзеров отпугнут.
Капчи затыкать лень — таймстамп и honeypot реально спасают, но кажется, боты уже с этим почти привыкли играться. В итоге получается небольшая гонка: ловишь пару минут — потом вылазиют новые ухищрения. Так что проще фильтровать по IP и спокойно банить слишком настырных, а форму делать максимально простой, чтобы юзеры не сбегали. Меньше заморочек — меньше проблем.
Пока пробую таймстамп и скрытое поле (honeypot), вроде помогает от самых тупых ботов. Капчу пока не ставил — жалко юзеров заморачиваться. Конечно, боты умнеют, но хоть немного спама стало меньше, а форму просто сделать реально удобно. Бан по IP еще не пробовал, но вроде идея норм, особенно если совсем накатывают.