会话 ID 轮换是不是增强了安全性?

Posted

技术标签:

【中文标题】会话 ID 轮换是不是增强了安全性?【英文标题】:Does Session ID rotation enhance security?会话 ID 轮换是否增强了安全性? 【发布时间】:2011-02-20 05:50:53 【问题描述】:

(我认为)我理解为什么在用户登录时应该轮换会话 ID - 这是防止session fixation 的重要一步。

但是,随机/定期轮换会话 ID 有什么好处吗?

在我看来,这似乎只是提供了一种虚假的安全感。假设会话 ID 不易被暴力猜测,并且您只在 cookie 中传输会话 ID(不是 URL 的一部分),那么攻击者将不得不访问您的 cookie(很可能通过窥探您的流量)来获取您的会话 ID。因此,如果攻击者获得一个会话 ID,他们可能也能够嗅探到轮换的会话 ID - 因此随机轮换并没有增强安全性。

【问题讨论】:

【参考方案1】:

Web 开发不是我的事,但可能是因为登录的用户可能是攻击者?例如,如果我登录并获得会话 ID 4,我是否可以猜测会话 ID 5 将属于某个其他用户,修改我的本地 cookie,然后充当该用户?

【讨论】:

如果会话 ID 是按顺序生成的,则有可能。然而,良好的会话 ID 生成器正是出于这个原因生成随机 ID,因此攻击者无法猜到它们。【参考方案2】:

总的来说,这听起来像是一个愚蠢的想法。

如果用户点击后退按钮,这将彻底搞砸用户,因为前一页上的链接现在包含过期的会话 ID。您还可以丢弃任何 AJAX,因为每次对服务器进行 RPC 时,页面上的所有链接/表单都需要更新,因为它们现在具有无效值。如果有什么不安全的话,因为这意味着您的应用程序变得更加复杂并且更有可能出现错误。

如果推理要求您“轮换” id,则可能意味着您的 id 生成不佳,这应该是修复的问题。如果窥探有问题,请使用 SSL。

【讨论】:

我认为这不会对后退按钮造成问题。而且我认为您可以通过仅在每 N 个请求轮换一次会话 ID 并在短时间内保留旧的请求来解决 AJAX/近乎同时的请求。当然,仅仅因为它没有把这些事情搞砸并不意味着它是一个好主意。我同意你的观点,我认为定期会话 ID 轮换也不值得。我也同意,如果窥探有问题,那么 SSL 是必须的。 不旋转/改变你实际上已经停止了旋转。那么,如果您的应用程序是一个页面并且永远不会更改,该怎么办。您在该页面上的 ajax 最终会比会话 id TLD 更旧。 在 URL 中保留 sessionID 是个坏主意。因此,如果 sessionID 有序地保存在 cookie 中,SPA 中的后退/前进按钮就不会失败。【参考方案3】:

如果您使用存储在 cookie 中的会话标识符,则会话固定不是问题。我浏览了您粘贴的论文,我看到了诸如使用 DNS 和 XSS 来拥有用户之类的东西,这显然比会话固定问题更大(更不用说,单独的)问题。如果您将会话标识符(具有可接受的熵级别)存储在 cookie 中,则没有合理的理由轮换它。轮换它的唯一原因是因为它是可猜测的或以其他方式易受攻击,在这种情况下,无论如何用户都会被拥有。

【讨论】:

我认为登录时轮换会话 ID (SID) 是必要的,即使它存储在 cookie 中。考虑一下:攻击者在共享计算机上浏览网站并获得一个 SID(但没有登录)。然后攻击者走开。如果下一个用户随后登录并且 SID 没有轮换,那么攻击者知道 SID 并可以使用它来伪装成登录的用户。这种情况有点牵强(希望共享计算机仍然有单独的帐户),但可能 你所说的是一个严重的漏洞(想想信息亭)。我假设该站点在登录时分配了一个新的会话 ID。当然,您应该在登录时分配一个新的会话 ID。不,这种攻击一点也不牵强。 同意。 (注意:我的评论主要是针对您回答中的第一句话) @L̲̳o̲̳̳n̲̳̳g̲̳̳p̲̳o̲̳̳k̲̳̳e̲̳̳ 我想知道这个答案是否完全可以。一旦服务器生成一个新的 sessionID,监听的 sessionID 应该没什么用。因此,轮换 sessionID 很有用,因为攻击者必须不断地窥探新的 sessionID。不是吗? Qualys 建议轮换会话密钥以减少攻击者在 TLS 下利用 RC4 的机会:community.qualys.com/blogs/securitylabs/2013/03/19/…【参考方案4】:

根据这篇 SSL Labs 博客文章(自 2013 年起),RC4 芯片(2017 年仍然可见)很弱,可能允许黑帽从拦截的 HTTPS 流量(例如通过 wifi)中暴露会话 cookie 数据.

在博文中建议每x 时间单位(分钟?)和每y 请求次数后轮换会话 cookie ID/数据。

【讨论】:

以上是关于会话 ID 轮换是不是增强了安全性?的主要内容,如果未能解决你的问题,请参考以下文章

超稳攻略!Rancher 2.3手动轮换证书,保护集群安全!

PHP笔记-随机生成cookie后台检索通过session获取ID增强安全性

web安全总结

在春季安全中注销特定会话ID

从 sql 数据库设置会话 id 变量;这安全吗?

在会话/历史reactjs中存储用户数据是不是安全