0

我想建立一个投票网站,比如 Facebook 的 +1。

是否有一些对付作弊的最佳做法?

最好的方法是使用 facebook、twitter 和/或 google 来拥有唯一用户,但我想让匿名用户投票。

4

2 回答 2

2

您可以使用某种形式的工作量证明系统来防范大规模的自动作弊。这将要求浏览器在投票中投入一些计算。单次投票不应该花费太长时间,但批量投票需要认真的计算工作。使用 JavaScript 进行投票也意味着任何批量投票机制都必须来自支持 JavaScript 的浏览器(或浏览器仿真),因此生成 HTTP 请求的简单脚本也会被挫败。

但是,通过这种方法,单个用户手动单击多次不会显着延迟。因此,将此要求与 IP 地址、用户代理字符串、cookie 的日志结合起来,也许还有 flash cookie。cookie 将有助于识别尝试使用一系列连接重复投票的单个拨入用户。尽管刚刚列出的措施很容易被大规模的自动作弊攻击规避,但它们应该很好地(尽管不完美)处理手动投票。所以我相信这两种解决方案应该很好地相互补充。

您可能想要阻止匿名网络,例如tor。但是,该块应该只影响投票,因为您希望允许匿名用户查看您的网站,对吗?

您还可以考虑要求未经身份验证的用户解决CAPTCHA问题。根据投票的重要性以及有多少用户未经身份验证,您的用户可能会或可能不会被此措施阻止投票。

于 2012-07-30T12:45:21.620 回答
1

根据我有限的经验,如果您不需要身份验证,系统很可能会以某种方式被欺骗:没有真正的防弹方法可以分辨谁是谁,除非您记录了大量与客户端有关的数据,这可能在统计上被认为是唯一的整体(但你不能用这种方法达到 100% 的确定性)。

当然,如果您预计有 10 个用户,这比处理数百万用户要容易得多。IP + 用户代理检查在第一种情况下很可能没问题,但在第二种情况下就不是很好(想到 NAT)。

最后,您必须考虑作弊的可能性,或者换句话说:您的用户是否真的会尝试欺骗系统,或者您可以检查很容易伪造的信息而侥幸?

于 2012-07-30T11:26:08.767 回答