程序员的安全进阶:分享与学习系列 - 会话管理漏洞

你访问一个网站并登录。像往常一样,你将想买的产品放入购物车。然后,哎呀——手滑关掉了浏览器标签页。在小小的惊慌之后,你重新输入网址并按下“回车”键。你回到了网站,依然处于登录状态,购物车里的商品也都在。呼,虚惊一场。
网站是如何在无需重新验证的情况下识别出你的身份的?它通过会话(Session)识别了你。会话对于良好的网页用户体验至关重要。然而,如果会话管理不当,可能会导致攻击者可以利用的安全漏洞。
现在,让我们回顾一下什么是会话管理,糟糕的会话管理会带来哪些危害,以及如何正确地管理会话。
了解会话管理漏洞
会话是指存储在服务器上、专属于应用程序单个用户的值。这有两个必要原因:首先,HTTP 是一种无状态协议。每个请求都是独立的,无法获知之前或之后的请求。会话帮助服务器跟踪是谁发送了请求。否则,你每次点击按钮或链接时都需要重新登录。
使用会话的第二个原因是用户授权。会话标识符可用于识别系统中具有特定权限的特定用户。应用程序将知道该用户是谁以及他们被允许执行哪些操作。
会话包含两个部分。服务器端的数据存储区保存着会话标识符,并将其映射到用户信息(如用户 ID 或购物车信息)。同一个会话标识符会通过 Cookie 发送到浏览器。Cookie 由浏览器存储在用户的系统上。客户端在每次请求时都会传递该 Cookie,让服务器知道此请求来自同一用户。大多数应用程序使用会话来跟踪用户在身份验证前后的状态。
正确的会话管理对于应用程序的安全至关重要。有效的会话 ID 与用户名/密码甚至双重身份验证令牌具有同等的信任级别。
为什么糟糕的会话管理很危险
糟糕的会话管理可能导致账户被完全接管。这意味着客户数据可能被窃取,或者产品可能被欺诈性购买。攻击者有多种方法可以获取有效的会话 ID。
当会话在关键时刻(例如用户登录系统时)没有更新,且会话标识符可以通过 URL 设置时,就会发生 会话固定攻击。以这种方式设置会话标识符可能用于让用户在多个使用相同身份验证源的应用程序中保持登录状态。在这种情况下,攻击者可以浏览网站并获取一个会话 ID。然后,攻击者通过电子邮件将带有该会话 ID 的 URL 发送给毫无戒心的受害者。受害者点击邮件中的链接并登录网站。如果登录时没有更换会话 ID,攻击者现在就拥有了一个有效的、已认证的会话 ID。这会导致账户被完全接管。
针对糟糕会话管理的另一种攻击是暴力猜测攻击。当开发人员尝试创建自己的会话管理系统时,他们通常会使用很容易猜到的会话 ID。这些 ID 可能是序列(1, 2, 3)或某种可预测的模式。攻击者只需不断猜测会话 ID,直到发现一个有效的为止。这也同样会导致账户被接管。
如果会话在一段时间后没有自动失效,就可能被利用来攻击用户。一次成功的 跨站请求伪造 攻击依赖于用户离开网站后依然有效的会话。假设攻击者在用户访问的网站上放置了一个 iframe 或图像。其“src”(来源)属性被设置为易受攻击网站的 URL,并代表用户执行操作。例如,一个易受攻击的银行应用程序可能会在未经用户许可的情况下,被诱导将资金转入攻击者的账户。
会话管理可能很棘手,其漏洞也可能是毁灭性的。然而,这是一个众所周知的问题,并且是可以解决的。
击败不安全的会话管理
会话管理是任何 Web 应用程序的核心部分。因此,许多 Web 开发框架都内置了会话管理功能。这些系统已经过专家的严格审查,以发现并消除问题。请务必使用它们。
一些 良好会话管理 的常见属性包括:
生成攻击者无法猜测的随机会话 ID
用户注销时会话即刻失效
会话在经过一定时间后自动失效
用户登录后会话 ID 会发生变更
会话 ID 长度至少为 128 位,以防止暴力破解攻击
Spring、ASP.NET Core、Rails 和 Django 等 Web 框架具备上述特性,在此类场景中应优先使用,以确保更高的安全标准。
结论:切勿从零开始构建自己的会话管理系统。
会话 ID 创建后必须加以保护。请将 Secure 和 HttpOnly 标志 设置为“true”。这能确保其值无法通过 JavaScript 获取,且浏览器仅会通过 HTTPS 发送 Cookie,从而防止攻击者在传输过程中窃取会话。
保护您的会话
查看我们的免费学习资源以了解更多关于安全会话管理的信息。掌握如何保护会话有助于防止用户账户被盗、声誉受损以及因安全漏洞导致的收入损失。保护好会话,确保您的用户安全。
在 AI 驱动的开发成果发布前实现有效治理
评估 AI 辅助风险,在提交代码时强制执行安全编码策略,并加速整个软件开发生命周期的安全交付。
探索更多博客
获取有关安全编码、人工智能治理和软件风险管理的专家内容。
%252520%252520(3).avif)
Supercharged Security Awareness: How Tournaments are Inspiring Developers at Erste Group
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros elementum tristique. Duis cursus, mi quis viverra ornare, eros dolor interdum nulla, ut commodo diam libero vitae erat. Aenean faucibus nibh et justo cursus id rutrum lorem imperdiet. Nunc ut sem vitae risus tristique posuere.

Security as culture: How Blue Prism cultivates world-class secure developers
Learn how Blue Prism, the global leader in intelligent automation for the enterprise, used Secure Code Warrior's agile learning platform to create a security-first culture with their developers, achieve their business goals, and ship secure code at speed
在产品发布前确保 AI 驱动的开发安全
洞察开发风险,执行安全策略,并在整个软件开发生命周期中预防漏洞。



.avif)