能否伪造PHP会话ID?

5
如果页面检查PHP Session是否存在:
if (isset($_SESSION['secret'])) {...grant access to EVERYTHING!!!}

我如何在没有访问页面后端代码的情况下,在我的计算机上生成$_SESSION['secret']? 我试图入侵国际空间站...


很简单,你不需要做什么。。(哦,圣诞快乐) :) - dbf
1
你可以窃取已经认证的某个人的会话cookie。 - Blender
2
外星人不使用PHP :| .. 他们使用Delphi .. - dbf
1
很抱歉,ISS运行在Microsoft IIS上,这意味着使用asp.net而不是php... - dev-null-dweller
1
@dev-null-dweller 如果我本来想黑掉一台Linux机器,但结果发现它是Windows的话,我真的会忍不住笑出声来 :P - dbf
显示剩余4条评论
1个回答

4

你不能这样做。或者说,你可以在自己的机器上生成$_SESSION ['secret'],但它是一个不同的值,你不能简单地将其放到ISS上。除非脚本中存在漏洞或安全隐患,否则你无法直接修改$_SESSION超全局变量。


我明白了,换句话说,本地存储的会话不能影响我的服务器上的会话?(因为据我所知,PHP 会话是在服务器上创建和存储的,这就是它们与传统的 cookie 的区别所在?) - d-_-b
1
好的,明白了。你无法在不在服务器上的情况下修改服务器上的会话数据。 - Charles
除非脚本中存在错误或安全漏洞,否则不会出现问题,或者服务器配置极差(register_globals)。 - dev-null-dweller
1
有趣的是你提到了cookies。这是会发送给客户端的session的一部分。但它只用于在下一个请求中识别session。你可能听说过“session forging”的术语,它本质上是编造或窃取session id,将其放入cookie中,从而允许你接管session。然而,还有其他方法可以阻止这种情况(例如检查IP和浏览器代理字符串),即使你设法做到这一点,你仍然无法直接访问$_SESSION变量或任何其他变量。 - GolezTrol
@dev-null-dweller,这确实是脚本之外的安全漏洞。我真诚地希望ISS Web控制界面没有如此糟糕的配置。 ;) - GolezTrol

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接