Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Menguatkuasakan HTTPS di Seluruh Tapak dengan Selamat dalam ASP.NET?

Bagaimana untuk Menguatkuasakan HTTPS di Seluruh Tapak dengan Selamat dalam ASP.NET?

Susan Sarandon
Lepaskan: 2024-12-31 03:39:09
asal
580 orang telah melayarinya

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

Menguatkuasakan HTTPS Site-Wide dalam ASP.NET

Latar Belakang: Beberapa bulan lalu, tapak telah dilaksanakan di mana semua permintaan perlu dibuat melalui HTTPS. Satu-satunya penyelesaian yang berdaya maju pada masa itu melibatkan menyemak permintaan semasa acara pemuatan halaman dan mengubah hala ke HTTPS jika perlu.

Penyelesaian Alternatif:

Pendekatan yang lebih mantap ialah dengan gunakan HTTP Strict Transport Security (HSTS). Dengan melaksanakan HSTS, anda boleh menghalang permintaan HTTP tidak terjamin dan menguatkuasakan sambungan HTTPS untuk tempoh tertentu.

Konfigurasi Web.config:

Untuk mengkonfigurasi HSTS dalam ASP.NET, tambah kod berikut pada bahagian fail web.config anda:

<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>
Salin selepas log masuk

Kod Global.asax.cs (Kaedah Alternatif):

Walaupun HSTS ialah pendekatan yang disyorkan, penyelesaian alternatif melibatkan penambahan kod berikut pada acara Application_BeginRequest dalam 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);
   }
}
Salin selepas log masuk

Perbandingan:

Menggunakan HSTS menawarkan kelebihan untuk mendapatkan sambungan HTTPS pada peringkat penyemak imbas, manakala pendekatan berasaskan kod dalam Global.asax.cs mengendalikan pengalihan hanya dalam aplikasi ASP.NET. Oleh itu, HSTS ialah penyelesaian yang lebih komprehensif dan disyorkan.

Atas ialah kandungan terperinci Bagaimana untuk Menguatkuasakan HTTPS di Seluruh Tapak dengan Selamat dalam ASP.NET?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan