Насколько эффективна техника honeypot против спама? - PullRequest
28 голосов
/ 02 сентября 2010

Под "honeypot" я подразумеваю более или менее эту практику:

#Register form
<style>
    .hideme{
        display:none;
        visibility: hidden;
    }
</style>
<form action="register.php">
    Your email: <input type="text" name="u-email" />
    Choose a password: <input type="text" name="passwd" />
    <div class="hideme">
        Please, leave this field blank: <input type="text" name="email" />  #the comment is for text-browser users
    </div>
    <input type="submit" value="Register" autocomplete=off />
</form>

//register.php
<?php
if($_POST['email'] != ''){
    die("You spammer!");
}
//otherwise, do the form validation and go on.
?>

подробнее здесь .

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

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

Кто-нибудь из вас имеет опыт работы с этой техникой? Это эффективно?

Ответы [ 4 ]

19 голосов
/ 13 ноября 2013

Старый вопрос, но я подумал, что я буду вмешиваться, поскольку я поддерживаю модуль для Drupal ( Honeypot ), который использует метод предотвращения спама Honeypot наряду с защитой на основе времени (пользователи не может отправить форму менее чем за X секунд, и X увеличивается экспоненциально с каждой последовательной неудачной отправкой). Используя эти два метода, я слышал о многих, многих сайтах ( примеров ), которые уничтожили почти весь автоматический спам.

У меня был лучший успех с Honeypot + timestamp, чем с любым решением на основе CAPTCHA, потому что я не только блокирую большинство спамеров, но и не наказываю своих пользователей .

9 голосов
/ 14 августа 2014

Используя метод ниже, я блокирую 100% спама.

  1. honeypot с дисплеем: нет. в случае неудачи запустите дополнительный скрипт для сбора IP-адреса и запишите его в файле .htaccess при запрете из строки.
  2. Количество номеров URL в поле комментариев. если не получится, предупредите только потому, что это может быть человек.
  3. измерьте время для публикации. если менее 5 секунд, покажите сообщение об ошибке и повторите попытку, потому что человек может писать довольно быстро с плагином автозаполнения.
  4. обрезать файл htaccess по умолчанию с помощью crontab, чтобы запрещенные строки не превышали 30 строк (скорректируйте соответственно).

Запретить доступ с IP-адресом очень эффективно, потому что боты продолжают пытаться проникнуть с одинаковыми IP-адресами (если они меняют IP-адрес, я добавляю этот новый IP-адрес в htaccess, так что никаких проблем). Я ежедневно обрезаю файл .htaccess с помощью crontab, чтобы он не был слишком большим. Я настраиваю количество IP-адресов, чтобы блокировать их, чтобы один и тот же бот с тем же IP-адресом блокировался в течение недели или около того. Я заметил, что один и тот же IP-адрес используется ботом в течение 3 дней, нападая несколько раз.

Первый трюк # 1 блокирует около 99%, а # 2 блокирует около 1%, и бот не пройдет через эти 2, поэтому # 3 может не понадобиться.

4 голосов
/ 02 сентября 2010

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

Я предпочитаю использовать reCaptcha .Но вышесказанное остановит некоторых ботов.

1 голос
/ 27 марта 2019

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

Одно поле ввода в каждой форме скрыто (отображение: ни один не указан в атрибуте класса CSS) со значением по умолчанию "". Для программ чтения с экрана и т. Д. Скрытая метка ввода дает понять, что поле следует оставить пустым. Не имея длины по умолчанию, мы используем код на стороне сервера (в нашем случае ColdFusion, но это может быть любой язык), чтобы остановить отправку формы, если в этом поле что-то есть. Когда мы прерываем отправку таким образом, мы даем ту же обратную связь с пользователем, как если бы она была успешной («Спасибо за ваш комментарий» или что-то подобное), поэтому нет никаких внешних признаков отказа.

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

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

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

Наконец, я упомяну, что такие решения, как reCaptcha, не обсуждаются. Мы потратили значительное время на разработку веб-приложения с использованием API Google Map, и оно работало до тех пор, пока Google не изменило их API без предупреждения и без рекомендаций по переходу. Мы не выйдем замуж за одного и того же оскорбительного супруга дважды.

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