使用 ASP.NET Core Identity 实现通过响应操作防止身份验证绕过

Prevent authentication bypass via response manipulation with ASP.NET Core Identity implementation

Web 应用程序具有 asp.net 核心身份实现,在我们的应用程序漏洞的安全测试中发现-通过响应操作绕过身份验证。

例如:用户 1 使用有效的用户凭据登录系统,复制该用户的 cookie,然后用户 1 注销。 User1 尝试使用不正确的密码登录,拦截请求并使用 User1 有效的 cookie 登录系统,即使使用不正确的密码,User1 也可以登录。

如何销毁 cookie 并使 asp.net 核心身份实现的会话无效?

Asp.net核心标识,.net 5.0,asp.net核心mvc

您可以使用 SecurityStamp 属性 和 SecurityStampValidatorOptions.ValidationInterval 属性 使注销用户的 cookie 无效。

1.Register ValidationInterval 在 ConfigureServices

services.Configure<SecurityStampValidatorOptions>(options =>
            {
                options.ValidationInterval = TimeSpan.FromSeconds(1);
                
            });

2.Add userManager.UpdateSecurityStampAsync()在您的注销中,如下所示

 public async Task<IActionResult> Logout()
        {
            var userid = userManager.GetUserId(User);
            var user = await userManager.FindByIdAsync(userid);
            await userManager.UpdateSecurityStampAsync(user);
            await signInManager.SignOutAsync();
 
            return RedirectToAction("Index", "Home");
        }

结果:

请看这个,效果很好 https://docs.microsoft.com/en-us/answers/questions/818782/prevent-authentication-bypass-via-response-manipul.html