是否有可能“盗用”会话变量(我不想知道如何)

时间:2010-08-09 19:56:53

标签: php session security session-variables

我目前正在使用php进行网站,我们使用Session变量来存储每个用户的权限级别。

例如,如果你们中的任何一个人进入网站,你将自动获得一个值为“member”的会话变量。

我要问的是:攻击者是否可以访问网站并修改“admin”而不是“member”的会话变量值

我不是在问,如果可能的话,如果是的话,攻击者需要什么样的特殊访问权限(例如:访问代码,......)

我有一个替代解决方案,即使用随时间过期的令牌替换权限值。

第二种解决方案实施的时间更长。

感谢您的帮助!

6 个答案:

答案 0 :(得分:11)

不,除非:

  • 攻击者可以访问会话变量的存储(通常是服务器的文件系统,但也可以是例如数据库)
  • 更有特权的用户的攻击者intercepted a session cookie
  • 攻击者成功修复了更多特权用户的会话(请参阅session fixation攻击)。

答案 1 :(得分:3)

根据您的描述,我假设您没有将权限存储在cookie中。因此,他们可以访问的唯一方法是猜测/强制管理员会话ID或使用某些跨站点脚本攻击。如果您的会话ID足够长,则第一种方法很难完成。

答案 2 :(得分:3)

攻击者窃取活跃会话的风险较高,您可以在此处找到:

答案 3 :(得分:2)

您的会话变量应该是安全的,因为会话存储在服务器上。但是,为了将特定客户端与特定会话相关联,通常会设置包含会话ID的cookie,并且攻击者可以通过修改其会话ID cookie来尝试访问不同用户的会话(通过暴力或以某种方式抓住别人的饼干。)

答案 4 :(得分:2)

这取决于您存储会话的方式。如果它在URL中,那么是。如果它在cookie中,那么也许。

答案 5 :(得分:2)

除非你的应用程序存在安全漏洞,否则有人不能单独更改会话变量 - 这些变量存储在服务器上,客户端永远不能直接访问它们。

但他们可以做的是通过转到http://your.site.com/?PHPSESSID=2342f24502ade525之类的网址来更改其会话ID。滥用的可能性有两个:(1)如果他们碰巧以某种方式知道登录用户的会话ID,会话ID将让他们冒充该用户,为他们提供用户拥有的所有访问权限; (2)如果他们可以欺骗某人去一个附有会话ID的URL,并且该人登录,他们现在知道该用户的会话ID(因为他们提供了它!),我们又回到了(1) )。