2012-07-10 119 views
0

我正在使用Bcrypt,如https://stackoverflow.com/a/6337021/999516所示将密码存储在数据库中,我正在尝试添加'记住我'功能,以保持用户使用Cookie记录。Bcrypt'记住我'cookie值

当用户成功登录时,我重新创建哈希并将其更新到数据库中。如果用户已经检查记住选项,我创建一个USER_ID的Cookie,到期,现在我不明白:我必须在Cookie中存储哪个值?完整的char(60)散列?

回答

2

我会建议实施一个单独的“记忆”哈希存储在cookie中,并有一个相应的数据库表将该哈希值与特定的用户ID和过期关联起来。将实际用户标识存储在Cookie中是一个非常糟糕的想法,因为您无法验证它们是否仅更改存储在Cookie中的用户标识。通过在cookie中存储一个完全独立的散列,您可以轻松地在数据库表中查找它属于哪个用户,并在其有效且未修改时自动将其重新登录。

+0

感谢您的建议。这似乎是一个合理的方式来做到这一点。我担心的一件事是,为了能够在网站的每个部分检测到用户cookie,无法添加cookie的安全访问权限,因为我必须在每个页面中设置“https”。你知道有什么办法来解决这个问题吗? – TMichel 2012-07-11 10:35:06

+0

我建议的“记忆”cookie与会话(应该存储实际登录的用户的位置)不同,并且完全独立。记忆cookie只需要在新会话启动时进行检查,这应该只发生在https验证功能上。 – 2012-07-11 21:27:48