如何匿名识别用户并存储该信息

时间:2010-12-14 23:39:56

标签: ruby-on-rails http authentication browser

我需要一个简单的用户识别系统,用于允许/禁止操作的目的

不是高安全性要求,可以犯错误(例如,同一个用户将使用不同的浏览器执行不允许的操作)。

为了不那么抽象,让我们看看StackOverflow投票,并假设我们希望允许公众投票,但只允许一次。

最简单的方法是使用 Cookie :为每个答案设置一个新的Cookie;将所有投票存储在一个cookie中(或以某种方式将它们组合在一起)。

由于Cookie大小/数量的限制,这有点不可靠。它还会一直将cookie发送到网站,而只需要1次操作。

所以从这个角度来看,我想避免使用cookie 但是,不要在常规HTTP上做得更好。我不考虑IP / MAC地址等。

因此,根据上述背景,问题是:如何匿名识别用户并将该信息存储在客户端上?

感谢。

3 个答案:

答案 0 :(得分:7)

匿名用户识别当然可以以相当高的准确度完成(并且正在完成)。而不是重新印刷这里的方法,而不是将其全部解读。

首先是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%。

答案 1 :(得分:3)

在客户端将一个小的唯一标识符存储为cookie,然后使用该标识符在服务器端查找所需的相关会话数据。

答案 2 :(得分:1)

MAC地址非常棒,但遗憾的是不能通过HTTP实现(对用户隐私而言是好事)。

Cookie和IP地址是您唯一的选择。

您可以在完成后删除Cookie,只将其应用于相关路径,或者让它在几小时/几天内过期。