我需要在带有cookie的java servlet中实现一个简单的记住我选项,而不使用任何高级框架。
首先,在登录时,我创建cookie并发送它以响应浏览器(客户端)。要存储在cookie中的值只是用户名+密码的简单哈希值。
如何管理来自浏览器的传入请求,发送cookie? 我的方法是在注册用户之间检查是否有任何用户的用户名+密码的哈希值等于cookie中的值? 这种方法是否正确?
另外,我并不清楚到期日的确切机制是什么。浏览器是否在过期时删除cookie,不是,如何检查cookie是否过期?
答案 0 :(得分:4)
只要您不使用HTTPS,您建议的方法就非常不安全。我建议生成某种会话令牌(例如使用java.util.UUID.randomUUID()
)并将其设置为cookie并将其存储在服务器端的某个位置,以便稍后您可以在cookie中识别与此会话ID相关联的用户。
如果您认为发生了一些欺诈,并且用户名/密码与您使用的Cookie ID之间没有直接关系,则可以重置某个会话Cookie。但请注意:这种方法仍然容易受到中间人攻击。
关于过期:是的,cookie变为无效,如果过期,可能会被浏览器删除。但是你可以将cookie设置为3000年的某些东西,所以它永远存在。