Pour ceux qui utilisent ASP.NET MVC. Vous pouvez utiliser ce qui suit pour forcer SSL / TLS sur HTTPS sur l'ensemble du site de deux manières:
À la dure
1 - Ajoutez le RequireHttpsAttribute aux filtres globaux:
GlobalFilters.Filters.Add(new RequireHttpsAttribute());
2 - Forcer les jetons Anti-Forgery à utiliser SSL / TLS:
AntiForgeryConfig.RequireSsl = true;
3 - Exiger que les cookies requièrent HTTPS par défaut en modifiant le fichier Web.config:
<system.web>
<httpCookies httpOnlyCookies="true" requireSSL="true" />
</system.web>
4 - Utilisez le package NuGet NWebSec.Owin et ajoutez la ligne de code suivante pour activer Strict Transport Security sur le site. N'oubliez pas d'ajouter la directive Preload ci-dessous et soumettez votre site au site HSTS Preload . Plus d'informations ici et ici . Notez que si vous n'utilisez pas OWIN, il existe une méthode Web.config que vous pouvez consulter sur le site NWebSec .
// app is your OWIN IAppBuilder app in Startup.cs
app.UseHsts(options => options.MaxAge(days: 30).Preload());
5 - Utilisez le package NuGet NWebSec.Owin et ajoutez la ligne de code suivante pour activer l'épinglage par clé publique (HPKP) sur le site. Plus d'informations ici et ici .
// app is your OWIN IAppBuilder app in Startup.cs
app.UseHpkp(options => options
.Sha256Pins(
"Base64 encoded SHA-256 hash of your first certificate e.g. cUPcTAZWKaASuYWhhneDttWpY3oBAkE3h2+soZS7sWs=",
"Base64 encoded SHA-256 hash of your second backup certificate e.g. M8HztCzM3elUxkcjR2S5P4hhyBNf6lHkmjAHKhpGPWE=")
.MaxAge(days: 30));
6 - Incluez le schéma https dans toutes les URL utilisées. L' en-tête HTTP de la politique de sécurité du contenu (CSP) et l' intégrité des sous-ressources (SRI) ne fonctionnent pas bien lorsque vous imitez le schéma dans certains navigateurs. Il vaut mieux être explicite sur HTTPS. par exemple
<script src="https://ajax.aspnetcdn.com/ajax/bootstrap/3.3.4/bootstrap.min.js"></script>
La manière facile
Utilisez le modèle de projet ASP.NET MVC Boilerplate Visual Studio pour générer un projet avec tout cela et bien plus encore intégré. Vous pouvez également afficher le code sur GitHub .