我需要在不使用任何高级框架的情况下使用 cookie 在 java servlet 中实现一个简单的记住我选项。
首先,在登录时,我创建了 cookie 并将其发送给浏览器(客户端)。要存储在 cookie 中的值只是用户名 + 密码的简单哈希值。
我应该如何管理来自浏览器的传入请求,发送 cookie? 我的方法是在注册用户之间检查是否有任何用户的用户名 + 密码哈希值等于 cookie 中的值? 这种做法是否正确?
另外,我不明白过期日期的确切机制是什么。 cookie过期浏览器会删除吗,不会,如何判断cookie是否过期?
最佳答案
只要您不使用 HTTPS,您建议的方法就非常不安全。我建议生成某种 session token (例如使用 java.util.UUID.randomUUID()
)并将其设置为 cookie 并将其存储在服务器端的某个位置,以便您稍后可以识别用户在 cookie 中与此 session ID 相关联。
如果您认为发生了一些欺诈行为并且用户名/密码与您使用的 cookie id 之间没有直接关系,这使您有机会重置某个 session cookie。但请注意:此方法仍然容易受到中间人攻击。
关于过期:是的,cookie 会失效,如果过期可能会被浏览器删除。但是您可以将 cookie 设置为 3000 年的某个值,这样它就永远存在。
关于java servlet 使用 cookie 记住我的选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7806991/