Para aquellos que usan ASP.NET MVC. Puede usar lo siguiente para forzar SSL / TLS a través de HTTPS en todo el sitio de dos maneras:
El camino difícil
1 - Agregue RequireHttpsAttribute a los filtros globales:
GlobalFilters.Filters.Add(new RequireHttpsAttribute());
2 - Forzar tokens antifalsificación para usar SSL / TLS:
AntiForgeryConfig.RequireSsl = true;
3 - Exigir que las cookies requieran HTTPS de forma predeterminada cambiando el archivo Web.config:
<system.web>
<httpCookies httpOnlyCookies="true" requireSSL="true" />
</system.web>
4 - Use el paquete NWebSec.Owin NuGet y agregue la siguiente línea de código para habilitar Strict Transport Security en todo el sitio. No olvide agregar la directiva de precarga a continuación y enviar su sitio al sitio de precarga de HSTS . Más información aquí y aquí . Tenga en cuenta que si no está utilizando OWIN, hay un método Web.config que puede leer en el sitio NWebSec .
// app is your OWIN IAppBuilder app in Startup.cs
app.UseHsts(options => options.MaxAge(days: 30).Preload());
5 - Use el paquete NWebSec.Owin NuGet y agregue la siguiente línea de código para habilitar la fijación de clave pública (HPKP) en todo el sitio. Más información aquí y aquí .
// 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 - Incluya el esquema https en cualquier URL utilizada. El encabezado HTTP de la Política de seguridad de contenido (CSP) y la Integridad de recursos secundarios (SRI) no funcionan bien cuando se imita el esquema en algunos navegadores. Es mejor ser explícito sobre HTTPS. p.ej
<script src="https://ajax.aspnetcdn.com/ajax/bootstrap/3.3.4/bootstrap.min.js"></script>
La manera fácil
Use la plantilla de proyecto ASP.NET MVC Boilerplate Visual Studio para generar un proyecto con todo esto y mucho más integrado. También puede ver el código en GitHub .