【发布时间】:2010-08-03 14:35:22
【问题描述】:
在我的网站上,我们运行一个竞赛系统,用户为其他用户的内容投票。我们最近发现有人创建多个帐户进行多次投票(连续的 ID 号,并在几分钟内投票)。我们希望防止这种情况再次发生。判断时代如何处理他们的“世纪最具影响力人物”民意调查,即使是大人物也弄错了。
目前我们记录用户 ID、投票日期和 IPv4 地址(通过 $_SERVER['REMOTE_ADDR'])。
我可以做些什么来防止或使某人更难进行欺诈性投票?
【问题讨论】:
在我的网站上,我们运行一个竞赛系统,用户为其他用户的内容投票。我们最近发现有人创建多个帐户进行多次投票(连续的 ID 号,并在几分钟内投票)。我们希望防止这种情况再次发生。判断时代如何处理他们的“世纪最具影响力人物”民意调查,即使是大人物也弄错了。
目前我们记录用户 ID、投票日期和 IPv4 地址(通过 $_SERVER['REMOTE_ADDR'])。
我可以做些什么来防止或使某人更难进行欺诈性投票?
【问题讨论】:
需要用户信誉。如果您将投票权与必须具有一定声誉的用户相关联(即通过在一定时间内参与您的社区并提供有意义的内容),那么某人将越来越难以自动化创建多个身份的过程。
最终,它是在充分的身份验证、易于访问和结果的价值(对您和用户而言)以及您呈现结果的方式之间取得平衡。
【讨论】:
使用 IPv4 地址,带有浏览器签名 ($_SERVER['HTTP_USER_AGENT']) 哈希。
如果投票来自不同的用户,但使用相同的 IP 地址,使用相同的浏览器,在一个关闭的时间范围内,则可能是欺诈。
如果时间太近,导致流程自动化,验证码会解决它(但没有人喜欢民意调查中的验证码)。
【讨论】:
不幸的是,要防止欺诈性投票非常困难,有志者事竟成。然而,这一切都是为了尽可能不方便地欺骗系统。
您的帐户是否需要一个唯一的电子邮件地址并经过验证才能使用该帐户?
用户多久可以投票一次?如果您每天只能发送一次或一次电子邮件来验证投票,那么这对合法用户来说可能会很痛苦。
不确定网站的规模,但是当您开始谈论非常大的网站(例如 Time's poll)时,仅通过查看 IP 地址就很难判断连续投票是否是假的。大学和办公室通常可以有数百人使用同一个 IP 地址。很难判断是一个人支持投票,还是一个人在宿舍楼里向他/她的所有朋友说要投票(可以解释来自同一 IP 地址的新注册/投票)同一时间)。
这个问题确实没有答案,只要保持监控日志并删除看起来不合法的投票即可。
【讨论】:
正如您已经在做的那样,跟踪 IP 地址以及投票时间,并禁止在同一时间范围内来自同一 IP 的多次投票。这最多只会影响少数大学生。
另一种更简单的安全投票方式是强制进行电子邮件注册和确认。一些机器人/垃圾邮件站点仍然可以通过拥有自己的域来解决此问题,但是您可以阻止该站点的域注册和投票。这是“最烦人”但最耗时的方法,因此与 IP 地址相结合,导致严重作弊的可能性最小。
要记住的是,您不会阻止所有作弊者进入您的系统,但是您可以减轻它们。
【讨论】:
我会结合使用 IP 地址投票限制和 cookie。是的,cookie 可以被删除,但这会阻止恶意类型的人碰巧也是个白痴。
IP 地址限制将检查来自该 IP 地址的人最近是否投票(例如 10 分钟,根据人口统计数据或大型组织在同一 IP 地址上投票的人数,您认为公平的任何时间)并停止投票计数。
将这 2 项与您已经使用的用户 ID 结合起来,就可以做到尽可能多的实际操作。
【讨论】: