Maison >développement back-end >C++ >Comment appliquer en toute sécurité HTTPS sur l'ensemble du site dans ASP.NET ?

Comment appliquer en toute sécurité HTTPS sur l'ensemble du site dans ASP.NET ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-31 03:39:09587parcourir

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

Application de HTTPS à l'échelle du site dans ASP.NET

Contexte : Il y a plusieurs mois, un site a été implémenté où toutes les demandes devaient être effectuées via HTTPS. La seule solution viable à l'époque impliquait de vérifier la demande lors de l'événement de chargement de la page et de la rediriger vers HTTPS si nécessaire.

Solution alternative :

Une approche plus robuste consiste à utilisez HTTP Strict Transport Security (HSTS). En implémentant HSTS, vous pouvez empêcher les requêtes HTTP non sécurisées et appliquer les connexions HTTPS pendant une période spécifiée.

Configuration Web.config :

Pour configurer HSTS dans ASP.NET, ajoutez le code suivant au fichier section de votre fichier 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>

Code Global.asax.cs (méthode alternative) :

Bien que HSTS soit l'approche recommandée, une solution alternative implique l'ajout du code suivant à l'événement Application_BeginRequest dans 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);
   }
}

Comparaison :

L'utilisation de HSTS offre l'avantage de sécuriser les connexions HTTPS au niveau du navigateur, alors que l'approche basée sur le code dans Global.asax.cs gère la redirection uniquement dans l'application ASP.NET. HSTS est donc une solution plus complète et recommandée.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn