gpt4 book ai didi

asp.net - 在 owin MVC5 中正确关闭 session

转载 作者:行者123 更新时间:2023-12-05 01:14:01 27 4
gpt4 key购买 nike

在我们的 Web 应用程序中,它是 MVC5,使用 Owin,当我们注销时,我们有以下代码:

    public ActionResult LogOut()
{
using (MiniProfiler.Current.Step("AccountController.LogOut"))
{
Session.Clear();
Session.Abandon();
AuthenticationManager.SignOut(DefaultAuthenticationTypes.ApplicationCookie);

Response.Cache.SetExpires(DateTime.UtcNow.AddMinutes(-1));
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetNoStore();

return RedirectToDefault();
}
}

Startaup.Auth 看起来像这样:
        app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
CookieName = ".<cookiename>",
LoginPath = new PathString("/Account/LogOn")
});

我们验证,在注销后,客户端(在浏览器中)上的 cookie 将被删除。但是后来我们得到了 3rd 方的安全评估,说:

“当用户退出 Web 应用程序时,他们的 session 应该在服务器端和客户端失效。
在 Workforce 应用程序中,当用户注销时,服务器不会在服务器端终止用户的 cookie。
注销后,用户仍然可以利用旧的 cookie 值访问内部页面和信息。
在共享计算机环境中,这可能允许未经授权的用户使用先前用户的 session 访问内部应用程序页面和数据。建议:当用户退出应用程序时,服务器应在客户端和服务器端终止用户的 session 。应删除用户浏览器的 HTTP cookie,并删除服务器上的 session 和相关 session 变量。有关更多信息,请参阅 OWASP 身份验证备忘单的 session 管理部分: https://www.owasp.org/index.php/Authentication_Cheat_Sheet

基本上问题在于,如果复制授权 cookie 用户登录的原因,然后在注销后手动应用,则该站点接受登录。当我对我的银行尝试这个伎俩时,它没有奏效。因此,这份报告背后有一些优点。

知道我们如何解决它吗?

最佳答案

经过与团队的一些调查,我们得出以下结论它是如何工作的。

有问题的 cookie 不是与 session 相关的 cookie。它们是具有加密声明的 cookie。因此,我们实际观察到的是 session 在服务器上正确关闭。但是,如果这些“身份验证”cookie 附加到新请求,并且身份验证尚未过期,则 Web 服务器只会创建新 session 。

为我们指明答案的非常有用的链接是:http://forums.asp.net/t/1988295.aspx?Session+Authentication+not+removed+server+side+after+logout

关于asp.net - 在 owin MVC5 中正确关闭 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31768762/

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