Блокировка спама на PHP-сайте без беспокойства пользователя - PullRequest
6 голосов
/ 02 августа 2009

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

Есть ли какие-нибудь невидимые для пользователя альтернативы этим? Спасибо за вашу помощь.

Ответы [ 5 ]

8 голосов
/ 02 августа 2009

Одна вещь, которую вы должны знать о спамерах, это то, что они всегда идут за низко висящие фрукты. То же самое с хакерами. Под этим я подразумеваю, что они будут выбирать наиболее легко поражаемые цели, которые затрагивают большинство пользователей. Вот почему уязвимости PHP и Windows часто эксплуатируются: они затрагивают так много пользователей, что если вы обнаружите такую ​​слабость / эксплойт, ваш целевой «рынок» будет огромен.

Это также большая часть причины, по которой Linux и Mac OS остаются относительно невредимыми, например, из-за вирусов: целевой рынок намного меньше, чем Windows. Теперь я не приравниваю безопасность и надежность Windows к Mac / Linux, но даже несмотря на то, что модель безопасности последних двух гораздо лучше, количество атак на первое по-прежнему несоразмерно с имеющимися у него недостатками.

Я говорю это потому, что одним из лучших способов избежать подобных проблем является не использование популярного программного обеспечения. Например, phpBB провёл множество атак против него только потому, что он так популярен.

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

Поэтому я бы посоветовал:

  • Игнорирование ответов, которые приходят в течение, скажем, 5-10 секунд после отправки формы пользователю;
  • Использование honeypot (скрытые поля CSS / JS, как описано в другом месте);
  • Использование Javascript, где это применимо, для визуализации, изменения порядка или отображения формы;
  • Использование непредсказуемых имен полей формы; и
  • Дросселировать плохие ответы по IP.
6 голосов
/ 02 августа 2009

Не защищенное от бомб решение, но у вас могут быть некоторые скрытые поля ввода. Если они не оставлены пустыми, вы поймали бота. Боты, как правило, заполняют все поля ввода, а пользователи обязательно оставят поля, которые они не видят пустыми.

2 голосов
/ 02 августа 2009

Это сработало для меня 100% времени:

<input type="text" style="display:none" name="email" value="do not fill this in it is for spam catching" />

Тогда серверная часть (PHP):

if($_POST['email'] != 'do not fill this in it is for spam catching') {
    // spam
}

Как упоминалось ранее, большинство ботов заполняют все, особенно входные данные с именем "email".

0 голосов
/ 02 августа 2009

Существует два класса защиты от спама.

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

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

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

0 голосов
/ 02 августа 2009

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

Как будто вы хотите, чтобы ваш компьютер был безопасным, но вы не хотите использовать антивирус и брандмауэр.

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

...