这是我的表结构:
// 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记录。因此,如果我更新新设备的记录,那么之前的设备将被注销。
答案 0 :(得分:0)
我想通过cookie,你的意思是会话ID。 Cookie可以实际代表任何内容。
您永远不应该在数据库中存储会话ID。会话ID是临时值,应在每个新会话中更改。通过存储它们,您会遇到几个问题:
通过在每个新会话上生成会话ID,可以避免这些问题。但这意味着您的设备可能没有相同用户的相同会话ID。
通过存储会话ID,您实际在这里做的是不会话ID。它是一个密码,以纯文本格式存储。这非常错误。