跳转到主要内容

会话劫持

本文约需 2 分钟阅读

会话劫持 (Session Hijacking) 是指攻击者窃取用户的会话 ID,冒充该用户访问服务的攻击。会话 ID 是登录后由服务器签发的标识符,一旦被夺取,即使不知道密码也能在已认证的状态下使用服务。在 OWASP 的调查中,会话管理不当被列为 Web 应用程序的主要漏洞之一。

现场使用案例

“在漏洞诊断中,发现登录后会话 ID 没有重新生成。由于存在会话固定攻击的风险,我们已要求修改为在认证成功时签发新的会话 ID。”

会话窃取的流程

用户登录
签发会话 ID
攻击者窃取 ID
冒充访问

攻击手法

包括利用 XSS (跨站脚本) 从 Cookie 中窃取会话 ID、拦截网络通信窃取会话 ID,以及通过会话固定攻击让用户使用事先准备好的会话 ID 等方法。Web 安全书籍 (Amazon)可用来学习攻击手法与对策。

具体的受害场景

一个常见的误解是“只要登出就安全了”。实际上,如果登出处理没有在服务器端使会话失效,已被窃取的会话 ID 可能仍然有效。例如,在咖啡馆的公共 Wi-Fi 上登录网上银行时,若会话 ID 被中间人攻击拦截,攻击者就能利用该会话进行余额查询或转账操作。此外,浏览器中保存的 Cookie 被恶意软件窃取,攻击者从其他设备以已登录状态访问的“Cookie 窃取”也在增加。

对策

基本的对策包括使用 HTTPS、为 Cookie 设置 Secure 属性和 HttpOnly 属性,以及定期重新生成会话 ID。为每个服务设置独有的强密码,并启用两步验证,那么即使会话被劫持,重要操作仍会要求额外认证,从而减轻损失。Web 开发安全书籍 (Amazon)也可供参考。

相关术语

这篇文章对您有帮助吗?

XHatena