Внедрение системы голосования без регистрации - PullRequest
18 голосов
/ 11 июня 2009

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

  • Я знаю, что могу хранить записи в таблице с IP / ID, но что, если с одного и того же IP идет более одного пользователя?
  • Есть ли способ однозначно идентифицировать посетителей без привязки к их внешнему ip?
  • Если создан GUID, сохраните его в файле cookie на этом компьютере, можно ли его позднее найти на том же компьютере с тем же IP-адресом? Другой IP?

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

Ответы [ 9 ]

23 голосов
/ 11 июня 2009

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

Ваш лучший выбор - использовать cookie-файлы и не разрешать голоса с одного и того же IP-адреса в течение 15 минут друг от друга ... без регистрации это лучшее, что вы можете сделать.

8 голосов
/ 11 июня 2009

Вы можете идентифицировать пользователей, основываясь не только на их IP. Например, вы можете включить IP + всю информацию заголовка запроса (например, Browser, Version Numbers, Capabilities) и хэшировать это. Это будет более или менее однозначно идентифицировать вашего пользователя (но не на 100%, к сожалению.)

4 голосов
/ 11 июня 2009

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

У Google, Yahoo и других есть службы, позволяющие аутентифицировать пользователей.

Если вы не аутентифицируете пользователей каким-либо образом, система голосования будет открыта для злоупотреблений.

3 голосов
/ 11 июня 2009

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

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

3 голосов
/ 11 июня 2009

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

Подумайте о том, чтобы принять эту реальность в духе J Генри Лоуенгард , который, когда в середине 1990-х годов он создал топ-100 сайтов в WFMU , предоставил кнопку Страница "Ваш голос учтен" с надписью "Вернись и проголосуй еще!"

Фактически, иди туда сейчас и проголосуй за (или против) StackOverflow!

1 голос
/ 05 сентября 2013

Я знаю, что это старый, но только что пришел сюда и пришла идея ..

А как насчет https://panopticlick.eff.org? Еще одна вещь, которую можно добавить ...

(Если это вообще не работает: это накопительный отпечаток, сделанный из обычного материала плюс + Информация о плагине для браузера + Часовой пояс + Размер экрана и глубина цвета + Системные Шрифты + супер печенье )

1 голос
/ 01 января 2013

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

  • (A) вы можете принимать голоса от тех людей, которые были на вашем сайте (используя СЕССИИ) в течение как минимум 15 минут (это может быть приблизительное время для чтения пользователем статьи в блоге / на сайте). когда они проголосуют, таймер будет сброшен для следующего голосования. таким образом, больше нет смысла удалять куки для пользователей.

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

  • (C) комбинация (A) и (B). Таким образом, вы можете быть уверены, что будете отправлять проверочные ссылки только каждые 15 минут одному пользователю, что не будет много:)

0 голосов
/ 01 января 2013

Вы можете попробовать Evercookie или аналогичные решения.

0 голосов
/ 19 января 2012

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

В прошлом я делал это только с IP-адресом, который, кажется, работает в небольшом масштабе.

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