清楚cookei是ASP.NET Core,如何保护端点免受暴力攻击

问题描述 投票:0回答:0

我正在使用 .net core 2.2 进行 MVC 应用程序。对于身份验证,我们使用了 LDAP。另外,我正在使用 Microsoft Indentity Server。现在我们进行安全测试。攻击者可以使用 cookie 进行暴力攻击。因为即使用户注销应用程序,cookie 仍然有效。这是一段代码。

await _userManager.UpdateSecurityStampAsync(user);
await _signInManager.SignOutAsync(); 

我们尝试过的场景。我们复制了 cookie 并注销了应用程序。然后在浏览器中,我们点击 https://localhost:44339/users 并拦截旧的 cookie,我无需登录应用程序即可查看用户列表。我们还尝试在注销时清除 cookie。使用下面的代码。

HttpContext.Response.Cookies.Delete("Identity");

但是此解决方案无法清除 cookie。因为 UpdateSecurityStampAsync 更新 AspNetUsers 表的时间戳。但我们没有使用它。我们已经更新了其他应用程序中的时间戳并且正在运行。因为在该应用程序中我们使用 Identity Server 身份验证。这是cookies的启动代码。

services.ConfigureApplicationCookie(options =>
            {
                options.Cookie.Name = "Identity";
                options.Cookie.HttpOnly = true;
                options.Cookie.MaxAge = TimeSpan.FromMinutes(sessionMinutes);
                options.Cookie.Expiration = TimeSpan.FromMinutes(sessionMinutes);
                options.Cookie.IsEssential = true;
                options.Cookie.SameSite = Microsoft.AspNetCore.Http.SameSiteMode.Lax;
                options.Cookie.SecurePolicy = Microsoft.AspNetCore.Http.CookieSecurePolicy.SameAsRequest;
                options.LoginPath = "/account/signin";
                options.LogoutPath = "/account/signout";
                options.AccessDeniedPath = "/account/forbidden";
                options.SlidingExpiration = false;
                options.ReturnUrlParameter = "returnurl";
            });

请分享解决方案

在启动中添加以下代码。

services.ConfigureApplicationCookie(options =>
            {
                options.Cookie.Name = "Identity";
                options.Cookie.HttpOnly = true;
                options.Cookie.MaxAge = TimeSpan.FromMinutes(sessionMinutes);
                options.Cookie.Expiration = TimeSpan.FromMinutes(sessionMinutes);
                options.Cookie.IsEssential = true;
                options.Cookie.SameSite = Microsoft.AspNetCore.Http.SameSiteMode.Lax;
                options.Cookie.SecurePolicy = Microsoft.AspNetCore.Http.CookieSecurePolicy.SameAsRequest;
                options.LoginPath = "/account/signin";
                options.LogoutPath = "/account/signout";
                options.AccessDeniedPath = "/account/forbidden";
                options.SlidingExpiration = false;
                options.ReturnUrlParameter = "returnurl";
            });

并在注销应用程序时添加了以下代码

await _userManager.UpdateSecurityStampAsync(user);
await _signInManager.SignOutAsync(); 
asp.net-core-mvc ldap asp.net-identity session-cookies cookiestore
© www.soinside.com 2019 - 2024. All rights reserved.