gpt4 book ai didi

c# - 在登录时生成新的 SessionID (ASP.NET)

转载 作者:太空狗 更新时间:2023-10-29 20:30:58 25 4
gpt4 key购买 nike

我正尝试在相当大的 ASP.NET Web 应用程序 (C#) 上解决一些安全问题。为了防止 session 固定攻击,我想在每次用户验证自己时生成一个新的 session ID。但是我只想生成一个新的 session ID 而不会丢失 session 的其余部分。在对这个主题做了一些研究之后,我发现了几个可行的解决方案:

解决方案 1:Generating new SessionId in ASP.NET
这建议通过将 session cookie 设置为空字符串来手动清除 session cookie。然而,这需要刷新页面或使用 AJAX 来确保 cookie 确实被删除,这在我的特定情况下并不是一个真正可行的选择。

解决方案 2:Generating a new ASP.NET session in the current HTTPContext
我已经实现了这种方法并且它按预期工作。然而,正如最初的海报所说,这并不是您所谓的优雅解决方案。此外,这篇文章已有几年历史了,我希望现在可能有更好的解决方案。

我想知道的是,是否有我在研究中遗漏的任何替代方法,或者是否可以在不操纵 session 管理内部结构的情况下实现类似解决方案 2 的方法。

最佳答案

由于 session 管理在 ASP.NET 中的设计工作方式,实现您想要的并不容易,解决方案编号 2。考虑到 ASP.NET session 状态实现细节在某些方面发生变化,解决方案 (2) 似乎有点冒险点。

我推荐解决方案 1 的一个变体,当用户进行身份验证时,您将 session 中的相关数据存储到 db/cache,为用户获取一个新 session ,然后用您需要的数据填充它。由于数据正在从“未经身份验证”的 session 移动到“经过身份验证”的 session ,因此您还应该注意验证该数据。

手动清除 session cookie 可能是一个滑坡,关于 Ramping up ASP.NET session security .您会在 NWebsec.SessionSecurity 中找到更强大的解决方案的经过身份验证的 session 标识符(免责声明:我是该项目的开发人员)。

关于c# - 在登录时生成新的 SessionID (ASP.NET),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17548606/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com