【发布时间】:2011-03-14 13:11:06
【问题描述】:
所以大家都说session有安全风险,我想知道这些是什么风险?黑客可以用会话做什么?
这不是要知道如何避免攻击,我想知道黑客是怎么做的,他们在做什么。
我说的是PHP SESSIONS。
【问题讨论】:
所以大家都说session有安全风险,我想知道这些是什么风险?黑客可以用会话做什么?
这不是要知道如何避免攻击,我想知道黑客是怎么做的,他们在做什么。
我说的是PHP SESSIONS。
【问题讨论】:
【讨论】:
sAc 的回答非常好。但是,不要因此排除“会话”。
我已经成功部署了自定义会话,其中包括修复劫持、密码反转(md5/rainbow)和(如果使用正确)会话修复。
“成功部署”是指通过了渗透测试,并且(当然)实际上比传统的要好。
没有“秘密”或晦涩难懂的安全性;基本上,它为每个用户帐户生成一个随机(和数据库唯一)数字(实际上,在我的情况下是一个 guid),并将 guid+用户名存储为正常方法(而不是用户名+散列/加盐密码)。接下来,它将这个 guid 与用户的 IP 地址绑定。并非万无一失,但使用 guid 和 per-ip 已经是对当前会话系统的改进。当然,在特定目标(例如 ip 欺骗+被劫持的 guid 和用户名)之后会出现漏洞。但总的来说,这是一种更好的选择。
【讨论】:
这里有一个很好的讨论:http://phpsec.org/projects/guide/4.html
【讨论】:
最大的风险是,如果 IP 未与会话关联,并且会话 ID 在未验证它们来自启动它们的 IP(或至少同一子网中的 IP)的情况下被接受。这允许某人发送一个链接到一个已经开始的会话,不知情的骗子可能需要登录。这样做后,SESSION 被认为已登录——并且发送链接的黑客(他已经拥有会话 ID ) 可以访问我们 rube 的帐户。或者它可能会发生相反的情况,用户已经登录并且没有启用 cookie,因此 PHPSESSID 值存储在每个链接中。如果用户将链接粘贴到某人,他们也有效地粘贴了对网站的访问权限。
为了防止这种情况发生,一个体面的网站会避免启动会话,直到其中存储一些内容,并跟踪会话的目标 IP。为了利用它,攻击者会寻找在主页的每个链接中发送 PHPSESSID 查询字符串值的站点,或者在索引页面上发送类似名称的 cookie。
【讨论】:
PHP 会话使用会话标识符,并且 haxxor 可以尝试所有可能的标识符,只需稍加更改即可获得有效标识符。此外,这些标识符存储在 cookie 中并且可以被拦截。第三种可能性是 PHP 可能有问题并创建两个具有相同标识符的会话。此外,会话数据存储在磁盘上的文件中,这是不安全的。相反,数据库需要密码。
前两个原因实际上是无法避免的,但是第三个和第四个原因是可以的。例如,将会话数据存储在数据库中。
【讨论】: