在ASP.NET 中實作HTTPS 站點範圍
背景: 站點幾個月前,實現了一個
背景:站點幾個月前,實現了一個一個站,其中所有請求都必須透過HTTPS 發出。當時唯一可行的解決方案是在頁面載入事件期間檢查請求,並在必要時重定向到 HTTPS。
替代解決方案:
更穩健的方法是利用 HTTP 嚴格傳輸安全 (HSTS)。透過實作 HSTS,您可以防止不安全的 HTTP 請求並在指定時間內強制執行 HTTPS 連線。
Web.config 設定:
<rewrite> <rules> <rule name="HTTP to HTTPS redirect" stopProcessing="true"> <match url="(.*)" /> <conditions> <add input="{HTTPS}" pattern="off" ignoreCase="true" /> </conditions> <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="Permanent" /> </rule> </rules> <outboundRules> <rule name="Add Strict-Transport-Security when HTTPS" enabled="true"> <match serverVariable="RESPONSE_Strict_Transport_Security" pattern=".*" /> <conditions> <add input="{HTTPS}" pattern="on" ignoreCase="true" /> </conditions> <action type="Rewrite" value="max-age=31536000" /> </rule> </outboundRules> </rewrite>
要在ASP.NET 中設定HSTS,將以下程式碼加入
Global.asax.cs程式碼(替代方法):
protected void Application_BeginRequest(Object sender, EventArgs e) { if (HttpContext.Current.Request.IsSecureConnection.Equals(false) && HttpContext.Current.Request.IsLocal.Equals(false)) { Response.Redirect("https://" + Request.ServerVariables["HTTP_HOST"] + HttpContext.Current.Request.RawUrl); } }
雖然HSTS 是建議的方法,但另一個解決方案涉及將以下程式碼新增至Application_BeginRequest 事件中Global.asax.cs:
比較:
使用HSTS具有在瀏覽器層級保護 HTTPS 連線的優勢,而基於程式碼的方法Global.asax.cs 僅在 ASP.NET 應用程式內處理重新導向。因此,HSTS 是一種更全面且值得推薦的解決方案。以上是如何在 ASP.NET 中安全地在網站範圍內實作 HTTPS?的詳細內容。更多資訊請關注PHP中文網其他相關文章!