Лучший способ предотвращения азартных игр с анонимным голосованием

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

  • Отбросьте файл cookie после завершения голосования (восприимчивый к многопользовательской игре)
  • Запишите IP-адрес за голос (это не будет работать в прокси-серверной среде)
  • Ввод логинов

Мой сайт не основан на учете как таковой, хотя он объединяет данные Twitter, поэтому есть возможность использовать Twitter OAuth как средство идентификации.

Какие существуют существующие системы и как они это делают?

Ответ 1

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

Подход cookie очень хрупок, поскольку файлы cookie можно легко удалить. Подход IP-адреса имеет тот недостаток, который вы сами описываете.

Ответ 2

Один шаг к пользовательской системе auth, но не все сложности:

Попросите пользователя ввести свой адрес электронной почты и подтвердить свой голос, вы бы не искоренили игры, но вам было бы труднее для игроков регистрировать другой адрес электронной почты, а затем голосовать и т.д.

Может стоить лишний шаг.

Сообщите нам, к чему вы в конечном итоге идете.

Ответ 3

Если вы хотите использовать cookie в конце концов, используйте evercookie.

evercookie - это API-интерфейс JavaScript, который производит чрезвычайно устойчивые файлы cookie в браузере. Его цель является идентификация клиента даже после того, как они удалили стандартный cookies, Flash файлы cookie (локальные общие объекты или LSO) и другие.

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

Разумеется, это не повлияет на многопользовательский мошенник.

Ответ 4

С каким типом игр вы хотите защитить себя? Кто-то создает пару ботов и бомбит вас тысячами (миллионами) запросов? Или кто-то, у кого нет лучших дел и попытаться сделать 10-20 голосов?

Да, я знаю: и то, и другое - но какая из них ваша главная забота здесь?

Использование CAPTCHA вместе с голосованием на основе электронной почты (отправьте ссылку на письмо для подтверждения голосования) может хорошо работать против ботов. Но человек может более или менее легко использовать систему электронной почты (как я комментирую в одном ответе и публиковать здесь снова)

У меня есть собственный домен, и я могу получить в нем любое электронное письмо.

Другой пример: если ваша электронная почта myuser*@gmail.com*, вы можете использовать "[email protected]" [email protected] и т.д. (знак плюса и текст после он игнорируется и доставляется на ваш счет). Вы также можете включить точек в вашем имени пользователя ([email protected]). (Только это работает с адресами gmail!)

Чтобы защитить людей, я не знаю, когда-либо, но это может быть хорошим выбором. Использование OAuth, интегрированного с твиттером, FB и другими сетями, также может работать хорошо.

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

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

Ответ 5

Разный подход, просто чтобы предоставить альтернативу:

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

Итак, устанавливайте файлы cookie, регистрируйте каждый голос и затем (или на промежуток времени?) просматриваете результаты и удаляете дубликаты на основе значений файлов cookie, комбинаций IP/UserAgent и т.д.

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

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

Ответ 6

Хотя я, вероятно, не сделал бы этого сам, но посмотрите на эти куки, от них довольно сложно избавиться:

http://samy.pl/evercookie/

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

Ответ 7

Если вы не хотите, чтобы принудительные пользователи регистрировались, рассмотрите этот evercookie, но запустите java script, чтобы включить ведение журнала!

Этот evercookie тривиально блокировать, потому что он основан на java script. Злоумышленник вряд ли использовал бы браузер, с завитой он мог бы генерировать запросы запросов. Hovewer такие инструменты обычно имеют низкую поддержку javascript.

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