课程名称: 大话HTTP协议 漫画+图解打造的编程基础课程
课程章节: 会话管理机制
课程内容:
会话管理概述
- 绝大多数Web应用中,会话管理机制是一个基本的安全组件
- 会话管理在应用程序执行登录功能时显得特别重要
- 因为,它可在用户通过请求提交他们的证书后,持续向应用程序保证任何特定用户身份的真实性
- 由于绘画机制所发挥的关键作用,他们成为针对应用程序的恶意攻击的主要目标
- 若攻击者能够破坏应用程序的会话管理,他就能轻易避开其实施的验证机制,不需要用户证书即可伪装成其他应用程序用户
- 如果攻击者以这种方式攻破了一个管理员账户,那么他就能够控制整个应用程序
会话令牌生成漏洞
- 一些会话令牌通过用户的用户名或电子邮件地址转换而来,或者使用与其相关的其他信息创建
- 这些信息可以某种方式进行编码或模糊处理,也可与其他数据结合在一起
- 生成的随机数强度不足
- 计算机中的数据极少完全随机
- 因此,如果由于某种原因需要随机数据,一般通过软件使用各种技巧生成伪随机数字
- 所使用的一些算法生成看似随机并且在可能的数值范围内平均分布的序列
令牌可预测
- 一些会话令牌并不包含与某个特殊用户有关的任何有意义的数据,但由于他们包含某种顺序或模式,允许攻击者通过几个令牌样本即可推断出应用程序最近发布的其他有效令牌,因此具有可预测性
- 即使推断过程需要做出大量尝试,并且成功率极低(例如,每1000次尝试得到一个有效令牌),自动攻击工具也仍然能够利用这种缺陷在很短的时间内确定大量有效令牌
会话终止攻击
- 尽可能缩短一个会话的寿命可降低攻击者截获、猜测或滥用有效会话令牌的可能性
- 其次,如果用户不再需要现有会话,终止会话为用户提供一种使其失效的途径,在进一步降低上述可能性的同时,在某种程度上确保共享计算环境中会话的安全
- 一些应用程序并不实施有效的会话终止功能
- 会话一旦建立,它在收到最后请求后的许多天内也仍然有效,直到服务器最终将其清除
- 有些时候,退出功能实际上并不能帮助服务器终止会话
- 即使服务器从用户的浏览器中删除令牌(例如,通过发布一个清空令牌的Set-Cookie指令)
- 然而,如果用户继续提交这个令牌,服务器仍然接受它
- 会糟糕的情况:当用户单击退出按钮时,应用程序并不与服务器通信,因此服务器不采取任何行动
- 相反,应用程序执行一段客户脚本清空用户的cookie,在随后的请求中将用户返回到登录页面
- 访问这个cookie的攻击者就能使用会话好像用户从未退出
会话劫持攻击
- 攻击者通过网络嗅探、XSS攻击等方式获取被攻击者会话令牌的攻击方式
- 这种攻击方式最简单也最有效,也是目前最多采用的攻击方式
会话管理漏洞的防御
- 令牌传输安全
- 令牌只能通过HTTPS传送
- 如果使用http cookie传送令牌(大多数情况下),应将这些cookie标记为secure,以防止用户浏览器通过http传送它们
- 增加软硬会话过期
- 软会话过期,它指的是用户在一定的时间内与应用系统没有交互,则会话过期,也就是我们常说的Session失效
- 硬会话过期,它指的是用户登录到系统中经过一定的时间后,不管用户做什么,该会话都会过期
- 提供完善的注销功能
- 用户可以手动地使当前会话过期,这就是我们在几乎所有网站上都看到的logout按钮
- Tips:要保证注销不存在会话终止漏洞
课程收获:
感谢老师,这节课带我们了解了会话管理中的一些安全漏洞及防御办法。
课程截图: