ruby-on-rails - 如何匿名识别用户并存储该信息

标签 ruby-on-rails http authentication browser

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

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

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

最简单的方法是使用 cookie:为每个答案设置一个新的 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%。

关于ruby-on-rails - 如何匿名识别用户并存储该信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4445404/

相关文章:

ruby-on-rails - 链轮在Rails 5上需要Ruby版本> = 2.5.0

ruby-on-rails - Amazon s3/Cloudfront Ruby on rails 视频流

c++ - 关于使用 C++ 和 poco 从 REST-ful 资源访问数据的问题

php - 'remember me' 功能的最佳实践?

javascript - 在 HTML5 混合应用程序中登录和注册?

ruby-on-rails - rails : TypeError: wrong argument type Class (expected Module)

ruby-on-rails - emacs-rails vs rinari?

Android HTTP 发布到不带参数的 URL

web-services - iOS 4.3 - 尝试 Web 服务连接时网络连接丢失?

python - Google App引擎用户身份验证(python 3.7)