Как мне защитить свой форум от спама? - PullRequest
6 голосов
/ 27 января 2009

У меня есть форум на веб-сайте, который я осваиваю, который получает ежедневную дозу пронического спама В настоящее время я удаляю спам и блокирую IP. Но это не очень хорошо работает. Список заблокированных IP-адресов быстро растет, но увеличивается количество спам-сообщений на форуме.

Форум полностью мой собственный код. Он построен на PHP и MySQL.

Какие есть конкретные способы остановить спам?

Редактировать Я забыл упомянуть, что форум должен быть открыт для незарегистрированных пользователей. Вроде как комментарий в блоге.

Ответы [ 14 ]

12 голосов
/ 27 января 2009

В приложении для гостевой книги, которое я написал, я реализовал две функции, которые предотвращают большую часть спама:

  • Не разрешать POST в качестве первого запроса в сеансе

  • Требуется действительный HTTP Referr (r) er при публикации

6 голосов
/ 27 января 2009

Один из способов, который мне известен, - использовать JavaScript перед отправкой формы. Например, чтобы изменить метод с GET на POST. ;) Спам-боты паршивые при выполнении JavaScript. Конечно, это также означает, что люди, не являющиеся Javascript, не смогут использовать ваш сайт ... если вы заботитесь о них. ;) (Примечание: я не знаю)

5 голосов
/ 28 января 2009

По моему опыту, лучшая легкая защита - это просто делать что-то "нестандартное". Если вы делаете свой сайт нестандартным, это делает так, что любой автоматический спам должен был бы быть закодирован специально для вашего сайта, что (без обид), вероятно, не стоит усилий. Обратите внимание, что если спам исходит от людей-спамеров, вы не сможете ничего сделать, что также не остановит законных постеров. Таким образом, цель состоит в том, чтобы найти решение, которое будет отбрасывать любые «стандартные» сообщения, то есть «заполнить всю форму и нажать Подтвердить».

Несколько примеров, которые вы можете вспомнить:

  • Имейте скрытое поле формы с именем, которое звучит как что-то, что спамер хотел бы заполнить, например, "веб-сайт" или "домашняя страница" или что-то в этом роде. Если поле формы заполнено, выбросьте сообщение вместо публикации, потому что это был бот, автоматически заполняющий всю форму, даже невидимые поля.
  • Вам не нужно использовать «настоящую» капчу, но даже что-то простое, например «Введите следующее слово в обратном направлении: <случайное обратное слово>» или «Каково доменное имя этого веб-сайта?». Это легко сделать человеку, но потребуется довольно сложный бот, чтобы понять, что ему заполнить.
4 голосов
/ 27 января 2009

Вы можете использовать капчу, есть несколько хороших скриптов, таких как PHPCaptcha или использовать службу контроля спама, например Akismet , у них есть PHP API .

2 голосов
/ 05 апреля 2009

Что-то, что я нашел удивительно эффективным: запретить комментарии, содержащие слишком много URL-адресов (больше, чем, скажем, 5). С тех пор у меня был нулевой спам в комментариях.

Редактировать: С момента написания выше, у меня был повторяющийся спам в комментариях только с одной ссылкой. Теперь я добавил несколько полей honeypot и уже несколько месяцев не получаю похвального спама.

2 голосов
/ 05 апреля 2009

Передовые решения:

Вы можете попытать счастья с нестандартной формой:

  • поля, которые должны оставаться пустыми с помощью CSS
  • поля с ошибочными именами, например, <input name=email> за то, что не электронное письмо.

Для меня CAPTCHA - это все равно, что бросить спаммеров и позволить им повредить ваш форум в любом случае - за исключением того, что вместо урона от спама вы получаете ущерб от удобства использования и доступности.

2 голосов
/ 28 января 2009

Спамом могут быть боты или люди - боты более вероятны.

Чтобы остановить ботов, поместите в скрытое поле, заполненное Javascript - с вероятностью 99,5% стандартный глупый бот, не настроенный для вашего сайта, не сможет его заполнить.

Если они не заполнили его правильно, сообщите им, что Javascript необходим или что-то в этом роде, и дайте им возможность опубликовать другим способом (например, с помощью капчи или регистрации). Таким образом, анонимные пользователи, которые не являются спам-ботами, могут (в основном) по-прежнему публиковать сообщения без проблем, а большинство спам-ботов (которые не были адаптированы для вашего конкретного сайта) не будут.

Не беспокойтесь о внесении в черный список IP-адресов или использовании сторонних черных списков, которые будут генерировать ложные срабатывания. Почти все боты используют те же IP-адреса, что и (некоторые) законные пользователи.


Еще одна хитрость заключается в том, чтобы вставить текстовое поле с правдоподобно звучащим именем, которое трудно увидеть с помощью CSS - любой, кто заполняет это поле чем-либо, считается ботом.

2 голосов
/ 28 января 2009

Включите капчу, которая всегда "оранжевая".

2 голосов
/ 27 января 2009

Возможно, вы захотите взглянуть на этот вопрос , в котором есть несколько ответов, описывающих, как можно реализовать неинтрузивную капчу.

Еще одна вещь, которую следует учитывать, - это время между сообщениями для предотвращения массового рассылки спама.

0 голосов
/ 09 мая 2013

Самое простое, что я сделал, чтобы остановить спаммеров с (пока) 100% -ной согласованностью, - это проверить отправленный текст. Если вы используете функцию php strstr () для проверки на наличие «href» или даже не активируемых http или www ссылок, вы можете просто перенаправить спамер в другое место. На самом деле у меня есть скрипт, а затем написать в мой файл .htaccess, чтобы отрицать нарушающий IP-адрес. Не уверен, стоит ли беспокоиться о каком-либо другом спаме, но ссылки - это все, что я видел до сих пор.

...