Как защитить форум от спама?

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

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

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

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

14 ответов


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

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

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


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


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

несколько примеров, которые приходят на ум вещей, которые вы могли бы попробовать:

  • есть скрытое поле формы с именем, которое звучит как то, что спамер хотел бы заполнить, например " веб-сайт "или" домашняя страница " или что-то в этом роде. Если поле формы заполняется, выбросьте сообщение вместо того, чтобы отправлять его, потому что это был бот, автоматически заполняющий всю форму, даже невидимые поля.
  • вы не нужно использовать "настоящую" капчу, но даже что-то простое вроде "введите следующее слово назад: " или "каково доменное имя этого сайта?". Легко для человека, но для этого потребуется довольно сложный бот, чтобы выяснить, что заполнять.

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


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

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


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


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

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

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

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


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


продвинутые решения:

вы можете попробовать свою удачу с нестандартной форме:

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

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


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

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


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


Captcha, безусловно, самый простой метод-попробуйте KittenAuth, если вы хотите что-то бот-доказательство (хотя я получил панд на этот раз)


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

  • Recaptcha
  • использовать CCS для создания невидимого поле что роботы заполнить
  • создайте определенное по времени скрытое поле в форме, чтобы робот не может использовать одну и ту же форму снова и снова.

Я хочу сказать, что в большинстве случаев, CAPTCHA достаточно для вас, чтобы предотвратить спамеров. Но используйте сильный, как http://www.captcha.net/.

помните, что спамеры не хотят тратить много времени на работу с конкретным сайтом(кроме сайтов с интенсивным трафиком), они используют инструмент для размещения рекламы на многих сайтах. Поэтому сделайте свою форму немного необычной (например, дайте пользователю изображение " 1.5+2.4=? и пусть пользователи отвечают, это заблокирует большинство инструментов спама:))


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