Saltar al contenido

Cómo forzar HTTPS usando un archivo web.config

Recabamos en todo el mundo online para regalarte la solución para tu problema, en caso de alguna duda deja tu duda y responderemos con mucho gusto, porque estamos para ayudarte.

Solución:

Necesita el módulo de reescritura de URL, preferiblemente v2 (no tengo v1 instalado, por lo que no puedo garantizar que funcione allí, pero debería).

Aquí hay un ejemplo de tal web.config: forzará HTTPS para TODOS los recursos (usando el redireccionamiento permanente 301):



    
        
            
                
                
                    
                    
                        
                    
                    
                
            
        
    

PD
Esta solución en particular no tiene nada que ver con ASP.NET/PHP o cualquier otra tecnología, ya que se realiza utilizando solo el módulo de reescritura de URL; se procesa en uno de los niveles iniciales / inferiores, antes de que la solicitud llegue al punto en el que se obtiene el código. ejecutado.

Para aquellos que usan ASP.NET MVC. Puedes usar el RequireHttpsAttribute para forzar que todas las respuestas sean HTTPS:

GlobalFilters.Filters.Add(new RequireHttpsAttribute());

Otras cosas que quizás también desee hacer para ayudar a proteger su sitio:

  1. Obligar a los tokens anti-falsificación a usar SSL / TLS:

    AntiForgeryConfig.RequireSsl = true;
    
  2. Exigir que las cookies requieran HTTPS de forma predeterminada cambiando el archivo Web.config:

    
        
    
    
  3. Utilizar el NWebSec.Owin Paquete NuGet y agregue la siguiente línea de código para habilitar Strict Transport Security (HSTS) 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, existe un método Web.config en el que puede leer en el sitio NWebSec.

    // app is your OWIN IAppBuilder app in Startup.cs
    app.UseHsts(options => options.MaxAge(days: 720).Preload());
    
  4. 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));
    
  5. Incluya el esquema https en cualquier URL utilizada. El encabezado HTTP de la Política de seguridad de contenido (CSP) y la Integridad de los recursos secundarios (SRI) no funcionan bien cuando se imita el esquema en algunos navegadores. Es mejor ser explícito sobre HTTPS. p.ej

    
    
  6. 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.

Para aumentar la respuesta de LazyOne, aquí hay una versión anotada de la respuesta.


  
     
     
       
         
           
         
         
     
  

Borre todas las demás reglas que podrían estar ya definidas en este servidor. Cree una nueva regla, que llamaremos “Redirigir todas las solicitudes a https”. Después de procesar esta regla, ¡no procese más reglas! Coincidir con todas las URL entrantes. Luego, verifique si todas estas otras condiciones son true: HTTPS está APAGADO. Bueno, esa es solo una condición (pero asegúrese de que sea true). Si es así, envíe un redireccionamiento permanente 301 al cliente en http://www.foobar.com/whatever?else=the#url-contains. No agregue la consulta string al final de eso, porque duplicaría la consulta string!

Esto es lo que las propiedades, attributes, y algunos de los valores significan.

  • claro elimina todas las reglas del servidor que de otro modo podríamos heredar.
  • regla define una regla.
    • nombre un nombre arbitrario (aunque único) para la regla.
    • stopProcessing ya sea para reenviar la solicitud inmediatamente a la canalización de solicitudes de IIS o primero para procesar reglas adicionales.
  • coincidir cuándo ejecutar esta regla.
    • url un patrón contra el cual evaluar la URL
  • condiciones condiciones adicionales sobre cuándo ejecutar esta regla; las condiciones se procesan solo si primero hay una coincidencia.
    • agrupacionlógica si todas las condiciones deben ser true (MatchAll) o cualquiera de las condiciones debe ser true (MatchAny); similar a AND vs OR.
  • agregar agrega una condición que debe cumplirse.
    • aporte la entrada que está evaluando una condición; la entrada puede ser variables de servidor.
    • patrón el estándar contra el cual evaluar la entrada.
    • ignorar caso si la capitalización importa o no.
  • acción que hacer si el match y es conditions son todos true.
    • escribe generalmente puede ser redirect (lado del cliente) o rewrite (lado del servidor).
    • url qué producir como resultado de esta regla; en este caso, concatenar https:// con dos variables de servidor.
    • redirectType qué redirección HTTP utilizar; este es un 301 permanente.
    • appendQueryString si agregar la consulta string al final de la resultante url O no; en este caso, lo estamos configurando para false, porque el REQUEST_URI ya lo incluye.

Las variables del servidor son

  • HTTPS que es o OFF o ON.
  • HTTP_HOST es www.mysite.com, y
  • REQUEST_URI incluye el resto del URI, p. ej. /home?key=value
    • el navegador maneja el #fragment (ver comentario de LazyOne).

Véase también: https://www.iis.net/learn/extensions/url-rewrite-module/url-rewrite-module-configuration-reference

Reseñas y valoraciones del post

Al final de todo puedes encontrar los informes de otros administradores, tú igualmente tienes la opción de insertar el tuyo si lo crees conveniente.

¡Haz clic para puntuar esta entrada!
(Votos: 2 Promedio: 4)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *