首頁 > 後端開發 > C++ > 如何在 ASP.NET 中安全地在網站範圍內實作 HTTPS?

如何在 ASP.NET 中安全地在網站範圍內實作 HTTPS?

Susan Sarandon
發布: 2024-12-31 03:39:09
原創
570 人瀏覽過

How to Securely Enforce HTTPS Site-Wide in ASP.NET?

在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,將以下程式碼加入 中web.config 檔案的部分:

Global.asax.cs程式碼(替代方法):

protected void Application_BeginRequest(Object sender, EventArgs e)
{
   if (HttpContext.Current.Request.IsSecureConnection.Equals(false) &amp;&amp; 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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板