PHP会话的风险是什么?

PHP会话的风险是什么?,php,security,session,Php,Security,Session,所以每个人都说会话有安全风险,我想知道这些风险是什么?黑客可以用会话做什么? 这不是关于知道如何避免攻击,我想知道黑客是如何做到的,他们在做什么 我谈论的是PHP会话 关于这个问题,这里有一个很好的讨论:主要是风险: 考虑使用来对付它 另外,请看: PHP会话使用会话标识符,HAXXOR可以尝试所有可能的标识符,只需做一点小小的更改,就可以得到一个有效的标识符。此外,这些标识符存储在cookie中,可以被拦截。第三种可能性是PHP可能存在缺陷,并使用相同的标识符创建两个会话。此外,会话数

所以每个人都说会话有安全风险,我想知道这些风险是什么?黑客可以用会话做什么?

这不是关于知道如何避免攻击,我想知道黑客是如何做到的,他们在做什么


我谈论的是
PHP会话

关于这个问题,这里有一个很好的讨论:

主要是风险:

考虑使用来对付它

另外,请看:


PHP会话使用会话标识符,HAXXOR可以尝试所有可能的标识符,只需做一点小小的更改,就可以得到一个有效的标识符。此外,这些标识符存储在cookie中,可以被拦截。第三种可能性是PHP可能存在缺陷,并使用相同的标识符创建两个会话。此外,会话数据存储在磁盘上的文件中,这是不安全的。相反,数据库需要密码


前两个原因实际上是无法预防的,但第三个和第四个原因是可以预防的。例如,将会话数据存储在数据库中。

最大的风险是IP与会话没有关联,并且会话ID未经验证就被接受,而会话ID来自启动它们的IP(或者至少来自同一子网中的IP)。这允许某人向已启动的会话发送链接,在该会话中,无意中被复制者可能需要登录。一旦这样做,会话就被视为已登录——发送链接的黑客(已经拥有会话ID)可以访问我们的rube帐户。或者,也可能发生另一种情况,即用户已经登录,并且没有启用cookie,因此每个链接中都会存储一个PHPSESSID值。如果用户粘贴到某人的链接,他们也有效地粘贴了对该站点的访问权限


为了防止这种情况发生,一个好的站点将避免在有东西存储之前启动会话,并跟踪会话的用途。要利用此漏洞,攻击者将查找从主页的每个链接中发送PHPSESSID查询字符串值的站点,或在索引页上发送类似名称的cookie。

sAc的答案非常好。但是,不要因此排除“会话”

我已经成功地部署了自定义会话,其中包括修复劫持、密码反转(md5/rainbow)和(如果使用正确的话)会话固定

我所说的“成功部署”是指通过渗透测试,并且(当然)实际上比传统部署更好


没有“秘密”或模糊的安全性;基本上,它会为每个用户帐户生成一个随机(并且在数据库方面是唯一的)数字(实际上,在我的例子中是一个guid),并将guid+用户名存储为普通方法(而不是用户名+散列密码)。接下来,它将此guid与用户的ip地址绑定。并非绝对正确,但使用guid和每个ip已经是对当前会话系统的改进。当然,在特定的目标定位后会出现一些缺陷(例如ip欺骗+被劫持的guid和用户名)。但总的来说,这是一种更好的选择。

通过组合IP地址和会话id,您可能会遇到许多问题,尤其是在AOL用户方面。@Kieran Allen:如果在某种程度上不将它们组合在一起,您将允许来自地球对面的两个人共享同一会话,至少其中一个是无意中共享的。在这种情况下,每个人都可以接近是一件坏事。当然,正如我提到的,您可以稍微放宽限制,使其来自同一子网(地址块),但是如果一个AOL用户可以同时来自网络的十几个不同部分,那么是的。AOL用户将比他们现在更糟糕。这是一个折衷。如果你把事情限制得足够安全,那么在一个30岁的破烂浏览器中,总会有一些傻瓜使用ROT13“加密”,来自美国在线,他们抱怨他们不能使用你的网站。你必须选择要吸引多少访问者,以及是否值得让你的网站更容易被黑客入侵。对于一些网站来说,安全性不值得这么麻烦……对于其他网站来说,是的。赵-我不太理解你的观点。如果没有巨大的安全缺陷,MSIE 5可以处理新的会话管理系统,考虑到它的最小cookie大小是~4k。加入SSL支持(从MSIE2开始),它已经比一些现代系统更加安全。我并不是说MSIE更好,相反,如果MSIE做到了,其他人一定会做得更好。问题是,总会有人不愿意或无法遵守你制定的任何安全政策。你要么迎合他们,让你的网站更受欢迎,但更不安全,要么你保持你的政策到位,并告诉散兵游勇去弯曲。(我说的不是特定的浏览器,正是因为这个原因:人们太过拘泥于细节。现在不要再关心IE、Firefox、Lynx、Wget等等。)问题在于服务器对会话的管理,而不是客户端。客户端甚至不应该处理会话,除了向服务器传递cookie之外,会话ID的长度为128位。这已经足够大了,你不可能在太阳熄灭之前尝试所有可能的身份证。@cHao-我不相信,但这仍然是一个长期的估计。@Christian:我计算过了。以每秒10亿次的速度,尝试所有可能的128位ID需要10782602312994088449800年。即使考虑到你试图在给定的计算机上找到已经使用的十亿个ID中的一个(当然,假设会话的文件还没有被删除),仍然需要大约一万亿年才能找到一个,除非你是工作中彩票的那类人。