Вернулся к этому через несколько месяцев свежим взглядом и обнаружил сообщение от Microsoft, в котором содержится Блокировка учетной записи для защиты от атак методом перебора , которая будет слоем безопасности, хотя и не будет всеобъемлющей защитой.так как старый MVC5 AllowXRequestsEveryXSecondsAttribute
включен.
Он остановит многократные попытки для одного письма, но не остановит многократные попытки для многих писем.
, т. е. не позволит кому-либо сделать
- имя пользователя: user1@test.com, пароль: Password121
- имя пользователя: user1@test.com, пароль: Password122
- имя пользователя: user1@test.com, пароль: Password123
Но это не помешает кому-либо делать:
- имя пользователя: user1@test.com, пароль: Password123
- имя пользователя: user2 @ test.com, пароль: Password123
- имя пользователя: user3@test.com, пароль: Password123
Вот отрывок кода от Microsoft (бит ключа - часть options.Lockout
):
public void ConfigureServices(IServiceCollection services)
{
// Add framework services.
services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
services.AddIdentity<ApplicationUser, IdentityRole>()
.AddEntityFrameworkStores<ApplicationDbContext>()
.AddDefaultTokenProviders();
services.AddMvc();
services.Configure<IdentityOptions>(options =>
{
options.Lockout.MaxFailedAccessAttempts = 10;
options.Lockout.DefaultLockoutTimeSpan = TimeSpan.FromMinutes(10);
});
// Add application services.
services.AddTransient<IEmailSender, AuthMessageSender>();
services.AddTransient<ISmsSender, AuthMessageSender>();
services.Configure<SMSoptions>(Configuration);
}
Упдат. е. (после обсуждения с основной группой)
I поднял с командой .NET Core на Github.
Атрибут AllowXRequestsEveryXSecondsAttribute
, упомянутый в контрольном листе OWasp, взят из external libray , который, по их мнению, может быть преобразован в .NET Core, но они не считают его приоритетным длявключить что-то как часть структуры.Их рекомендация состояла в том, чтобы изучить решения Azure «AAD или B2C» или «Auth0».