【问题标题】:How to prevent gaming a voting system where people can vote once per day?如何防止玩弄人们每天可以投票一次的投票系统?
【发布时间】:2011-04-11 17:55:15
【问题描述】:

我已经为在线视频实施了一个投票系统,其中访问者在任何一天只能投票一次。我结合使用他们的电子邮件地址和时间戳来确保当天的每张投票都是唯一的。

正如您可能猜到的那样,这会导致人们通过在 mailinator.com 等上注册一次性电子邮件地址来玩弄系统,所以我想知道是否有人尝试实施任何其他投票算法,允许同一个人进行多次投票.此外,这种设置意味着,如果视频 #1 与视频 #2 相关联的人更多,则视频 #1 已经处于不公平的优势。

我正在考虑一个排名系统,但我不完全确定如何防止任何人使用虚假电子邮件地址玩弄系统。我要解决的问题是这样的:

给定 3 个视频,A、B 和 X。A 有 5 人,B 有 2 人,X 有 4 人。
假设 X 是三个视频中最好的,并且人们每天都可以投票,那么是否有一个投票系统可以帮助“B”上升到顶部?

就像我说的,我提出的排名系统会假设如果 #2 的数量超过 #1 的数量,则可以安全地假设 应该是赢家,但这似乎不完整。

以前有没有人处理过这样的事情?请记住,这些结果的数量非常少(我们平均大约 500 票/7 天),所以 2 个人可以真正发挥作用。

如果有帮助的话,这是在共享主机环境中的 LAMP (PHP) 堆栈上。

另外,如果您想知道为什么我们允许同一个人进行多次投票,那是因为高层意识到这有助于增加网站的流量,并且他们真的很喜欢看到图表上升(尽管随后命中毫无意义)。

提前致谢,如果您需要任何其他信息,请告诉我。

【问题讨论】:

  • 听起来对EverCookie 很有用。
  • @jnpcl:那些东西应该被禁止。使用真实的登录系统(或使用 OpenID),句号。
  • @Alexandre:抱歉,讽刺在文字中消失了。我应该添加一个笑脸。 ;)
  • @jnpcl:没问题。不幸的是,有些人不会对此讽刺。

标签: php algorithm lamp ranking voting-system


【解决方案1】:

你实际上是在问两个不同的事情:

首先,您如何防止人们玩弄系统?这是相当棘手的。您可以通过要求注册、像 SO 这样的最低声誉或其他限制来提高投票的门槛,但最终您所能做的就是减少作弊,而不是消除作弊。假设人们多次成功注册实体政治选举,然后评估您消除网站上所有作弊行为的可能性。

其次,您如何对可能具有不同受欢迎程度并且已经存在不同时间的不同物品进行公平的质量排名? Randall Munroe 描述了一种非常好的解决方案here。那篇文章链接到实际算法,该算法实现起来相当简单。

【讨论】:

  • 您在 XKCD 上链接到的那个解决方案看起来可能有一些腿。我将进一步调查。谢谢!
【解决方案2】:

没有登录系统就无法解决您的问题。除非您为他们提供一个真正的身份验证系统,该系统需要几个步骤来创建帐户,否则人们将继续击败您的系统。顺便说一下,OpenID 非常适合。

不要使用大量基于 cookie 的东西(尤其是不要使用 Evercookie)。这是对您用户隐私的侵犯。我永远不想在我的电脑上放一个僵尸饼干。

如果他们一直在玩你,你无能为力,只能手动标记垃圾帐户并删除相应的投票。

或者您可以创建一个基于声誉的系统,只需最少的代表即可投票(如 StackOverflow)。

如果您想要快速安全的工作解决方案,请查看OpenID

【讨论】:

  • openid 不会解决在线识别人的问题,而不仅仅是帐户。它只会将问题从稍微坚定的转变为稍微坚定的问题。
  • @hop:Openid 的优点是 1) 易于实施 2) 不鼓励人们创建大量帐户,因为开设多个帐户的时间很长。仅此一项就会阻止一些用户。代表的东西也很好。
  • “一些用户”正是使该解决方案无用的原因,而现在“冗长”的过程(我非常怀疑)将在明天自动化。正如我所说:它只会将问题转移到那些比其他人更坚定的作弊者身上。
  • OpenID 绝对是我什至没有考虑过的另一个选项。我将假设世界上大多数人都有 Gmail/Yahoo/Windows Live 帐户和 iirc,它们都是 OpenId 提供者,因此负责人可以相当容易地购买。谢谢!
  • @leo: 你也可以一开始就禁止一次性电子邮件,这里有一个列表:sizlopedia.com/2007/05/27/…
【解决方案3】:

网上有一个问答平台——不知道你有没有听说过——它叫 stackoverflow.com ;-)

也许您可以在此站点采用分级系统?我发现只允许具有给定评级的用户以多种方式操纵系统非常聪明。您可以按帐户年龄(例如,仅从注册后 2 周开始计算投票)或某种信誉系统来选择用户。

【讨论】:

  • 我认为聪明的做法是禁止零代表(即虚拟帐户)的用户以任何方式操纵系统。
猜你喜欢
  • 2013-05-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多