Php 为什么不为不同的用户提供相同的cookie';s设备?
以下是我的表格结构:Php 为什么不为不同的用户提供相同的cookie';s设备?,php,mysql,security,cookies,Php,Mysql,Security,Cookies,以下是我的表格结构: // users +----+--------+------------------------+------------------+-------------------------------+ | id | name | email | cookie | /* some other columns */ | +----+--------+------------------------+------
// users
+----+--------+------------------------+------------------+-------------------------------+
| id | name | email | cookie | /* some other columns */ |
+----+--------+------------------------+------------------+-------------------------------|
| 1 | Jack | jack0948@gmail.com | ojer0f934mf2... | |
| 2 | Peter | P_2009@ymail.com | ko4398f43043... | |
| 3 | John | mx_pro34@gmail.com | 0243hfd348i4... | |
+----+--------+------------------------+------------------+-------------------------------+
cookie
列包含一个字符串(作为保存用户日志的cookie),该字符串也被设置到用户的设备中。如您所见,我只为每个用户提供了一个字符串(作为cookie)。因此,所有用户的设备都有一个相同的cookie
我的问题是什么:大多数专业程序员告诉我: 如果每个设备都有自己的cookie,则会更安全(每个设备的cookie应该不同于其他设备的cookie,而不是所有设备的固定cookie)
为什么?为所有设备提供相同的cookie有什么错?正如您所见,我在数据库中只有一条cookie记录。因此,如果我为新设备更新该记录,那么以前的设备将注销。我猜cookie是指会话id。cookie实际上可以表示任何内容 您不应该在数据库中存储会话id。会话ID是临时值,应在每个新会话中更改。通过存储它们,您将面临几个问题:
- 会话窃取:如果有人发现他不拥有的会话id,它将始终有效。这是错误的
- 冲突:我想象您使用某种哈希方法生成这些值。在这种情况下,具有相同会话id的帐户之间可能会发生冲突
- 可能还有其他问题
通过存储会话id,您在这里实际执行的操作不是会话id,而是密码,以明文形式存储。这是非常错误的,我想cookie是指会话id,实际上cookie可以代表任何东西 您不应该在数据库中存储会话id。会话ID是临时值,应在每个新会话中更改。通过存储它们,您将面临几个问题:
- 会话窃取:如果有人发现他不拥有的会话id,它将始终有效。这是错误的
- 冲突:我想象您使用某种哈希方法生成这些值。在这种情况下,具有相同会话id的帐户之间可能会发生冲突
- 可能还有其他问题
通过存储会话id,您在这里实际执行的操作不是会话id,而是密码,以明文形式存储。这是非常错误的如何防止会话劫持?@CD001什么?我认为会话与所有设备使用相同的cookie无关。假设杰克使用开放式WiFi,我“窃听”并将他的cookie复制到我的手机上,然后访问你的网站,它怎么知道我不是杰克?@CD001
:-)
很公平。。!然而,你所说的发生的可能性很低。即使如此——这几乎就是会话劫持的定义;登录应仅在会话期间绑定到具有某种指纹/令牌系统的单个设备-使用同时设置了secure
和httpOnly
标志的cookie。这可能就是为什么大多数专业人士告诉你“如果每个设备都有自己的cookie,那么会更安全”你如何防止会话劫持?@CD001什么?我认为会话与所有设备使用相同的cookie无关。假设杰克使用开放式WiFi,我“窃听”并将他的cookie复制到我的手机上,然后访问你的网站,它怎么知道我不是杰克?@CD001:-)
很公平。。!然而,你所说的发生的可能性很低。即使如此——这几乎就是会话劫持的定义;登录应仅在会话期间绑定到具有某种指纹/令牌系统的单个设备-使用同时设置了secure
和httpOnly
标志的cookie。这可能就是为什么大多数专业人士告诉你“如果每个设备都有自己的cookie,那么会更安全”