将Session Id更改为Session Fixation的最佳解决方案以及为什么更改Session ID会引发Session_End事件?

时间:2012-12-21 04:29:15

标签: asp.net vb.net security session-cookies

在安全漏洞测试期间,我们的客户端请求应用程序在用户成功登录系统后更改会话ID,特别是ASP.NET_SessionID cookie值。这可能解决了会话固定当会话ID发生变化时会引发session_end事件,并导致重新启动会话(系统),这将再次重定向到登录页面。有没有办法在不引起所有这些的情况下更改会话ID?

请建议任何解决方法。

1 个答案:

答案 0 :(得分:1)

好问题。当人们谈论更改会话ID以防止会话固定时,他们通常会考虑在Java框架中发生的漏洞,其中知道sessionId足以接管会话。

然而,ASP.NET是一个不同的野兽。 ASP.NET有两件事需要接管会话:sessionId和ASPXAUTH cookie。如果你在谷歌附近,你会发现仍然存在会话固定可能性的不合理的主张,但我不相信,因为似乎没有人证明如何利用它们。我发现最接近可以被利用的证据的是this blog,这至少可以说是有见地的。该博客确实在ASP.NET中确定了一个糟糕的实现 - 框架没有检查sessionId和ASPXAUTH是否绑定到同一个用户(除非开发人员明确添加了此检查)。但它可以被利用吗?我可以想一想,如果开发人员做错了一些事情可能会被利用,这会导致比会话固定更糟糕的漏洞利用,但除此之外,我对此表示怀疑。

绝对是一个需要更多研究的话题。我意识到我的答案对你的需求来说太晚了,但我想我还是会跟进。结论:登录后更改sessionId似乎不提供任何额外保护。如果您的同事不这么认为,我会邀请他们向我解释。