// Password settings
options.Password.RequireDigit = true;
options.Password.RequiredLength = 8;
options.Password.RequireNonAlphanumeric = true;
options.Password.RequireUppercase = true;
options.Password.RequireLowercase = true;
options.Password.RequiredUniqueChars = 6;
});

請記住,其中一些規范比其他規范能更好地保護用戶,但如果用戶不遵守這些規范,它們也可能產生相反的效果。

添加嚴格的憑證恢復流程

我建議你實施嚴格的憑證恢復流程。這應該包括幾項驗證檢查和步驟,使攻擊者難以濫用憑證并付出高昂代價。

您可以通過在前面的代碼中添加以下幾行來實現這一點:

services.Configure<IdentityOptions>(options => {
// Password settings
options.Password.RequireDigit = true;
options.Password.RequiredLength = 8;
options.Password.RequireNonAlphanumeric = true;
options.Password.RequireUppercase = true;
options.Password.RequireLowercase = true;
options.Password.RequiredUniqueChars = 6;

options.Lockout.DefaultLockoutTimeSpan = TimeSpan.FromMinutes(30);
options.Lockout.MaxFailedAccessAttempts = 10;
options.SignIn.RequireConfirmedEmail = true;

options.User.RequireUniqueEmail = true;
});

實施密碼保護措施

密碼保護機制被破解后,密碼被泄露的用戶的賬戶將被鎖定。此外,您可以配置此機制,在用戶更改密碼時恢復訪問權限。這樣,您就可以確保用戶有機會在攻擊者竊取密碼時防止損失。

您可以使用名為 PwnedPassword 的 Git 項目實現此功能,該項目將提供已泄露密碼的更新存儲庫,以便實時進行交叉驗證。

調節會話長度

所有 Web 應用程序都必須在一定時間不活動后結束用戶會話。此時間長度取決于應用程序的類型。例如,流媒體平臺可能需要長時間不活動,而敏感的銀行網站則應有較短的時間限制。

要調節會話的長度,請將以下行添加到項目配置文件中。

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddRazorPages();
builder.Services.AddControllersWithViews();

/// ADD THIS
builder.Services.AddDistributedMemoryCache();
/// ADD THIS
builder.Services.AddSession(options =>
{
options.IdleTimeout = TimeSpan.FromSeconds(10);
options.Cookie.HttpOnly = true;
options.Cookie.IsEssential = true;
});

var app = builder.Build();

if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Error");
app.UseHsts();
}

app.UseHttpsRedirection();
app.UseStaticFiles();

app.UseRouting();

app.UseAuthorization();
/// ADD THIS
app.UseSession();

app.MapRazorPages();
app.MapDefaultControllerRoute();

app.Run();

改善會話管理

您的平臺必須在每次身份驗證成功后提供單獨的會話 ID。此外,您的系統必須在會話結束后立即使舊會話 ID 失效,以防止劫持。

不要使用會話 ID URL

在所有情況下,您都必須使用 SSL 保護 Web URL,但不包含會話 ID。

多因素身份驗證

多因素身份驗證 (MFA) 是您可以使用的最強大的保護機制之一。MFA 需要額外的憑證來驗證用戶的身份。例如,通過郵寄或短信向用戶發送一次性密碼 (OTP)。

網絡釣魚

定期向用戶宣傳網絡釣魚攻擊和弱密碼的潛在風險至關重要。每月或每季度發送電子郵件提醒用戶保持警惕和謹慎通常就足夠了。

文章來源:.NET Broken Authentication Guide: Examples and Prevention

上一篇:

Golang 損壞對象 等級授權指南: 示例和預防

下一篇:

什么是跨站點 請求偽造(CSRF)?
#你可能也喜歡這些API文章!

我們有何不同?

API服務商零注冊

多API并行試用

數據驅動選型,提升決策效率

查看全部API→
??

熱門場景實測,選對API

#AI文本生成大模型API

對比大模型API的內容創意新穎性、情感共鳴力、商業轉化潛力

25個渠道
一鍵對比試用API 限時免費

#AI深度推理大模型API

對比大模型API的邏輯推理準確性、分析深度、可視化建議合理性

10個渠道
一鍵對比試用API 限時免費