在这个时代,我们拥有不同的机器,设备和手机,但有时我们会想要以自己的名字来记住。
我有一个网站,其中一个人应该能够在他正在使用的设备上检查“记住我”,并且可以在家里的所有设备上使用它。
目前我正在使用一个记住我的函数,它创建一个哈希键,将其保存在cookie中,并保存在数据库中。 但是 - 当使用同一用户登录但在其他设备上时,数据库中的哈希键会被覆盖,因此第一台设备上的记忆功能会关闭。
我正在考虑停止一个会话表来举行不同的会话,(虽然它也可能为一个用户举办不同的会议)
所以问题:
如何使用php为设备设置/生成唯一的会话密钥。
浏览器指纹无法执行,因为我在不同的设备上使用相同的浏览器。
任何想法?
当然我需要一个安全的解决方案,防止将cookie复制到另一台设备或更改cookie信息(从用户到管理员)非常重要。
答案 0 :(得分:0)
如果开始使用哈希键而不是用户名,则不会添加任何额外的安全性。
只需使用包含用户名的Cookie即可。密码是为了安全。
答案 1 :(得分:0)
我会做会话表来存储所有会话。将用户的ID和会话ID存储在cookie中,这样当用户回来时,您可以检查它们是否都在表中。如果是,他们就不必重新登录。
答案 2 :(得分:0)
基本思想是存储来自不同设备的会话ID并将它们绑定到一个用户。在数据库级别上,这意味着您的用户表中没有“session_id”字段,而是具有“session_id”和“user_id”列的单独表。
请考虑会话固定和会话劫持的安全隐患。有关更安全的“记住我”系统的说明,请阅读以下文章:
http://fishbowl.pastiche.org/2004/01/19/persistent_login_cookie_best_practice/
http://jaspan.com/improved_persistent_login_cookie_best_practice
答案 3 :(得分:0)
当然我需要一个安全的解决方案,防止将cookie复制到另一台设备或更改cookie信息(从用户到管理员)非常重要。
最终,这是解决错误的问题。
防止这种情况的方法是:
就是这样。这与client authenticity的问题有关。有一些技术可以阻止懒惰攻击者(例如用户代理),但这些技术中的任何一种都可以被欺骗。