php cookies id,关于安全性:PHP使用Cookies将当前会话ID存储在数据库中

文章探讨了如何在保持用户登录的持久性的同时确保网站安全性。作者指出,传统的会话ID方法可能会阻止多设备登录,并提出了使用随机密钥的方案,将密钥存储在数据库和Cookie中进行验证。这种方法旨在增强安全性,防止会话固定攻击,并允许在访问敏感信息时重新验证密码。此外,建议在每次登录时更新会话ID,以增加安全性。
摘要由CSDN通过智能技术生成

我创建了一个使用Cookie的登录系统,并将会话ID存储在数据库中,因此您的登录将仅适用于该特定会话ID。 我意识到这有一些问题:

如果您在另一台设备上登录,则会话ID会更改(无多次登录)

会话ID实际上是唯一可以识别用户已登录的东西(由于cookie是特定于域的,因此我不确定这是否存在安全风险)

但是,我想保留cookie附带的持久性登录名,同时又要确保内容安全。

实际上,我想知道是否有更好的方法可以使用Cookie安全地将用户登录到网站。

"没有多重登录" ---我永远都做不到。 阻止多次登录的真正原因是什么? 所以不这样做,gmail不这样做。 但是为什么其他所有人都想要那个呢?

哦,我不想阻止多次登录,只是我当前的系统阻止了它,因为它存储了唯一的会话ID。

为什么这样做呢? 您在数据库中使用会话ID做什么?

我创建一个随机密钥,该密钥存储在Cookie和数据库中。 如果它们匹配,则您的会话有效,因此您可以继续登录。

你为什么要这么做?

为了提高安全性,我猜呢?

它与安全性有什么关系? 那么,Gmail的安全性很差吗?

首先,保持安全性和持久性登录并不能同时进行。您将始终以某种方式引入持久性登录来危及安全性。

话虽如此,Charles Miller的一篇文章概述了这样一个系统:

创建一个(足够大的)随机密钥,最好使用/dev/urandom或openssl_random_pseudo_bytes()并将其与一个帐户相关联(以数据库的形式:一个单独的表,该随机表作为主(或唯一)索引,而该帐户作为外键);键将是cookie值。

当未登录的用户显示cookie时,将查找密钥和帐户并登录。之后,将使用的密钥替换为新的随机密钥(cookie也将更新)。

仅通过cookie登录的用户在访问敏感(帐户)信息时,应再次询问其密码。

用户应该可以选择退出所有设备。

每当用户登录时(通过表单或cookie)使用session_regenerate_id()更新会话ID也是一个好习惯。这样可以防止某人发起针对其他人的会话固定攻击,并可能窃取其身份。

在此可以找到Barry Jaspen对这种设计的改进,它还可以处理识别盗窃的行为。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值