php – 记住我的cookie,需要会话cookie吗?
当用户登录我的站点时,它会创建2个cookie,一个具有会话ID(与后端的用户ID相关),并记住我持续3个月的cookie.
记住我的cookie构造如下: userid:timeout:hash 散列是用户ID的HMAC SHA256散列:超时以防止篡改. 如果会话ID不存在(用户关闭浏览器并再次打开它以便cookie消失,或者memcached中不存在会话ID),它会查看remember cookie并重新生成一个新的会话cookie,前提是它已经存在没有超时,哈希是正确的. 但是我根本没有看到会话cookie的意义,因为会话ID只指向后端的用户ID.我可以使用remember me cookie来检索当前用户. 所以我想完全废弃会话cookie,并有兴趣听到一些关于此的想法.这种方法听起来相对安全吗?我可以做得更好吗? 提前致谢! 解决方法
是的,对于大多数情况来说它确实足够安全,但为什么在可以避免的情况下在cookie中包含用户特定数据呢?此外,这有一个小缺点:
如果用户设法从其他用户窃取cookie,您必须更改生成cookie的整个方式或用户将始终有权访问,从而重置每个人的cookie,会发生什么情况.想象一下,这是你的cookie被盗…… 这是我的解决方案:在用户表中创建另一行名为’userhash’.当用户登录时,您生成一个随机哈希而不进行任何输入,只是随机,并将其存储在表和cookie中.然后你只需要在cookie中存储userhash:timeout.您检查数据库是否存在,如果存在,那就是您的用户.当用户注销时,cookie和数据库中的行将被删除.出于显而易见的原因,您必须在比较之前检查cookie是否存在(将有许多空). 注意:此方法只允许一次注册一个cookie,因此没有笔记本电脑桌面.这很好,因为偷窃变得更加困难,因为只要真正的用户不登录就会持续,而且因为它只允许1台计算机而导致错误.但你看到了这个想法,以及如何使用这种方法,但有几台计算机登录…类似facebook. PD,如果你说你的应用程序必须实际上有多安全,那就太好了…… PD2,如果您还没有考虑过,还有其他更严重的安全问题(SSL就是一个). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |