我正在尝试在一个相当大的 ASP.NET Web 应用程序 (C#) 上解决一些安全问题。为了防止会话固定攻击,我想在每次用户验证自己时生成一个新的会话 ID。但是我只想生成一个新的会话 ID 而不会丢失会话的其余部分。在对这个主题进行了一些研究之后,我发现了一些可行的解决方案:
解决方案 1:在 ASP.NET 中生成新的 SessionId
这建议通过将会话 cookie 设置为空字符串来手动清除它。然而,这需要刷新页面或使用 AJAX 来确保 cookie 确实会被删除,这在我的具体情况下并不是一个真正可行的选择。
解决方案 2:在当前 HTTPContext 中生成一个新的 ASP.NET 会话
我已经实现了这种方法,并且它按预期工作。但是,正如原始海报所述,这并不是您所说的优雅解决方案。此外,这篇文章已有几年历史了,我希望现在可能有更好的解决方案。
我想知道的是,在我的研究中是否有任何替代方法可以做到这一点,或者是否可以在不操纵会话管理内部的情况下使用解决方案 2 之类的方法。