当用户登录到我的站点时,它会创建2个Cookie,其中一个具有会话ID(与后端的用户ID相关)和一个记住我的Cookie,持续3个月。还记得我的cookie,需要一个会话cookie吗?
记住我的cookie被构造为:
userid:timeout:hash
其中散列是userid:timeout
一个HMAC SHA256哈希值,以防止篡改。
如果会话ID不存在(用户关闭浏览器并再次打开它,以使cookie不存在或者会话ID在memcached中不存在),它将查看记住的cookie并重新生成一个新的会话cookie ,假如它没有超时并且散列是正确的。
但是我根本没有看到拥有会话cookie的要点,因为会话ID只是指向后端的用户ID。我可以使用记住我的cookie来取回当前用户。
所以我想完全取消会话cookie,并有兴趣听到这方面的一些想法。这种方法听起来相对安全吗?我可以做得更好吗?
在此先感谢!
任何人都可以计算SHA哈希值。你需要使用HMAC。 – SLaks 2013-03-05 15:16:14
这是一个HMAC,将更新问题 – fire 2013-03-05 15:16:44
您的用户没有选择不“记住我”?如果他们不想登录3个月会怎么样?他们必须注销?我可能是错的,但我觉得很多人依靠关闭浏览器来清除他们“不记得”的登录名 - 因为传统上这是如何完成的。 – 2013-03-05 15:20:55