使用数据库饼干PHP记录当前的会话ID(PHP Storing Current Session ID

2019-06-27 05:19发布

我已经创建了一个使用Cookie并存储在数据库中的会话ID,因此您的登录将只与特定的会话ID工作一个登录系统。 我知道这有几个问题:

  1. 如果您登录其他设备上的会话ID的变化(没有多登录)
  2. 会话ID是真的确定作为登录的用户的唯一的事(我真的不知道,如果这是一个安全风险,因为cookie是特定领域)

不过,我想保留自带的饼干,同时仍保持东西安全的持续性登录。

有效地我想知道是否有更好的方式给用户安全地登录到使用cookie网站。

Answer 1:

首先,保持东西安全和持久的登录不走在一起; 你总是会以某种方式引入持久登录危及安全。

话虽如此,一个物品从查尔斯·米勒勾勒这样一个系统:

  1. 创建(足够大)的随机密钥,优选地通过使用/dev/urandomopenssl_random_pseudo_bytes()并将其与一个帐户(关联于数据库术语:一个单独的表与所述随机密钥作为主(或唯一的)索引和帐户外键); 关键将是cookie的值。

  2. 当非登录用户呈现一个cookie,关键和帐户,但抬头一看,在用户登录; 之后,使用中的钥匙更换为新的随机密钥(饼干太更新)。

  3. 谁通过单独的cookie登录的用户应当询问他们的密码再次,当他们访问敏感(账户)信息。

  4. 用户应该从他的所有设备注销的选择。

这也是使用更新会话使用ID一个很好的做法session_regenerate_id()每当用户登录(通过窗体或饼干)。 这可以防止有人从发动了对他人,并可能窃取他们的身份标识的会话固定攻击。

这种设计由巴里Jaspen的改进也可以处理身份盗用检测,可以发现在这里 。



文章来源: PHP Storing Current Session IDs in Database using Cookies
标签: php security