Делать CAPTCHA временно липкой для пользователя? - PullRequest
0 голосов
/ 07 марта 2011

У меня есть форум, на котором разрешено публиковать анонимные сообщения, защищенные CAPTCHA.Для удобства пользователей я установил Cookie для такого пользователя, который длится около месяца, чтобы пользователь не получал CAPTCHA снова и снова.В простейшей форме файл cookie называется no_captcha_for_one_month, а его значение равно 1.Когда пользователь возвращается и публикует анонимно, он получает не CAPTCHA.

Кто-нибудь видит недостаток?Спаммеру на форуме нужно всего лишь один раз правильно заполнить CAPTCHA и использовать информацию о cookie-файлах для своего бота. Вот и он.

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

У кого-то у меня складывается впечатление, что вопрос глуп, и я пытаюсь решить что-то неразрешимое.

Ответы [ 5 ]

2 голосов
/ 07 марта 2011

Я бы порекомендовал внедрить ваши значения cookie + соль для решения не вашей проблемы, а по соображениям безопасности. Как объясняется в этом блоге WordPress, была похожая, хотя и гораздо более серьезная проблема из-за плохой безопасности файлов cookie. В вашем случае определенный спамер всегда может обойти вашу CAPTCHA, даже если срок действия файла cookie истек.

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

Редактировать: я должен также упомянуть, что вы можете сделать ваш форум менее привлекательным для спамеров, в первую очередь, добавив атрибут rel = "nofollow" в ссылки, отправленные пользователями. См. Википедия .

1 голос
/ 07 марта 2011

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

0 голосов
/ 04 октября 2013

Зашифруйте время (в пико или нано секундах), установите его в качестве входного значения () и установите его в базе данных с именем столбца 'hash'

установите это на каждой странице и посмотрите, соответствует ли оно БД.

0 голосов
/ 07 марта 2011

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

Хранение переменной на стороне сервера решает проблему, о которой я упоминал;Вы устанавливаете случайный хэш в качестве файла cookie, и у вас есть таблица, в которой хранится статус CAPTCHA на сервере.Чтобы спаммер не получил CAPTCHA, ему нужно угадать хеш с правильной переменной, хранящейся на стороне сервера, что очень трудно сделать.

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

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

0 голосов
/ 07 марта 2011

Как сказано ниже, cookie можно легко взять из браузера и вставить в код бота, поэтому решение не является надежным.

Другие решения:

  • Найтинекоторые пользователи часто публикуют сообщения на форуме и спрашивают их, хотят ли они быть модераторами.Форум, подобный AutoHotkey, использует эту систему, и это прекрасно работает.Спамеры склонны избегать активных форумов, где модерация быстрая и эффективная.Они предпочитают мертвые форумы ...
  • Ограничить количество анонимных сообщений на один IP-адрес.Может быть раздражающим для пользователей, но может избежать наводнения спама.Должен быть установлен, только если вы испытываете такое затопление.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...