【发布时间】:2011-01-23 04:53:35
【问题描述】:
我正在考虑在我的 web 应用上实现经典的'remember-me' 复选框,以允许在经过身份验证的用户返回访问我的网站后被“记住”。
Gmail、Facebook 和其他人都有这种功能,但我不太确定它有多安全。
像Spring Security 这样的Java 框架使用“基于哈希的令牌方法”。生成的令牌(使用用户名、密码、过期时间和私有密钥)存储在客户端的 Cookie 'token=567whatever567' 中。然后,该令牌会在用户下次回来时重新对用户进行身份验证。
我担心即使登录过程发生在 https 连接下,在每个后续的 http 请求中,cookie 都会在网络上以未加密的方式发送。
基本上每个人都可以读取令牌并重用它来进行身份验证。
我正在尝试了解 Gmail 或 Facebook 是如何实现此功能的。我可以在 FB 中看到一些 Cookie,例如 'presence=DJ267619445G09H0L15228675.....',其他在 Gmail 中。
我不太确定他们是否使用其他技巧来防止有人试图冒充其他用户。
我会尝试使用cURL 之类的东西来冒充自己,看看他们是否只使用特定的令牌来记住用户。
如果是的话,在我看来这是一个很大的安全问题。也许不是 facebook(我不在乎),但如果您不设置“Use always https”,则使用 Gmail,将使用 http 连接,它将通过互联网发送您未加密的令牌。
你怎么看?
我还注意到 Facebook 用户名/密码字段在 http(不是 https)下公开。在这方面,我也想知道:是否所有网站都通过 http 不安全“本质上”公开用户名/密码字段。一旦通过 http 发送请求,就没有“重定向到 https”可以解决“全世界可见的凭证”问题。
谢谢
编辑:
我的担心是有根据的http://codebutler.com/
感谢Firesheep 创作者指出问题!!!
【问题讨论】:
标签: security web-applications cookies https remember-me