1

阅读了http://jaspan.com/improved_persistent_login_cookie_best_practice之类的文章后,我想知道是否有一种相当好的方法来实现这一目标。

所以,我想要的是让一个骗子很难偷走一个cookie,并在他自己的电脑上使用它。使用安全 cookie 是不可能的。我一直在考虑的是将有关用户浏览器的一些信息散列到 cookie 中,一旦尝试自动登录,就会对其进行验证。

所以,我现在面临的问题是要散列什么信息。浏览器名称应该没问题,但版本号会使每次浏览器升级时的自动登录无效。特征嗅探也是如此。我一直在考虑的是对浏览器名称和用户的区域设置进行哈希处理,以获得一种合理的某种方式来抵消 cookie 盗窃。

我在正确的轨道上吗?有没有一种事实上的方式来做到这一点?

系统不需要 100% 坚不可摧,只要合理就行。

PS:您不必担心cookie中的其他数据。我只是对“不要偷这个cookie”部分感到好奇。

编辑 1:正如我在其他地方得到的回答,散列客户端信息的一个弱点是攻击者知道使用了客户端信息并在 cookie 被盗时复制客户端信息就足够了。当然,攻击者需要多做一步,但不像我想象的那么大……还有什么想法吗?

4

1 回答 1

3

首先,没有万无一失的方法可以解决这个问题,但我会尽力给你一个更合适的答案。但是,我将从您可能应该考虑的其他一些事情开始。

首先从如何避免用户的 cookie 受到损害开始。可能最常见的 cookie 劫持方式是侦听不安全的 HTTP 流量、使用 XSS 攻击或利用错误定义的 cookie 路径。

您提到在您的情况下安全 cookie 是不可能的,但我想指出这一点,以供其他读者进一步参考。确保您的网站一直使用 HTTPS,这样即使用户使用未加密的无线互联网访问,您也可以确保访问您网站的流量是安全的。

确保您的站点为 cookie 定义了正确的域和路径,换句话说,确保 cookie 不会发送到不应访问 cookie 的域的部分。

在您的 cookie 中启用 HttpOnly。这意味着您的 cookie 仅在 HTTP(S) 请求上发送,并且无法读取,例如使用 JavaScript。这将减少用户的 cookie 被 XSS 窃取的机会。

也就是说,要回答您的实际问题,通过其他方式识别用户的常用方法可能是使用浏览器指纹。浏览器指纹是使用用户环境的唯一信息构建的哈希,例如,指纹可以包括浏览器插件详细信息、时区、屏幕大小、系统字体和用户代理。但是请注意,如果这些更改中有任何更改,指纹也会更改,因此,在您的情况下,cookie 无效 - 从安全的角度来看,我不一定认为这是一件坏事。

于 2011-08-23T07:55:28.460 回答