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

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

Форум – это мой собственный код. Он построен в PHP и MySQL.

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

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

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

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

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

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

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

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

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

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

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

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

Включите CAPTCHA, который всегда «оранжевый».

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

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

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

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


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

Расширенные решения:

  • Akismet
  • Defensio
  • Sblam! (клон с открытым исходным кодом выше)

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

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

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

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

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

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

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

  • Kitten Auth

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

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

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

Помните, что СПАМЫ не хотят тратить много времени на работу с определенным сайтом (за исключением сайтов с интенсивным трафиком), они используют инструмент для публикации AD на многих сайтах. Поэтому сделайте FORM немного необычным (например, дайте пользователю изображение «1.5 + 2.4 =?» И дайте пользователям ответить, это блокирует большинство спамовых инструментов :))

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