我想在我的网站上实现一个投票系统,而不必强迫他们创建一个帐户。他们最终将投票赞成/反对具有唯一 ID 的内容。
- 我知道我可以将条目存储在带有 IP/ID 的表中,但是如果有多个用户来自同一个 IP 怎么办?
- 有没有办法在不绑定到外部 IP 的情况下唯一地识别访问者?
- 如果创建了一个 GUID,将其存储在该计算机上的 cookie 中,以后可以在具有相同 IP 的同一台计算机上检索它吗?不同的IP?
对这些问题的任何想法或对更好方法的任何见解将不胜感激。
我想在我的网站上实现一个投票系统,而不必强迫他们创建一个帐户。他们最终将投票赞成/反对具有唯一 ID 的内容。
对这些问题的任何想法或对更好方法的任何见解将不胜感激。
是的,您可以使用 cookie 并将到期时间设置在很远的将来;但是,没有什么能阻止任何人清除缓存并再次投票。
您最好的选择是使用 cookie,并且不允许在 15 分钟内来自同一 IP 的投票......没有注册这是您能做的最好的事情。
您不仅可以根据 IP 来识别用户。例如,您可以包含 IP + 整个请求标头信息(例如浏览器、版本号、功能)并对其进行哈希处理。这将或多或少唯一地识别您的用户(不幸的是,不是 100%。)
原则上,您无法使用 cookie 来区分从未访问过的访问者和访问过但已删除 cookie 的访问者。因此,任何基于 cookie 的解决方案都容易受到微不足道的投票欺诈的影响。
考虑本着J Henry Lowengard的精神接受这一现实,他在 1990 年代中期在 WFMU 建立前 100 个网站时,在“您的投票已计入”页面上提供了一个标有“返回并投票”的按钮更多的!”
事实上,现在就去那里投票支持(或反对)StackOverflow!
您可以允许他们使用OpenId登录,这将允许他们使用现有帐户进行投票,而不必创建新帐户。
Google、Yahoo 和其他公司提供了允许您对用户进行身份验证的服务。
如果您不以某种方式对用户进行身份验证,那么投票系统就会被滥用。
IP + 用户代理比 IP 独特得多;不确定它是否适合您的目的。如果您向他们发送 cookie,只要 cookie 存在,它就会被该计算机返回(如果他们使用相同的浏览器),无论 IP 是什么,但请注意,用户可以随时删除 cookie .
如果您完全担心使用此系统来防止投票欺诈,我认为您将无法绕过让他们拥有一个帐户。
我现在也在想同样的问题。我可能的方法如下:
(A) 您可以接受那些在您的站点(使用 SESSIONS)至少 15 分钟(用户阅读博客/站点中的文章的大致时间)的人的投票。当他们投票时,计时器将重置为下一次投票。这样一来,对于用户来说,删除 cookie 就没有用了。
(B) 您可以接受未注册人的投票,并获取他们的电子邮件地址并向他们发送验证链接以进行投票。当他们单击其电子邮件框中的验证链接时,您就可以实际计算选票了。这就像按电子邮件地址投票一样。
(C) (A) 和 (B) 的组合。通过这种方式,您可以确保每 15 分钟向单个用户发送一次验证链接,这不会很多:)
您可以尝试Evercookie或类似的解决方案。
我知道这是旧的,但只是来到这里并有了一个想法..
像https://panopticlick.eff.org这样的东西呢?还有一件事可以扔进去..
(如果这下线了:这是由常用的东西加上 + 浏览器插件详细信息 + 时区 + 屏幕尺寸和颜色深度 + 系统字体 + supercookies 组成的累积指纹)
另一种选择是使用会话。它将允许您将会话 ID 与 IP 一起存储。这将允许您从不同的会话中获得多个 IP。唯一的缺陷是浏览器的可能切换。添加一个 cookie 使其成为三重奏可以帮助清除洪水。
我过去只使用 IP 地址就完成了这项工作,这似乎在小范围内有效。