Есть ли надежный способ предотвратить мошенничество в веб-конкурсе, где анонимные пользователи могут голосовать? - PullRequest
12 голосов
/ 11 сентября 2008

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

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

Ответы [ 7 ]

19 голосов
/ 11 сентября 2008

Краткий ответ: нет. Более длинный ответ: но вы можете сделать это произвольно сложно. Что бы я сделал:

  • Голосование требует решения капчи (во избежание, насколько это возможно, автоматического голосования). Чтобы быть еще более эффективным, я бы порекомендовал подготовить несколько типов простых капч (например, «выбрать фотографию с кошкой», «что такое 2 + 2», «ввести слово» и т. Д.) И повернуть их обе время суток и по IP, что должно сделать автоматические системы неэффективными (т. е. если кто-то, использующий IP A, создаст бота для решения капчи, это станет бесполезным на следующий день или если он / она распространит его на другие компьютеры / использует прокси)
  • При фильтрации по IP вы должны быть внимательны при рассмотрении ситуаций, когда несколько хостов находятся за одним общедоступным IP (AFAIK AOL проксирует всех своих клиентов через несколько IP-адресов, поэтому такое ограничение будет эффективно запрещать пользователей AOL). Кроме того, многие прокси-серверы отправляют заголовки, указывающие на исходный IP-адрес (например, X-Forwarded-For), так что вы также можете посмотреть на это.
  • Наконец, использование чего-то вроде FSO (Flash Shared Objects - «Flash cookie») является достаточно неясным для 99,99% людей, о которых не знают. Silverlight еще более неясен. Чтобы быть еще более хитрым, вы можете купить другой домен и установить FSO из этого домена (поэтому, если пользователь ищет FSO, установленный вашим доменом, он не увидит никакого)

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

1 голос
/ 11 сентября 2008

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

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

-Adam

0 голосов
/ 15 декабря 2010

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

0 голосов
/ 11 сентября 2008

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

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

Лучше всего, не позволяйте анонимным пользователям участвовать: пусть они "играют" и получают доступ к симуляции, но для участия в конкурсе требуется логин.

0 голосов
/ 11 сентября 2008

Клиентские решения отсутствуют по указанным вами причинам - ими может манипулировать пользователь. Решения на стороне сервера, как вы сказали, можно обмануть и обойти.

Если вы готовы принять тот факт, что вы не можете быть на 100% уверены, что получаете ровно один голос на человека, то есть некоторые меры, которые вы можете предпринять, чтобы уменьшить шум.

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

Это хорошее начало.

0 голосов
/ 11 сентября 2008

Вы, конечно, можете усложнить.

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

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

Я думаю, что вы, вероятно, сможете создать лучший профиль, используя silverlight, хотя я не уверен, к какой информации вы получаете доступ.

0 голосов
/ 11 сентября 2008

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

Тем не менее, CAPTCHA помогает ограничить количество голосов как минимум для пользователей-пользователей.

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

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