Какие существуют методы для предотвращения нескольких заявок на участие в конкурсе?

Проект

У нас есть соревнование, закодированное в PHP, с CodeIgniter. Форма имеет проверку на адреса электронной почты и номера мобильных телефонов. Сама страница размещается внутри iframe в другом домене (это отношения агентства и клиента).

Эта проблема

Мы получаем пользователей с тысячами записей. Мы знаем, что они фальшивые, потому что:

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

Однако IP-адреса уникальны, записи распределены на несколько дней, сами домены имеют записи MX, пользовательские агенты выглядят нормально.

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

Вопрос

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

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

3 ответа

Решение

Минусы капчи:

  1. Пользователи ненавидят это, и это может расстраивать, если реализовано плохо (например, неудачная капча сбрасывает другие поля формы).
  2. Законным пользователям может быть сложно завершить, когда письма трудно читать.
  3. Не всегда работает Кто-то просто обманул Ticketmaster, обыграв ReCAPTCHA несколько месяцев назад, например *.
  4. Ужасно, больше кода для реализации, и это перекладывает бремя или ответственность от вас на пользователей. Доказать, что вы человек, не то, что я хочу видеть при отправке формы, очень обидно.

@ Ник получил правильную идею, используйте проверку текста / электронной почты. Проверка IP иногда может быть в порядке, но, как вы сказали, вы получаете уникальные IP-адреса с тем же номером мобильного телефона, поэтому это ненадежно.

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

Почему, однако, вы не можете просто игнорировать дублирующиеся мобильные номера или комбинацию номер + IP? То, что они могут подавать несколько раз, не означает, что вы должны принять это. Если это человек, пусть думают, что посылают несколько голосов:)

* Ticketmaster использовал различные средства, чтобы попытаться помешать работе Уайсгуя, в какой-то момент переключившись на сервис под названием reCaptcha, который также используется Facebook. Это сторонняя капча, которая передает вызов капчи посетителям сайта. Когда клиент пытается купить билеты, сеть Ticketmaster отправляет уникальный код reCaptcha, который затем передает запрос Captcha клиенту.

Но обвиняемые, как утверждается, также смогли помешать этому. Они написали сценарий, который олицетворял собой пользователей, пытающихся получить доступ к Facebook, и загрузил сотни тысяч возможных вызовов Captcha из reCaptcha, утверждают прокуроры. Они идентифицировали идентификатор файла каждого запроса Captcha и создали базу данных "ответов" Captcha, чтобы соответствовать каждому идентификатору. Затем бот идентифицирует идентификатор файла вызова в Ticketmaster и возвращает соответствующий ответ. По словам представителей властей, бот также имитировал поведение человека, иногда совершая ошибки при наборе ответа.

Некоторые методы, которые вы могли бы использовать:

  • Captcha: Останавливает ботов, отправляющих форму
  • Проверка электронной почты: отправьте им электронное письмо с уникальной ссылкой, чтобы активировать участие в конкурсе. Останавливает недействительные адреса электронной почты.
  • Проверка мобильного номера: отправьте им текстовое сообщение с кодом активации. Останавливает недействительные номера телефонов.

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

Captcha идеально подходит для защиты от спама, в то же время часто путая людей.

Но есть обходной путь - вы можете использовать JavaScript, чтобы скрыть капчу для реальных пользователей (используя браузеры с включенным JavaScript), в то время как она всегда будет "видимой" для спам-ботов (у которых нет JS). Это довольно просто - просто с помощью JS Вы устанавливаете div для отображения капчи: нет, и создаете скрытый ввод со значением, содержащим это из изображения капчи...

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

Также хорошим решением для предотвращения повторной отправки форм при обновлении является перенаправление пользователей на ту же страницу после того, как форма отправлена ​​и обработана... Да, для просмотра результата требуется больше одной или двух секунд, но это гораздо безопаснее...

Другие вопросы по тегам