Существует ли надежный способ предотвратить мошенничество в веб-конкурсе, где анонимные пользователи могут голосовать?

StackOverflow https://stackoverflow.com/questions/55835

  •  09-06-2019
  •  | 
  •  

Вопрос

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

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

Это было полезно?

Решение

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

  • Голосование требует решения капчи (чтобы максимально избежать автоматического голосования).Для большей эффективности я бы рекомендовал подготовить несколько типов простых капч (например, «выбери фото с котом», «сколько будет 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%-ным, но, надеюсь, в совокупности они дадут вам необходимый уровень уверенности.Если вы хотите поднять этот уровень на более высокий уровень, вам необходимо добавить какую-то регистрацию пользователя (которая может быть такой же простой, как запрос действующего адреса электронной почты при голосовании и отправка ссылки для подтверждения на данный адрес без учета голосов, по которым ссылка не была нажата - так что это не обязательно должно быть полноценное "создать аккаунт с логином/паролем/ФИО/фамилией/и т.д").

Другие советы

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

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

-Адам

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top