使用 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");
}
结果:
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");
}
结果: