Asp.net 更改会话Id是会话固定的最佳解决方案吗?为什么更改会话Id会引发会话结束事件?

Asp.net 更改会话Id是会话固定的最佳解决方案吗?为什么更改会话Id会引发会话结束事件?,asp.net,vb.net,security,session-cookies,Asp.net,Vb.net,Security,Session Cookies,在安全漏洞测试期间,我们的客户端请求应用程序在用户成功登录到系统后更改会话ID(特别是ASP.NET_SessionID cookie值)。这可能会解决会话固定问题当会话Id发生更改时,会引发多少会话结束事件,从而导致重新启动会话(系统),该会话将再次重定向到登录页面。有没有办法在不引起这些问题的情况下更改会话ID 请建议任何解决方法。好问题。当人们谈论更改会话Id以防止会话固定时,他们通常会想到Java框架中发生的漏洞,在Java框架中,知道sessionId就足以接管会话 然而,ASP.NE

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


请建议任何解决方法。

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

然而,ASP.NET是另一种野兽。ASP.NET需要两件东西来接管会话:sessionId和ASPXAUTH cookie。如果你到处搜索,你会发现一些不合理的说法,即仍然存在会话固定的可能性,但我不相信,因为似乎没有人演示如何利用它们。我发现的最接近证据表明它可以被利用的是,至少可以说是有洞察力的。博客确实指出了ASP.NET中一个糟糕的实现——框架没有检查sessionId和ASPXAUTH是否绑定到同一个用户(除非开发人员明确添加此检查)。但它是可利用的吗?我可以想到,如果开发人员做了一些错误的事情,允许比会话固定更糟糕的利用,那么它可能会被利用,但除此之外,我对此表示怀疑


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

为什么不将会话导出到OutProc存储,如分布式缓存提供程序或StateServer或SQL Server,更改Id,然后还原会话,并将会话与新Id关联。这样,Id将被更改,用户将保持登录状态。@KevinRyan:这是我在本地计算机(inProc存储)上首先尝试做的事情。但是,更改会话Id导致引发会话结束事件。