您的位置:首页 > 其它

Session劫持与Session-ID的安全长度

2016-01-28 19:08 225 查看

Session劫持

Session劫持从Web Session控制机制处发动***,通常是对Session令牌管理的剥夺。因为HTTP通信使用许多不同的TCP连接,Web服务器需要一个方法来识别每个用户的连接。最有用的方法是当一个客户端成功认证后,该Web服务器向该客户端浏览器发送令牌。Session令牌通常由可变长度的字符串组成,并且它可以以不同的方式存储,如在URL中,在HTTP请求的cookie报头中(request header),或在HTTP请求中的其报头,或者在HTTP请求的主体中。Session劫持***通过窃取或预测有效的Session令牌来获得未经授权Web服务器访问权限。

示例

例1 Session 代理人劫持在这个例子中,我们可以看到,第一个***者使用代理来捕捉一个有效的Session令牌称为“SessionID”,然后他使用该有效Session令牌获得未经授权的Web服务器访问权限。

例2 跨站点脚本******者可以通过在客户端上运行恶意代码来获取Session令牌。这个例子说明了如何***者可以利用XSS***窃取Session令牌。如果***者发送恶意的JavaScript代码到受害人访问网站中或当受害者点击链接时,JavaScript将运行***者的注入脚本。如图中所示,它可以显示当前Sessioncookie的值;使用相同的技术则可能创建将此Session发送给***者。
<SCRIPT>alert(document.cookie);</SCRIPT>


注* 防止Cookie被盗请参见: 提高NodeJS网站的安全性:Web服务器防******技巧

Session ID的安全长度

Session ID应至少为128位长,以防止蛮力Session猜测***。在WebLogic中部署中描述到应指定至少给Session ID指定128位的长度。较短的Session ID使应用程序容易遭受蛮力Session猜测***。如果***者猜测到一个身份验证的用户Session ID,他可以接管用户的Session。猜测有效Session ID所需时间的预测公式:
(2^B + 1) / (2 * A * S)
其中:B是Session ID的位数

A是***者可以每秒尝试数

S是有效的Session ID数量,及在任何给定时间内被猜到的数目

如果***者操纵数千个僵尸计算机,他们可以尝试每秒猜测数万个SessionID这是合理的。如果该网站的人气很高,访问量很大,这种高流量的猜测可能在一段时间内被忽视。上有效的Session ID是提供给被猜出的数量的下限是有活性的网站上,在任何给定时刻的用户的人数。然而,放弃自己的Session,而不会记录任何用户将增加这个数字。 (这是有一个短期活动Session超时许多很好的理由之一。)有64位的Session ID。对于一个大型网站,假设***者可以每秒尝试10000次的猜测,并且当前存在10000个有效的Session ID。基于这些假设,***者成功地猜测到有效Session ID的时间将小于4分钟。现在假设一个128位Session ID。同样是一个访问量非常大的网站,***者可能会尝试每秒10000次的猜测与可供猜到10000个有效的Session ID。根据这些假设,***者在预期的时间内成功地猜出一个合法的Session ID将大于292年。整理自:Insufficient Session-ID LengthSession hijacking attack【我是搬运工~~】转自:http://www.tuicool.com/articles/zArY32n
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  信息安全