【发布时间】:2011-07-04 13:16:54
【问题描述】:
这是我的想法,我想知道是否有可能,将信息存储在 PHP 的 $_SESSION 变量中有多安全?
【问题讨论】:
这是我的想法,我想知道是否有可能,将信息存储在 PHP 的 $_SESSION 变量中有多安全?
【问题讨论】:
PHP Session 的工作方式是在最终用户的计算机上存储一个PHPSESSID cookie,作为基于服务器的会话信息的访问密钥。该 cookie 值是一个散列字符串(其安全性取决于您的 PHP 设置),用于将特定浏览器链接到您设置的特定会话值。
那个字符串看起来像b420803490a9f0fe8d6a80657fec3160。因此,最终用户可以更改该字符串,但随后他们的会话将变为无效,因为它几乎肯定不会与 PHP 存储的字符串匹配,并且他们将无法访问数据。
正如其他人所提到的,存在风险,即某人的PHPSESSID 被暴露,人们使用它来劫持其他人的会话。
【讨论】:
在 $_SESSION 变量中存储变量有两种潜在的“不安全性”。
【讨论】:
Hello, $_SESSION['username'], your password is $_SESSION['password']。会话数据保存在服务器上,除非您通过代码明确输出其中的任何部分,否则远程用户永远无法查看。
$_COOKIES 在客户端计算机上的安全性较低,$_SESSION 存储在服务器上。它的位置由 php.ini 的session.save_path 确定。但是仍然存在session fixation等安全问题
【讨论】:
$_SESSION 完全存储在服务器上,因此用户无法修改它。但是,会话劫持攻击可能会导致用户连接到另一个用户的会话。
【讨论】: