我目前正在使用php进行网站,我们使用Session变量来存储每个用户的权限级别。
例如,如果你们中的任何一个人进入网站,你将自动获得一个值为“member”的会话变量。
我要问的是:攻击者是否可以访问网站并修改“admin”而不是“member”的会话变量值
我不是在问,如果可能的话,如果是的话,攻击者需要什么样的特殊访问权限(例如:访问代码,......)
我有一个替代解决方案,即使用随时间过期的令牌替换权限值。
第二种解决方案实施的时间更长。
感谢您的帮助!
答案 0 :(得分:11)
不,除非:
答案 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) )。