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

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

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

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

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

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

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

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

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

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

Дайте нам знать, что вы в конечном итоге собираетесь.

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

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

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

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

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

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

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

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

Другой пример: если ваша электронная почта myuser * @ gmail.com *, вы можете использовать myuser+1@gmail.com myuser+2@gmail.com и т. Д. (Знак плюса и текст после его игнорирования, и это доставлен на ваш счет). Вы также можете включить точки в свое имя пользователя (my.user@gmail.com). (Это работает только на адресах gmail!)

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

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

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

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

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

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

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

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

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

http://samy.pl/evercookie/

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

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

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

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