Hubo muchas discusiones mientras investigaba cómo hacer que todo mi sitio https. La mayoría de las respuestas fueron redirigir http a https (archivo .htaccess), lo que no es bueno, porque no es bueno hacer el mismo trabajo dos veces (dos solicitudes). Además, el "hombre en el medio" primero toma http, y quiero que mi sitio vaya directamente a https. ¿Hay otra forma de hacer que todo su sitio sea https y cómo hacerlo? Por ejemplo, cuando el usuario escribe en example.com, ¿ese example.com va automáticamente a https, sin redirigir desde http o cualquier otra cosa primero?
14
Respuestas:
No. No puede hacer que el navegador del visitante elija mágicamente el protocolo correcto. Una redirección es la forma de hacerlo.
fuente
http://en.wikipedia.org/wiki/HTTP_Strict_Transport_Security le permite a su servidor indicar que solo se debe acceder al dominio a través de HTTPS. Esto solo se aplica a solicitudes posteriores, por lo que habría una carga HTTP inicial, pero las solicitudes futuras cargarían HTTPS incluso si alguien escribiera HTTP explícitamente.
IE aún no lo admite, pero todas las otras especialidades sí lo hacen.
fuente
Como han dicho otros, no puede obligar a los usuarios a elegir el protocolo correcto. Pero cuando el usuario intenta usar HTTP, ¿qué debe hacer? Una redirección también es insuficiente, porque un atacante que se sienta entre usted y el cliente puede interceptar la redirección, por lo que el cliente nunca la ve. El cliente continuará enviando HTTP simple, y el atacante eliminará la capa SSL del servidor ( ataque de eliminación de SSL ).
La única forma segura de evitar eso es no servir HTTP en absoluto . No responda en el puerto 80, excepto tal vez para servir una página de texto sin formato que indique al usuario que intente nuevamente con HTTPS (pero no proporcione un enlace, que el atacante podría manipular). Esto obligará al usuario a escribir
https://
en su navegador, por lo que iniciará la conexión con SSL y evitará el ataque MITM.fuente
https://
. En cambio, van a decir "eh, el sitio está roto" y se irán. El mejor de los casos podría serwww.example.com
responder tanto a HTTP como a HTTPS, pero tener la aplicación ejecutándose en algo comoadmin.example.com
solo HTTPS.No del todo cierto: cómo usar DNS / nombres de host u otras formas de resolver a una IP específica: puerto
Hay una manera, pero la mayoría de los navegadores no implementan rfc2782.
fuente
ceejayoz tiene la mejor respuesta para evitar el ataque específicamente mencionado aquí, pero también quiero señalar lo que falta a mucha gente aquí, que básicamente es que HTTP ya ha resuelto la otra parte. Desea hacer una redirección 301 permanente. Esto le dice al cliente que haga más solicitudes a la nueva dirección. Entonces, sí, si alguien escribe la URL incorrecta, realizará 2 solicitudes PERO, en el futuro, se supone que un buen cliente detectará las solicitudes a esa URL y realizará la solicitud correcta para evitar más solicitudes desperdiciadas. El problema es que esto es solo para esa URL exacta. HSTS mejora este esquema al decir también: "durante los próximos n segundos tampoco se permiten conexiones no seguras desde este dominio".
Los usuarios no deben visitar sitios sensibles en ubicaciones inseguras. Especialmente no deberían registrarse para ellos en lugares inseguros. Estos son principios básicos de seguridad del usuario que deberían enseñarse como, 'no abra archivos adjuntos de fuentes no confiables'. Cuáles son realmente la mejor respuesta para prevenir ataques MiM para sitios que nunca han sido visitados.
Como nota al margen, algunos navegadores mejoran esto al decir que ciertos sitios conocidos siempre usan HSTS. Desafortunadamente, no puede simplemente agregarse a esta lista fácilmente.
Lectura adicional: http://coderrr.wordpress.com/2010/12/27/canonical-redirect-pitfalls-with-http-strict-transport-security-and-some-solutions/
http://dev.chromium.org/sts
fuente