2009-06-10 43 views
18

我想在我的网站上实施投票系统,无需强制他们创建帐户。他们最终会投票上下一段具有唯一ID的内容。无需注册即可实施投票系统

  • 我知道我可以将条目存储在IP/ID表中,但是如果有多个用户来自同一个IP?
  • 有没有一种方法可以唯一标识访客,而不会将其绑定到外部IP?
  • 如果创建了一个GUID,将其存储在该机器的cookie中,稍后可以在具有相同IP的同一台计算机上检索它?不同的IP?

对这些问题的任何想法或任何洞察到更好的方法将不胜感激。

+0

那么怎样才能阻止某人投票上下50或100次? – matpie 2009-06-10 22:05:44

+4

我相信OP的意图是:我怎样才能防止同一个人多次上/下投票。 – Nate 2009-06-10 22:07:57

+0

是的 - 背后的想法是防止滥用,但设计一个系统,不需要注册 – barfoon 2009-06-10 22:10:01

回答

21

是的,你可以使用一个cookie,并设置过期到未来很远;然而,没有任何东西可以阻止任何人清除缓存并再次投票。

最好的办法就是使用cookie,并且不要在15分钟之内允许来自同一个IP的投票...没有注册这就是你可以做的最好的选择。

3

原则上,使用cookie来区分未访问过的访问者和已访问但删除了cookie的访问者是不可能的。因此,任何基于cookie的解决方案都容易受到普通投票欺诈的影响。

考虑的J Henry Lowengard精神拥抱这个现实,谁,当他建立了top 100 site on WFMU早在90年代中期,设在一个按钮,“您的投票已计入”“去标签页返回和投票多一些! “

实际上,go there now并投票支持(或反对)StackOverflow!

4

你可以让他们使用OpenId登录,这将允许他们使用现有帐户进行投票,他们不会必须创建一个新帐户。

谷歌和雅虎等都有服务允许您对用户进行身份验证。

如果你没有以某种方式验证用户,投票系统会打开滥用。

+5

它会被滥用,期限。可以拥有的OpenId账户数量不受限制。实际上,成为OpenId供应商非常简单,只需很少的努力即可生成无限数量的OpenId帐户。 – 2009-06-10 22:19:05

8

您可以根据不仅仅是他们的IP来识别用户。例如,您可以包含IP +整个请求头信息(如浏览器,版本号,功能)并对其进行散列。这将或多或少地唯一标识你的用户(不幸的是,不是100%)。

3

IP +用户代理比IP更独特;不确定它是否适合你的目的。如果您向他们发送cookie,则只要Cookie保持在周围(不管IP)如何,该cookie就会被该计算机返回(如果他们使用相同的浏览器),但请注意,用户可以随时摆脱cookie 。

如果您担心在所有关于使用该系统,以防止选举舞弊,我不相信你不会是能够得到解决使他们有一个帐户。

0

另一种选择是使用会话。它将允许您将会话ID与IP一起存储。这将允许你获得多个IP,但来自不同的会话。唯一的缺陷就是浏览器可能的切换。添加一个曲奇让它三重奏可以帮助消除洪水。

我以前只用IP地址就可以做到这一点,这似乎可以在小范围内工作。

1

我现在正在考虑同样的问题。我可能的方法将作如下安排:

  • (A),你可以接受这些人谁是你的网站投票(使用会话)至少15分钟(也可以是大约时间,用户阅读博客/网站上的文章)。当他们投票时,计时器将重置为下一个投票。所以这样,用户就不用再删除cookies了。 (B)您可以接受未注册人员的投票并收取他们的电子邮件地址并向他们的投票发送验证链接。当他们点击邮箱中的验证链接时,您实际上可以对投票进行计数。这就像每个电子邮件地址的投票。 (A)和(B)的组合。这样,你可以肯定你会被发送的验证链接仅每15分钟,这将不会是一个很多:)

0

你可以尝试Evercookie或类似的解决方案,单个用户。

1

我知道这是旧的,但只是来到这里,有一个想法..

什么像https://panopticlick.eff.org? 另一个事情之一,可以扔在..

(如果这个不断下线:这是一种由平常的东西加 +浏览器插件详细累计指纹 +时区 +屏幕大小和颜色深度 +系统字体 + supercookies )