4

我需要在带有 cookie 的 java servlet 中实现一个简单的记住我选项,而不使用任何高级框架。

首先,在登录时,我创建 cookie 并将其发送给浏览器(客户端)。存储在 cookie 中的值只是用户名 + 密码的简单哈希。

我应该如何管理来自浏览器的传入请求,发送 cookie?我的方法是在注册用户之间检查是否有任何用户的用户名 + 密码的哈希值等于 cookie 中的值?这种方法正确吗?

另外,我不明白到期日期的机制是什么。浏览器是否会在cookie过期时删除它,它不会,我如何检查cookie是否过期?

4

1 回答 1

4

只要您不使用 HTTPS,您建议的方法就非常不安全。我建议生成某种会话令牌(例如 use java.util.UUID.randomUUID())并将其设置为 cookie 并将其存储在服务器端的某个位置,以便您稍后可以在 cookie 中识别与此会话 ID 关联的用户。

如果您认为发生了一些欺诈行为并且用户名/密码与您使用的 cookie id 之间没有直接关系,这使您有机会重置某个会话 cookie。但请注意:这种方法仍然容易受到中间人攻击。

关于过期:是的,cookie 变得无效,如果过期,可能会被浏览器删除。但是您可以将 cookie 设置为 3000 年的某个值,这样它就会永远存在。

于 2011-10-18T12:56:29.917 回答