Внедрение системы голосования без необходимости регистрации
-
13-09-2019 - |
Вопрос
Я бы хотел внедрить систему голосования на своем сайте, не заставляя их создавать учетную запись.В конечном счете они будут голосовать за / против фрагмента контента, который имеет уникальный идентификатор.
- Я знаю, что я мог бы хранить записи в таблице с IP / ID, но что, если с одного IP-адреса приходит более одного пользователя?
- Есть ли способ однозначно идентифицировать посетителей, не привязывая это к их внешнему IP-адресу?
- Если создать GUID, сохранить его в файле cookie на этом компьютере, можно ли его получить позже на том же компьютере с тем же IP?Другой IP-адрес?
Мы были бы весьма признательны за любые мысли по этим вопросам или за любое представление о лучшем подходе.
Решение
Да, вы можете использовать файл cookie и установить срок его действия очень далеко в будущем;однако ничто не мешает кому-либо очистить кэш и проголосовать снова.
Лучше всего использовать файл cookie и не разрешать голоса с одного и того же IP с разницей в 15 минут...без регистрации это лучшее, что вы можете сделать.
Другие советы
Вы можете идентифицировать пользователей не только по их IP-адресу.Например, вы можете включить IP + всю информацию заголовка запроса (например, браузер, номера версий, возможности) и хешировать ее.Это более или менее однозначно идентифицирует вашего пользователя (хотя, к сожалению, не на 100%).
Вы можете разрешить им войти в систему, используя OpenId, это позволит им использовать существующую учетную запись для голосования, и им не придется создавать новую учетную запись.
У Google, Yahoo и других есть сервисы, позволяющие аутентифицировать пользователей.
Если вы каким-либо образом не аутентифицируете пользователей, система голосования может стать объектом злоупотреблений.
Пользовательский агент IP + намного более уникален, чем IP;не уверен, подходит ли это для ваших целей.Если вы отправите им файл cookie, он будет возвращен этим компьютером (если они используют один и тот же браузер) до тех пор, пока файл cookie остается, независимо от IP-адреса, но учтите, что пользователь может избавиться от файла cookie, когда захочет. .
Если вас вообще беспокоит использование этой системы для предотвращения фальсификаций голосов, я не верю, что вы не сможете обойти их учетную запись.
Используя файл cookie, вы в принципе не можете отличить посетителя, который никогда не посещал сайт, от посетителя, который посетил, но удалил файл cookie.Следовательно, любое решение на основе файлов cookie будет уязвимо для банального мошенничества с голосованием.
Подумайте о том, чтобы принять эту реальность в духе Дж. Генри Ловенгард, который, когда он настраивал сайт топ-100 по WFMU еще в середине 1990-х годов на странице «Ваш голос засчитан» появилась кнопка с надписью «Вернитесь и проголосуйте еще!»
Фактически, иди туда сейчас и голосуйте за (или против) StackOverflow!
Я сейчас думаю о той же проблеме.мои возможные подходы будут следующими:
(А) вы можете принимать голоса от тех людей, которые были на вашем сайте (используя СЕССИИ) в течение как минимум 15 минут (это может быть примерное время, за которое пользователь прочитает статью в блоге/сайте).когда они проголосуют, таймер сбрасывается для следующего голосования.Таким образом, пользователям больше не будет смысла удалять файлы cookie.
(Б) вы можете принимать голоса от незарегистрированных людей, взяв их адрес электронной почты и отправив им ссылку для подтверждения их голоса.когда они нажимают ссылку для подтверждения в своем электронном ящике, вы действительно можете подсчитать голоса.это похоже на голосование по адресу электронной почты.
(C) комбинация (A) и (B).Таким образом, вы можете быть уверены, что будете отправлять ссылки для проверки только каждые 15 минут одному пользователю, что будет немного :)
Я знаю, что это устарело, но просто пришел сюда, и у меня возникла идея..
Как насчет чего-нибудь вроде https://panopticlick.eff.org ?Еще одна вещь , которую можно было бы добавить ..
(Если это когда-нибудь отключится:Это совокупный отпечаток пальца, сделанный из обычных материалов плюс + Сведения о плагине браузера + Часовой пояс + Размер экрана и глубина цвета + Системные шрифты + суперкниги )
Другой вариант — использовать сеанс.Это позволит вам хранить идентификатор сеанса вместе с IP-адресом.Это позволит вам получить несколько IP-адресов, но из разных сеансов.Единственным недостатком будет возможное переключение браузеров.Добавление файла cookie, чтобы сделать его трио, могло бы помочь предотвратить наводнение.
Раньше я делал это только с IP-адресом, который, похоже, работает в небольших масштабах.
Вы могли бы попробовать Эверкуки или подобные решения.