【问题标题】:How to store session id as foreign key in phpmyadmin如何在phpmyadmin中将会话ID存储为外键
【发布时间】:2015-11-21 23:18:24
【问题描述】:

当用户使用 session_regenerate_id() 功能登录时,我在会话中存储了一个唯一的会话 ID。每次用户登录我的网站时,他都会获得一个新的会话 ID。

现在我想将他的一些数据保存在 db 表中。我想知道我应该如何存储数据,以便新表从主表的用户 ID 中获取外键。 因为我想将该信息与存储在主表中的用户 ID 相关联。由于安全性,我不想将会话中的主表 ID 列存储为 user_id。 请各位大开发者给我推荐一个使用核心 PHP 而不是框架的好方法。

开发人员会很容易理解我想问什么。我有点新:)

非常感谢 费萨尔

【问题讨论】:

  • 我不知道你想问什么...修正语法
  • 我刚刚存储了这样的会话 session_regenerate_id(); $_SESSION['logged_in'] = true; $_SESSION['ip'] = $_SERVER['REMOTE_ADDR']; $_SESSION['user_agent'] = $_SERVER['HTTP_USER_AGENT']; $_SESSION['last_login'] = time(); db中有一个用户表和一个详细信息表。我想将登录用户的详细信息存储在“详细信息”表中。想知道存储和关联两个表的最佳方式是什么。虽然我没有在会话中存储用户表 ID。
  • 为什么需要明细表?为什么不在会话中存储用户 ID?
  • 这就是我要问的。在 session 中存储 users 表的 ID 列数据是否安全?如果我这样做,会话劫持不是可能的吗?
  • 是的,它是安全的。不将用户 ID 与其他会话数据存储在同一个表中不会阻止会话劫持的发生。

标签: php database session foreign-keys


【解决方案1】:

使用会话时,会生成一个随机字符串来识别用户——这个字符串称为会话 ID。会话 ID 存储在 cookie 中。每次请求都会将 Cookie 发送到 Web 服务器。然后在服务器上将会话 ID 与会话数据连接起来。

攻击者无法更改会话数据,因此,在会话中存储用户 ID 不会构成安全威胁。

对于攻击者窃取某人的会话 ID 的情况,为了保护您可以检查用户代理和 IP 地址是否与创建会话时相同。如果没有,只需销毁会话。

要识别用户,您需要与用户连接会话。通过数据库中的表链这样做并不能提供任何安全性。

【讨论】:

  • 太好了,明白了。非常感谢先生。
猜你喜欢
  • 2018-01-29
  • 2019-01-26
  • 1970-01-01
  • 1970-01-01
  • 2010-12-31
  • 2014-01-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多