22

我想在我的网站上实现一个投票系统,而不必强迫他们创建一个帐户。他们最终将投票赞成/反对具有唯一 ID 的内容。

  • 我知道我可以将条目存储在带有 IP/ID 的表中,但是如果有多个用户来自同一个 IP 怎么办?
  • 有没有办法在不绑定到外部 IP 的情况下唯一地识别访问者?
  • 如果创建了一个 GUID,将其存储在该计算机上的 cookie 中,以后可以在具有相同 IP 的同一台计算机上检索它吗?不同的IP?

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

4

9 回答 9

23

是的,您可以使用 cookie 并将到期时间设置在很远的将来;但是,没有什么能阻止任何人清除缓存并再次投票。

您最好的选择是使用 cookie,并且不允许在 15 分钟内来自同一 IP 的投票......没有注册这是您能做的最好的事情。

于 2009-06-10T22:02:13.227 回答
9

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

于 2009-06-10T22:03:44.533 回答
4

原则上,您无法使用 cookie 来区分从未访问过的访问者和访问过但已删除 cookie 的访问者。因此,任何基于 cookie 的解决方案都容易受到微不足道的投票欺诈的影响。

考虑本着J Henry Lowengard的精神接受这一现实,他在 1990 年代中期在 WFMU 建立前 100 个网站时,在“您的投票已计入”页面上提供了一个标有“返回并投票”的按钮更多的!”

事实上,现在就去那里投票支持(或反对)StackOverflow!

于 2009-06-10T22:01:30.620 回答
4

您可以允许他们使用OpenId登录,这将允许他们使用现有帐户进行投票,而不必创建新帐户。

Google、Yahoo 和其他公司提供了允许您对用户进行身份验证的服务。

如果您不以某种方式对用户进行身份验证,那么投票系统就会被滥用。

于 2009-06-10T22:01:52.650 回答
3

IP + 用户代理比 IP 独特得多;不确定它是否适合您的目的。如果您向他们发送 cookie,只要 cookie 存在,它就会被该计算机返回(如果他们使用相同的浏览器),无论 IP 是什么,但请注意,用户可以随时删除 cookie .

如果您完全担心使用此系统来防止投票欺诈,我认为您将无法绕过让他们拥有一个帐户。

于 2009-06-10T22:03:49.133 回答
2

我现在也在想同样的问题。我可能的方法如下:

  • (A) 您可以接受那些在您的站点(使用 SESSIONS)至少 15 分钟(用户阅读博客/站点中的文章的大致时间)的人的投票。当他们投票时,计时器将重置为下一次投票。这样一来,对于用户来说,删除 cookie 就没有用了。

  • (B) 您可以接受未注册人的投票,并获取他们的电子邮件地址并向他们发送验证链接以进行投票。当他们单击其电子邮件框中的验证链接时,您就可以实际计算选票了。这就像按电子邮件地址投票一样。

  • (C) (A) 和 (B) 的组合。通过这种方式,您可以确保每 15 分钟向单个用户发送一次验证链接,这不会很多:)

于 2013-01-01T13:08:46.177 回答
1

您可以尝试Evercookie或类似的解决方案。

于 2013-01-01T13:42:08.403 回答
1

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

https://panopticlick.eff.org这样的东西呢?还有一件事可以扔进去..

(如果这下线了:这是由常用的东西加上 + 浏览器插件详细信息 + 时区 + 屏幕尺寸和颜色深度 + 系统字体 + supercookies 组成的累积指纹)

于 2013-09-04T20:35:04.290 回答
0

另一种选择是使用会话。它将允许您将会话 ID 与 IP 一起存储。这将允许您从不同的会话中获得多个 IP。唯一的缺陷是浏览器的可能切换。添加一个 cookie 使其成为三重奏可以帮助清除洪水。

我过去只使用 IP 地址就完成了这项工作,这似乎在小范围内有效。

于 2012-01-19T17:56:08.863 回答