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


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

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

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

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

Author: Marius, 2009-01-27

14 answers

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

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

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

 12
Author: devio, 2009-01-27 20:48:30

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

 6
Author: Vilx-, 2009-01-27 20:40:32

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

Пара примеров, которые приходят на ум из того, что вы могли бы попробовать:

  • Есть скрытое поле формы с именем, которое звучит как то, что хотел бы заполнить спамер, например "веб-сайт" или "домашняя страница" или что-то в этом роде. Если поле формы заполняется, выбросьте сообщение вместо того, чтобы публиковать его, потому что это был бот, автоматически заполняющий всю форму, даже невидимые поля.
  • Вам не обязательно использовать "настоящий" капча, но даже что-то простое, например "Введите следующее слово задом наперед: " или "Каково доменное имя этого веб-сайта?". Человеку это легко сделать, но для этого потребуется довольно сложный бот, чтобы понять, что заполнять.
 5
Author: Chad Birch, 2009-01-27 21:17:05

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

 4
Author: CMS, 2009-01-27 20:41:35

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

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

 2
Author: Sasha, 2017-05-23 10:33:44

Включите КАПЧУ, которая всегда "оранжевая".

 2
Author: Instantsoup, 2009-01-27 21:30:33

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

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

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

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


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

 2
Author: MarkR, 2009-01-27 21:32:35

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

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

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

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

 2
Author: Kornel, 2009-04-05 15:56:07

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

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

 2
Author: Michael Borgwardt, 2009-12-16 14:39:07

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

 0
Author: Paul Tomblin, 2009-01-27 20:37:08

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

 0
Author: Mike Robinson, 2009-01-27 20:52:38

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

 0
Author: Joe Soul-bringer, 2009-01-27 21:30:43

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

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

 0
Author: Colin Niu, 2009-04-05 15:49:05

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

 -1
Author: Sloggendazs, 2013-05-09 01:36:09