【发布时间】:2013-04-09 09:36:36
【问题描述】:
我想为已登录的用户实现一个简单的记住我,以便他们在关闭浏览器后保持登录状态。所以我正在考虑创建一个 cookie,它包含由 UUID.randomUUID 生成的唯一密钥,并在服务器端将其映射到用户名。
这足够安全吗?有哪些风险?我应该采取预防措施来防止黑客尝试随机密钥吗?
我正在考虑使用 spring security 或 apache shiro 之类的身份验证框架,但我找不到它们给我带来的任何好处(我不需要复杂的访问控制,只需用户注册/登录)。我是否遗漏了一些在安全方面至关重要的东西?
更新
我想我的问题实际上是:像 spring 和 shiro 这样的框架是否做了一些更复杂的事情来记住我的功能,从而产生我可能无法匹配的安全性?
【问题讨论】:
-
足够安全吗?取决于什么。任何重要的事情都不应该这样处理。黑客可以并且将会尝试随机密钥——或者更糟的是,进行中间人攻击并通过窃听网络来读取您的会话 ID。
-
你很容易受到重放攻击,例如。就安全性而言,任何不颁发客户证书的东西都确实有点模糊。有关重放攻击的信息,请参阅en.wikipedia.org/wiki/Replay_attack
-
通过 http 发送时,一切都是不安全的。大多数网站都生活在这个现实中。至于使用 uuid,我认为这比 sha1(username . uuid); 更可预测。使它们特别成问题的 cookie 是它们在每个客户端请求中发送。
标签: java spring-security shiro