Как внедрить систему Facebook ilike без аутентификации пользователя и при этом предотвратить обман пользователей? - PullRequest
2 голосов
/ 27 декабря 2010

Я пытаюсь реализовать что-то сделанное практически на любом веб-сайте: кнопка 'ilike' (например, Facebook) , которая не требует аутентификации пользователя для использования в любой статьемоего сайта, написанного на Grails.

Я не хочу использовать какое-либо внешнее решение, поэтому мне нужно реализовать его самостоятельно (или использовать плагин Grails).

Итак, мой вопрос:Что нужно для реализации этой кнопки ilike и для предотвращения мошенничества пользователей с максимальным значением ?Например, мне нужно хранить локальные куки (я полагаю, да)?Нужно ли проверять идентификатор сеанса и IP-адрес HTTP-запроса?

Каковы известные реализации для онлайн-опросов, например ?

Большое спасибоза вашу помощь.

1 Ответ

6 голосов
/ 27 декабря 2010

Нет аутентификации пользователя и полностью предотвратить обман? Не могу, извини.

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

Вы можете установить cookie, но их можно очень легко удалить или даже не сохранить (Ctrl + Shift + Del, кто-нибудь?).

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

Кнопка «Мне нравится» в Facebook - это нечто совершенно иное - появляется , чтобы не использовать аутентификацию, но на самом деле она требует, чтобы вы вошли в FB - таким образом, FB сохраняет подсчет голосов в базе данных против идентификаторов пользователей. - и знает, за кого проголосовал пользователь, предотвращая большинство случаев мошенничества на выборах.

Пример - таблица «кто за что голосовал»:

user_id | article_id
1234         1
1234         5
1100         1

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

Если вам абсолютно необходимо разрешить анонимное голосование, вы можете сохранить в сеансе список статей, за которые проголосовал этот пользователь:

{ 1, 5 }

и проверьте его при доступе к странице. Если вы установите свои cookie и срок действия сессии достаточно долго, это будет своего рода работа - но опять же, как только пользователь очистит свои куки (или они истекут), bamf он ушел и будет выглядеть как новый пользователь , Невозможно предотвратить это, используя современные технологии (да, есть «постоянные куки», «флеш-куки», «evercookies» и еще много чего, но, в конце концов, это всего лишь временное хранилище, которое пользователь может стереть).

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