在 ASP.NET MVC 5 的 UseCookieAuthentication() 中使用 cookieless 或 session-cookie



我有一个 ASP.NET MVC 5应用程序,它使用cookie身份验证。但是,在运行渗透测试后,它容易受到MITM攻击,如果被盗,可以重复使用此cookie。

// Enable the application to use a cookie to store information for the signed in user
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
LoginPath = new PathString("/Authentication/Login")
});
  1. 我的问题是:注销时如何使此cookie无效/过期?(不是 cookie 本身,而是 ASP.NET 使用的 cookie 的价值(

  2. 这个cookie似乎不受web.configsessionState的控制,它可以存储在内存中。上面的 cookie 可以配置为存储为会话 cookie 吗?

<sessionState mode="InProc" ... />
  1. 有更好的方法吗?

您可以实现自己的 ITicketStore 以将值保留在会话中。您的实现将进入 CookieOptions 的会话存储。虽然我不会在 InProc 中使用。这将使您能够在注销时杀死它。另一件事是您应该设置过期时间跨度。

MITM攻击在技术上仍然有效,但这使其稍微困难一些。为了进一步缓解它,您应该做其他事情,例如使用 https 和 tls 1.3。

最新更新