it-swarm.cn

有没有办法在不强制进行身份验证的情况下禁止一个用户进行多次投票?

我正在寻找一种禁止投票操纵(缓存/ Cookie清除等)的方式,而无需用户跳过设置(注册,身份验证等)。有任何想法吗?

4
GoodShovel

您可以组合几种方法:

  • 前面提到的IP身份验证。
  • 将信息存储在cookie或会话中。
  • 在很短的时间内测量“相同”投票的数量(尽管您可以将其标记为可疑)

对于那些知道如何做的人,很容易克服,但是就像丹·彼得克所说的那样,投票有多重要?

另外,您可以使用简单的身份验证技术,例如OpenID或Facebook,这将使大多数用户非常快速地完成该过程。

4
Dan Barak

一种选择是将每次投票与用户的IP地址相关联。如果您看到同一IP地址再次投票,则可以拒绝该投票。

但是,该解决方案具有两个主要缺点。首先,在如今的许多家庭网络设置中,计算机与IP地址之间没有一对一的映射。例如,如果您有三台计算机都连接到单个路由器/调制解调器,那么它们可能都共享相同的IP,因此即使您应允许全部三台计算机,也只能从三台计算机中进行一票表决。

另一个缺点是,仅需要有人使用 Tor 或其他匿名软件来完全规避此限制。

我想这全都取决于您需要该投票程序有多安全,以及要使它成为潜在的攻击者造成麻烦的难易程度。如果投票过程的安全性和完整性是当务之急,那么您真的需要考虑要求某种注册/身份验证,以确保不对事情进行操纵。

编辑:另一个想法...

我从一个稍微不同的角度思考这个问题,但我有另一个想法。在您提到的问题中,您提到您不希望用户跳入篮筐,建议将注册/身份验证视为“篮筐”。如果注册没有陷入困境怎么办?您可以使注册过程变得如此简单,以至于用户不会将其视为避免投票的理由。

例如,我今天才发现有关ui.stackexchange的信息,我想深入研究并开始回答问题/投票/等等。马上。为此,我必须注册。但是,stackexchange使用OpenID作为创建帐户的方式,这意味着我只需单击两次即可在此处注册并可以使用。

您可以在自己的网站上做这件事吗?在没有直接实施技术的情况下,似乎OpenID,Facebook Connect等都提供了快速,简便的方法来向站点添加身份验证,而不必强迫用户填写冗长的注册表格-两者兼具!

3
Dan

结合几个不同的方面:IP地址,用户代理,Flash版本等。最终的身份不能保证100%唯一,但它比IP更加接近您的目标。

2
Virtuosi Media

您需要问的问题是:

如果用户多次投票,问题有多严重?

例如,如果有一些真正的问题-金钱,实物奖金等,那么尝试操纵投票的诱惑更大。在这些情况下,您可能必须坚持用户注册(但是,如Dan Petker所建议的那样,走OpenID/Facebook Connect路线可能是这里痛苦最小的方法)。

但是,如果这是“唯一的乐趣”,那么您可能会花费大量时间(和金钱)来尝试阻止大多数人不会沉迷的事情。您花费的精力应与选民欺诈的成本成比例。

话虽这么说,但令人惊奇的是,有些人将努力使用“游戏”投票系统来给自己分配更多的积分,因此您最终还是可能会走完整的注册路线。

2
ChrisF

EFF用于 Panopticlick项目 的技术在这里可能非常相关:

“当您访问一个网站时,您正在允许该网站访问有关您的计算机配置的许多信息。这些信息结合在一起可以创建一种指纹-一种可以用来识别您和您的计算机的签名”。

可获得该实验的统计结果,但技术信息仅限于一篇简短的论文-两者均从首页链接。但是,它为浏览器指纹识别提供了很好的启发,该技术将解决您的大多数问题。

0
Jean-Marc Liotier

您可以使用Cookie或IP地址来确保他们的投票不超过一次。

0
abrudtkuhl