Как предотвратить использование системы голосования, в которой люди могут голосовать один раз в день?

#php #algorithm #lamp #ranking #voting-system

#php #алгоритм #lamp #Рейтинг #система голосования

Вопрос:

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

Как вы могли догадаться, это приводит к тому, что люди используют систему, регистрируя одноразовые адреса электронной почты на mailinator.com и тому подобное, поэтому мне интересно, пробовал ли кто-нибудь реализовать какие-либо другие алгоритмы голосования, которые допускают многократное голосование одного и того же человека. Кроме того, эта настройка означает, что если с видео № 1 связано больше людей, чем с видео № 2, видео № 1 уже имеет несправедливое преимущество.

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

Учитывая 3 видео, A, B и X. В A участвуют 5 человек, В B — 2, а в X — 4.
Предполагая, что X — лучшее видео из трех, и что люди могут голосовать каждый день, существует ли система голосования, которая поможет «B» подняться на вершину?

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

Кто-нибудь сталкивался с чем-нибудь подобным раньше? Имейте в виду, что это довольно низкие результаты по объему (в среднем около 500 голосов за 7 дней), поэтому 2 человека действительно могут изменить ситуацию.

Это на стеке LAMP (PHP) в среде общего хостинга, если это поможет.

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

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

Комментарии:

1. Похоже, это хорошее применение для EverCookie .

2. @jnpcl: эти вещи должны быть запрещены. Вместо этого используйте реальную систему входа (или используйте OpenID), точка.

3. @Alexandre: Прошу прощения, сарказм теряется в тексте. Мне следовало добавить смайлик. 😉

4. @jnpcl: без проблем. Некоторые люди, к сожалению, не отнеслись бы к этому с сарказмом.

Ответ №1:

На самом деле вы спрашиваете о двух разных вещах:

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

Во-вторых, как вы даете справедливый рейтинг качества различным элементам, которые могут иметь разную популярность и были доступны в разное время? Одно очень хорошее решение описано здесь Рэндаллом Манро. В этой статье даны ссылки на реальный алгоритм, который довольно прост в реализации.

Комментарии:

1. Решение, на которое вы ссылались в XKCD, похоже, может иметь некоторые преимущества. Я собираюсь изучить это подробнее. Спасибо!

Ответ №2:

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

Не используйте тяжелые продукты на основе печенья (особенно не используйте Evercookie). Это посягательство на конфиденциальность ваших пользователей. Я бы никогда не хотел, чтобы на моем компьютере был zombie cookie.

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

Или вы можете создать систему, основанную на репутации, с минимальной репутацией, необходимой для голосования (например, StackOverflow).

Посмотрите на OpenID, если вам нужно быстрое и безопасное рабочее решение.

Комментарии:

1. OpenID не решит проблему идентификации людей в Интернете, а не только учетных записей. это только переместит проблему с очень незначительно определенной на чуть более определенную.

2. @hop: OpenID имеет преимущество в том, что 1) прост в реализации 2) не позволяет людям создавать много учетных записей, поскольку открытие многих учетных записей занимает много времени. Одно это отпугнет некоторых пользователей. Репутация тоже хороша.

3. «некоторые пользователи» — это именно то, что делает это решение бесполезным, и то, что сейчас является «длительным» процессом (в чем я очень сомневаюсь), будет автоматизировано завтра. как я уже сказал: это только перекладывает проблему на тех читеров, которые немного более решительны, чем остальные.

4. OpenID — определенно еще один вариант, который я даже не рассматривал. Я собираюсь предположить, что у большинства людей в мире есть либо учетные записи Gmail / Yahoo / Windows Live, либо iirc, все они являются поставщиками OpenID, так что ответственным лицам было бы достаточно легко подключиться. Спасибо!

5. @leo: также вы могли бы запретить одноразовые электронные письма в первую очередь, у вас есть список здесь: sizlopedia.com/2007/05/27 /…

Ответ №3:

В сети есть платформа вопросов и ответов — не знаю, слышали ли вы когда-нибудь о такой — она называется stackoverflow.com 😉

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

Комментарии:

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