用户可以在PHP中更改$ _SESSION的值吗?

Cas*_*Roy 33 php session

这是我的想法,我想知道是否可能,将信息存储在PHP的$ _SESSION变量中有多安全?

小智 49

在$ _SESSION变量中存储变量有两个"不安全"的潜力.

  • 另一个答案描述的第一个被称为"会话固定".这里的想法是,由于会话ID存储在cookie中,因此ID可以更改为其他用户的ID.如果用户在每个会话中获得新ID,则这不是问题,因此很难找到当前工作会话的ID并劫持它.
  • 第二个完全取决于您的代码.如果您的代码泄漏了存储在$ _SESSION中的机密信息的值,那么它就是不安全的.如果您的代码允许用户控制该信息的值,则它是不安全的.否则,如果$ _SESSION变量中存在某些内容,并且您的代码永远不允许用户查看或写入,那么它就是安全的.

  • 泄漏会像'Hello,$ _SESSION ['username'],你的密码是$ _SESSION ['password']`.会话数据保留在服务器上,除非您明确输出代码的任何部分,否则远程用户无法查看. (7认同)
  • +1 因为这是 [迄今为止唯一的响应] 解决了不安全编码所允许的漏洞。 (2认同)

Yah*_*hel 12

PHP Session的工作原理是将PHPSESSIDcookie 存储在最终用户的计算机上,该计算机充当基于服务器的会话信息的访问密钥.该cookie值是一个散列字符串(其安全性取决于您的PHP设置),用于将特定浏览器链接到您设置的特定会话值.

那个字符串看起来像b420803490a9f0fe8d6a80657fec3160.因此,最终用户可以更改该字符串,但随后它们的会话将变为无效,因为它几乎肯定不会与PHP存储的那个匹配,并且它们将无法访问数据.

正如其他人所提到的那样,存在一种风险,即某人PHPSESSID被暴露,而人们则利用这种风险劫持其他人的会话.


mel*_*okb 5

$_SESSION完全存储在服务器上,因此用户不能修改它。但是,会话劫持漏洞可能会导致用户连接到另一个用户的会话。