gpt4 book ai didi

PHP 使用 Cookie 在数据库中存储当前 session ID

转载 作者:搜寻专家 更新时间:2023-10-31 21:14:32 24 4
gpt4 key购买 nike

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

  1. 如果您在另一台设备上登录, session ID 会发生变化(不能多次登录)
  2. session ID 实际上是唯一标识用户登录的东西(我不太确定这是否存在安全风险,因为 cookie 是特定于域的)

但是,我想保留 cookie 附带的持久登录,同时仍保持内容安全。

实际上,我想知道是否有更好的方法让用户使用 cookie 安全地登录网站。

最佳答案

首先,保持内容安全和持久登录不能同时进行;您总是会通过以某种方式引入持久登录来损害安全性。

话虽如此,一个article Charles Miller 概述了这样一个系统:

  1. 创建一个(足够大的)随 secret 钥,最好使用 /dev/urandomopenssl_random_pseudo_bytes() 并将其与帐户相关联(在数据库方面:一个单独的表,随机键作为主(或唯一)索引,账户作为外键);键将是 cookie 值。

  2. 当未登录的用户提供 cookie 时,将查找 key 和帐户并登录用户;之后,用过的 key 被替换为新的随 secret 钥(cookie 也被更新)。

  3. 仅通过 cookie 登录的用户在访问敏感(帐户)信息时应再次要求他们输入密码。

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

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

可以找到 Barry Jaspen 对这种设计的改进,它也可以处理身份盗窃检测 here .

关于PHP 使用 Cookie 在数据库中存储当前 session ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12044964/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com