Подтвердить что ты не робот

Что такое надежный метод записи голосов от анонимных пользователей, без возможности дублирования

Прежде всего, я искал, насколько мог, и прочитал все вопросы, которые кажутся актуальными, но ничего конкретно не ответил на это. Это не дубликат, афайк.

Очевидно, что если анонимное голосование на веб-сайте разрешено, нет надежного способа предотвратить голосование более одного раза.

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

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

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

Есть ли какая-то средняя почва для этого или какой-то другой метод/комбинация, которую я пропускаю?

4b9b3361

Ответ 1

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

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

Ответ 2

Китайцы должны поделиться одним IPv4-адресом с сотнями других; Hp/Compaq/DEC имеет почти 50 миллионов адресов. IPv6 не помогает, поскольку каждый получает адреса миллиардом. Человек просто не совпадает с IP-адресом, и это понятие становится все более ложным.

В Интернете нет правильных способов сделать это. Люди - это просто концепция, неизвестная в Интернете, и любая идея ввести концепцию вряд ли удастся. (Слишком много правительств не хотели бы, чтобы это произошло, например.)

Конечно, вы можете связать количество голосов за IP-адрес с повторными посещениями страниц с этого IP-адреса, особенно в сочетании с отслеживанием файлов cookie. Это лучше всего работает, если вы оцениваете это число до начала периода голосования. Если популярные 5% популярных статей обычно читаются 10 раз с одного IP-адреса, вероятно, 10 человек используют этот IP-адрес, и они должны получить 10 голосов. Печенье можно использовать, чтобы помешать им воровать друг друга, но в целом они не могут исказить ваш опрос. (Примечание: это не удается в небольших сообществах, где большая группа избирателей поступает из небольшого числа IP-адресов, особенно это происходит в университетах).

Ответ 3

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

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

IP более "надежный", но приведет к неприемлемо высоким уровням коллизий из-за NAT.

Как насчет более уникального идентификатора, состоящего из IP + user-agent (может быть, хеш)? Это эффективно означает каждый IP-адрес, каждая конкретная пара версий ОС/браузера получает 1 голос, что намного ближе к 1 голосу на человека. Большинство браузеров предоставляют подробную информацию о версии в пользовательском агенте - я не уверен, но, по моему мнению, это предотвратит большинство столкновений, вызванных NAT.

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

Ответ 4

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

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

Ответ 5

Используйте постоянный файл cookie, чтобы разрешить только один голос за элемент

и запишите IP, если есть более 100 (1000? 100 000?) запросов менее чем за X минут, тогда "мягкий блок" IP

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

Ответ 6

Все, что основано на IP-адресах, не является вариантом - упоминается NAT, но это похоже только на домашних пользователей. Есть много более крупных установок, которые используют NAT - некоторые корпорации могут иметь тысячи пользователей, объединенных за один IP-адрес. Также есть интернет-провайдер, который использует прокси-серверы для своих пользователей - еще один случай, когда вы можете иметь много тысяч пользователей для вашего приложения в виде одного адреса. Добавление уникальных комбинаций UA к этому не поможет, так как изменений недостаточно.

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

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

В конце дня у любого интернет-опроса будут недостатки (например: http://www.time.com/time/arts/article/0,8599,1894028,00.html), и вам придется жить с этим.

Ответ 7

Две идеи, которые еще не упомянуты, следующие:

  • Запрос адреса электронной почты пользователя и отправка по электронной почте ссылки для подтверждения.
  • Использование captcha

Очевидно, что первое можно обойти с одноразовыми адресами электронной почты и т.д., но дает вам аудиторский след и обеспечивает существенное препятствие для случайного заполнения/бота. Хороший captcha также сильно ограничивает заполнение голосов, но со всеми обычными оговорками, окружающими их использование.

Ответ 8

У меня такая же проблема, и вот что я планирую делать...

Установите постоянный файл cookie. Проверьте файл cookie, чтобы решить, может ли быть выбран конкретный голос. Кроме того, сохраните некоторые данные о запросе на голосование в виде комбинации IP-адреса + User Agent. И затем используйте это значение, чтобы ограничить число. голосов, скажем, 10 в день.

Каков наилучший способ создания этого хэша (строка IP + UA)?