【发布时间】:2016-10-29 14:40:27
【问题描述】:
这是我的表结构:
// 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 记录。因此,如果我为新设备更新该记录,那么之前的设备将被注销。
【问题讨论】:
-
如何防止会话劫持?
-
@CD001 什么?我认为 session 与为所有设备使用相同的 cookie 无关。
-
说 Jack 在一个开放的 WiFi 上,我“窃听”并将他的 cookie 复制到我的手机并访问您的网站,它怎么知道我 不是 Jack?
-
@CD001
:-)够公平的..!不过,你说的发生的可能性很低。 -
即便如此——这几乎就是会话劫持的定义;登录应仅在会话期间绑定到具有某种指纹/令牌系统的单个设备 - 使用设置了
secure和httpOnly标志的 cookie。这可能就是为什么大多数专业人士会告诉您“如果每个设备都有自己的 cookie 会更安全”
标签: php mysql security cookies