我需要一个简单的用户识别系统 允许/禁止行动的目的。
这是 不是高安全性要求 并且可以犯错误(例如,相同的用户将使用不同的浏览器执行不允许的操作)。
为了减少抽象,让我们看看StackOverflow投票并假设我们想要允许 公众投票,但只有一次。
最简单的方法是使用a 曲奇饼:为每个答案设置一个新的cookie;将所有投票存储在一个cookie中(或以某种方式组合这些)。
由于这个问题,这有点不可靠 cookie大小/数量的限制。它还会一直将cookie发送到网站,而只需要1次操作。
所以从这个角度来看,我想避免使用cookie。
但是,不要在常规HTTP上做得更好。我不考虑IP / MAC地址等。
因此,根据上述背景,问题是:如何匿名识别用户并将该信息存储在客户端上?
谢谢。
匿名用户识别当然可以以相当高的准确度完成(并且正在完成)。而不是重新印刷这里的方法,而不是一点阅读,这将完全解决。
首先是EFF关于互联网上用户隐私数学(特别是数据背后的熵)的一点点。当然是可选的,但它表达了我们正在关注的模型。如果识别背后的数学不感兴趣,您可以跳过这个。
http://www.eff.org/deeplinks/2010/01/primer-information-theory-and-privacy
简而言之:仅使用浏览器代理,IP地址和其中一个示例中发布的其他数据(panopticlick) http://panopticlick.eff.org/ 您很有可能在不需要cookie的情况下唯一识别用户(只要它是同一台机器)。有关浏览器检测和唯一性研究的更多信息,请访问:
http://panopticlick.eff.org/browser-uniqueness.pdf
访问panopticlick页面并进行测试。它将向您展示要查找的内容(并提供示例和如何进行操作的来源),而.pdf将详细说明指纹识别方法的唯一性和细节。
例如,我的系统配置在1,301,578总测试中是唯一的,具有20.38位识别信息(减少熵)。根据他们的研究,在不使用任何客户端跟踪的情况下,在访问之间识别用户时,您将具有94.2%和99.1%的准确率。
将一个小的唯一标识符作为cookie存储在客户端,然后使用该标识符查找服务器端所需的任何相关会话数据。
MAC地址非常棒,但遗憾的是不可能通过HTTP(对于用户隐私来说是一件好事)。
Cookie和IP地址是您唯一的选择。
您可以在完成后删除cookie,只将其应用于相关路径,或者只需几小时/几天就可以使用它。