需要多久更新一次会话?

信息安全 会话管理 会话固定
2021-09-09 01:58:03

我正在再次查看站点的会话管理,目前它会在每次页面刷新时更新客户端会话 ID。这个想法是,如果它是直接从浏览器中窃取的,那么会话被劫持的可能性就会降低。

虽然这似乎没有任何意义。如果某种恶意软件或浏览器漏洞有可能向黑客输出会话 ID,那么无论每次创建新会话如何,他们都应该很容易劫持该会话,因为他们会“先到达那里” .

据我所知,根本没有办法通过关注会话令牌本身来解决这类问题,而是匹配其他用户的个人资料信息更可靠。当然,还要求提供关键更改的密码。

那么为每个页面加载创建一个新的会话令牌是否有任何意义,这似乎有点毫无意义并且浪费资源。事实上,如果创建了这么多 id,那么随机猜测会话的可能性就会更高。

在会话期间根本不更改会话令牌是可以接受的,还是应该每隔几分钟更新一次?

1个回答

你是对的,它并没有真正提供更多的安全性。

除了可用性问题和增加的复杂性,我不确定它会带来什么。例如,如果您更改 session_id 并使之前的 session_id 在每个请求上无效,您的用户将无法在其浏览器中使用许多选项卡。

此外,正如您所说,它不会阻止攻击者先进入那里并在真实用户之前使用 session_id。

不更改 session_id 是否可以接受?

是的,当用户登录时,没有理由更改它。

那么,用户应该保持登录状态多久?

它始终取决于您的应用程序需要的安全性。例如,如果我一周不登录,stackoverflow 不会重置我的会话。即使我关闭浏览器也不会重置它。相反,如果我闲置 10 分钟或关闭浏览器选项卡,我的银行网站将关闭我的会话。

让会话保持打开状态会增加它被盗的风险。如果确保会话安全至关重要,请经常更改它。这里的想法是定义有关何时需要更改它并平衡安全性和可用性的规则。

注意: session_id 安全性与 CSRF 令牌非常相似。这是一个类似的问题:Why refresh CSRF token per form request?