Как мне защитить свой форум от спама?
У меня есть форум на веб-сайте, который я осваиваю, который получает ежедневную дозу спама. В настоящее время я удаляю спам и блокирую IP. Но это работает не очень хорошо. Список заблокированных IP-адресов быстро растет, но так же быстро растет и количество спам-сообщений на форуме.
Форум - это полностью мой собственный код. Он построен на PHP и MySQL.
Каковы некоторые конкретные способы остановить спам?
Редактировать Я забыл упомянуть, что форум должен быть открыт для незарегистрированные пользователи для публикации. Что-то вроде комментария в блоге.
14 answers
В приложении для гостевой книги, которое я написал, я реализовал две функции, которые предотвращают большую часть спама:
Не разрешать отправку в качестве первого запроса в сеансе
Требовать действительную ссылку HTTP(r)при публикации
Один из способов, который я знаю, который работает, - это использовать JavaScript перед отправкой формы. Например, чтобы изменить метод с GET на POST.;) Спам-боты плохо выполняют JavaScript. Конечно, это также означает, что люди, не владеющие Javascript, не смогут пользоваться вашим сайтом... если вы заботитесь о них, то есть.;) (Примечание: я этого не делаю)
По моему опыту, лучшая простая защита заключается в том, чтобы просто делать что-то "нестандартное". Если вы сделаете свой сайт нестандартным, это приведет к тому, что любой автоматический спам придется кодировать специально для вашего сайта, что (без обид), вероятно, не стоит затраченных усилий. Обратите внимание, что если спам исходит от людей-спамеров, на самом деле вы ничего не можете сделать, чтобы не остановить законные постеры. Таким образом, цель состоит в том, чтобы найти решение, которое отбросит любые "стандартные" сообщения - это это "заполните всю форму и нажмите "отправить"".
Пара примеров, которые приходят на ум из того, что вы могли бы попробовать:
- Есть скрытое поле формы с именем, которое звучит как то, что хотел бы заполнить спамер, например "веб-сайт" или "домашняя страница" или что-то в этом роде. Если поле формы заполняется, выбросьте сообщение вместо того, чтобы публиковать его, потому что это был бот, автоматически заполняющий всю форму, даже невидимые поля.
- Вам не обязательно использовать "настоящий" капча, но даже что-то простое, например "Введите следующее слово задом наперед: " или "Каково доменное имя этого веб-сайта?". Человеку это легко сделать, но для этого потребуется довольно сложный бот, чтобы понять, что заполнять.
Вы можете использовать капчу, есть несколько хороших скриптов, таких как phpcaptcha или использовать службу контроля спама, например Akismet, у них есть PHP API.
Возможно, вы захотите взглянуть на этот вопрос, в котором есть несколько ответов, описывающих, как вы могли бы реализовать ненавязчивую капчу.
Еще одна вещь, которую следует учитывать, - это время между публикациями, чтобы предотвратить массовый спам.
Включите КАПЧУ, которая всегда "оранжевая".
Спам может быть от ботов или людей - боты более вероятны.
Чтобы остановить ботов, введите скрытое поле, заполненное Javascript - существует 99,5% вероятность того, что стандартный глупый бот, который не настроен для вашего сайта, не сможет его заполнить.
Если они не заполнят его правильно, дайте им сообщение о том, что требуется Javascript или что-то в этом роде, и дайте им возможность опубликовать его каким-либо другим способом (например, с помощью капчи или регистрации). Таким образом, анонимные пользователи, которые разве спам-боты не могут (в основном) по-прежнему публиковать сообщения без проблем, и большинство спам-ботов (которые не были адаптированы для вашего конкретного сайта) не будут.
Не беспокойтесь о занесении IP-адресов в черный список или использовании сторонних черных списков, это просто приведет к ложным срабатываниям. Почти все боты используют те же IP-адреса, что и (некоторые) законные пользователи.
Еще один трюк заключается в том, чтобы ввести текстовое поле с правдоподобно звучащим именем, которое трудно увидеть с помощью CSS - любой, кто заполняет это поле все, что угодно, считается ботом.
Передовые решения:
- Акисмет
- Дефенсио
- Сблам! ( с открытым исходным кодом клон вышеупомянутого)
Вы можете попытать счастья с нестандартной формой:
- поля, которые должны оставаться пустыми, скрыты с помощью CSS
- поля с вводящими в заблуждение именами, например
<input name=email>
для чего-то, что не электронное письмо.
Для меня КАПЧА - это все равно что сдаться спамерам и позволить им в любом случае повредить ваш форум – за исключением того, что вместо ущерба от спама вы получаете ущерб удобству использования и доступности.
Что-то, что я нашел удивительно эффективным: запретить комментарии, содержащие слишком много URL-адресов (больше, скажем, 5). С тех пор у меня не было ни одного спама с комментариями.
Редактировать: С момента написания вышеизложенного у меня был повторяющийся спам комментариев только с одной ссылкой. Теперь я добавил несколько полей для меда и уже несколько месяцев не получал спама с похвалами.
Не позволяйте никому публиковать сообщения, пока они не ответят на электронное письмо, отправленное на их зарегистрированный адрес электронной почты. Вы увидите, что множество форумов и списков рассылки генерируют уникальный адрес электронной почты или веб-адрес, который отправляется на указанный адрес электронной почты нового пользователя, и они должны ответить на электронное письмо или нажать на ссылку, чтобы завершить регистрацию.
Капча, безусловно, самый простой метод - попробуйте KittenAuth, если вам нужно что-то защищенное от ботов (хотя на этот раз у меня есть панды)
Однозначного ответа нет, поскольку спам - это действительно вопрос экономики: сколько стоит кому-то размещать свои материалы в Интернете. Однако есть некоторые решения, которые кажутся довольно хорошими
- Краткое описание
- Используйте CCS для создания невидимого поля , которое заполняют роботы
- Создайте в своей форме скрытое поле, зависящее от времени, чтобы робот не мог использовать одну и ту же форму снова и снова.
Я хочу сказать, что в большинстве случаев вам достаточно КАПЧИ, чтобы предотвратить спамеров. Но используйте сильный, например http://www.captcha.net/.
Помните, что спамеры не хотят тратить много времени на работу с конкретным сайтом (за исключением сайтов с интенсивным трафиком), они используют инструмент для размещения рекламы на многих сайтах. Поэтому сделайте свою ФОРМУ немного необычной (например, дайте пользователю изображение с надписью "1.5+2.4=?" и позвольте пользователям отвечать, это заблокирует большинство инструментов для рассылки спама:))
Самое простое, что я сделал, чтобы остановить спамеров с (до сих пор) 100% согласованностью, - это проверить отправленный текст. Если вы используете функцию php strstr() для проверки наличия "href" или даже некликабельного http или www, вы можете просто перенаправить спамера в другое место. На самом деле у меня есть скрипт, который затем записывается в мой файл.htaccess, чтобы отклонить IP-адрес нарушителя. Не уверен, что есть какой-либо другой вид спама, о котором стоит беспокоиться, но ссылки - это все, что я видел до сих пор.