
2024年七大最佳免費貨幣轉換API
我們可以看到,這次攻擊中最關鍵的一步是受害者一開始進行的初始握手。因此,為了防止這種攻擊發生,我們需要確保用戶的瀏覽器只使用加密與我們的服務器通信。而最有效的方法就是明確指示瀏覽器這樣做。
這個流程本質上就是 HTTP 嚴格傳輸安全所代表的,它是網絡安全的基石之一。
現在所有的理論都已經講完了,讓我們來探索如何保護我們的網站安全。
好消息是,在大多數情況下,我們瀏覽器的內置安全功能可以幫到我們。要使用 HSTS 實現主要安全層,我們需要做的就是將以下標頭添加到服務器響應中。
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
HSTS 標頭包含三個指令,一個是強制的,兩個是可選的。同樣,如果您讀過我們之前關于 HSTS 的帖子,您應該對這些指令很熟悉。
您可以通過兩種方式將 HSTS 標頭添加到 ASP.NET 核心項目:
要使用UseHttpsRedirection方法,請使用以下內容修改Program.cs文件:
app.UseHttpsRedirection();
此外,我們需要為中間件設置一個端口,以將不安全的請求重定向到 HTTPS。
如果沒有可用的端口,頁面將不會重定向到 HTTPS,并且中間件會記錄警告“無法確定重定向的 https 端口”。
通過向appsettings.json文件添加以下指令,您可以輕松做到這一點。
{
"https_port": 443,
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"AllowedHosts": "*"
}
對于第二條路由,您可以在Program.cs文件中使用以下代碼添加 HSTS 中間件。
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Error");
app.UseHsts();
}
builder.Services.AddHsts(options =>
{
options.Preload = true;
options.IncludeSubDomains = true;
options.MaxAge = TimeSpan.FromDays(60);
options.ExcludedHosts.Add("example.com");
options.ExcludedHosts.Add("www.example.com");
});
當然,僅僅因為您知道如何將 HSTS 標頭應用于頁面并不意味著您的網站可以強制執行該政策。例如,如果您的網站與 HSTS 不兼容,您將收到以下消息:
我們可以看到,一個錯誤導致瀏覽器無法顯示該頁面。
盡管我們嘗試訪問的服務器表明通信是加密的,但我們的瀏覽器收到了一些可疑信息并切斷了連接。
一旦我們看到瀏覽器提供的錯誤信息,我們就可以了解問題的可能根源。
我們的首要任務是確保正確設置加密。此外,如果我們是第一次部署 HSTS,我們必須有一個適當的實施計劃。
根據Scott Helme的 HSTS 教程中的一些內容,下面是需要遵循的步驟清單。
完成所有這些步驟后,您將擁有一個僅強制使用 HTTPS 通信的站點。從那時起,所有用戶都將遵守該政策。
在我們尋求為我們的應用程序實現可靠的安全層的過程中,必須做很多工作來提供必要的保證,以與我們的用戶建立強大的信任度。
當今的網絡已經將安全性和標準推向了極致,使得一些解決方案變得復雜且具有挑戰性。
值得慶幸的是,實施 SSL/TLS 和 HSTS 策略非常簡單,并且在很大程度上保護了大部分網絡。
文章來源:.NET HTTP Strict Transport Security Guide: What It Is and How to Enable It