¿Por qué no usar HTTPS para todo?

126

Si estaba configurando un servidor y tenía los certificados SSL, ¿por qué no usaría HTTPS para todo el sitio en lugar de solo para compras / inicios de sesión? Creo que tendría más sentido encriptar todo el sitio y proteger al usuario por completo. Evitaría problemas como decidir qué se debe asegurar porque todo lo sería, y no es realmente un inconveniente para el usuario.

Si ya estaba usando un HTTPS para parte del sitio, ¿por qué no querría usarlo para todo el sitio?

Esta es una pregunta relacionada: ¿Por qué solo se usa https para iniciar sesión? , pero las respuestas no son satisfactorias. Las respuestas suponen que no ha podido aplicar https a todo el sitio.

Malfist
fuente
2
Me sorprende que las empresas de servicios financieros sigan utilizando http.
Tom Hawtin - tackline
15
@ Tom Desearía que algunos de los sitios que me envían mensajes de phishing utilicen https para sus sitios falsificados, por lo que sé que estoy entregando mis datos al phisher correcto.
WhirlWind
Gracias por hacer esta pregunta. Estaba asumiendo que el rendimiento era la razón y sería mucho peor que http. Al ver las respuestas, parece que el rendimiento no es terriblemente malo, lo que me hace preguntarme demasiado.
Sundar - Restablecer Mónica
44
Creo que elegiste la peor respuesta de la página, con 11 votos abajo. La respuesta que elija tiene un total desprecio por la seguridad y las mejores prácticas.
torre
55
Esta pregunta realmente merece una respuesta moderna educada.
Old Badman Gray

Respuestas:

17

Puedo pensar en un par de razones.

  • Algunos navegadores pueden no ser compatibles con SSL.
  • SSL puede disminuir el rendimiento un poco. Si los usuarios descargan grandes archivos públicos, puede haber una carga del sistema para cifrarlos cada vez.
Torbellino
fuente
137
¿Qué navegadores no son compatibles con SSL?
Malfist
66
Algunas compilaciones de Lynx no lo admitirán. Si solo admite navegadores más nuevos, debería estar bien.
WhirlWind
55
Estaba buscando esto: iweb.tntech.edu/hexb/publications/https-STAR-03122003.pdf "Una vez que el servidor está saturado, el rendimiento del sistema de HTTPS alcanza alrededor del 67% de HTTP en términos de rendimiento".
WhirlWind
16
No t buy this explanation. 1) Donuso un navegador que no sea compatible con SSL en 2013. 2) incluso Google usa SSL en este momento 3) configurado correctamente, puede redirigir el tráfico http al enlace https correcto.
jfyelle
44
Mala respuesta, ¿por qué manu votos? Lo que el navegador en la tierra no admite ssl y los usuarios no tienen que recordar escribir https, se puede manejar con redireccionamientos
Sanne
25

Además de las otras razones (especialmente relacionadas con el rendimiento), solo puede alojar un solo dominio por dirección IP * cuando usa HTTPS.

Un único servidor puede soportar múltiples dominios en HTTP porque el servidor HTTP de cabecera permite al servidor saber qué dominio de responder con.

Con HTTPS, el servidor debe ofrecer su certificado al cliente durante el protocolo de enlace TLS inicial (que es antes de que se inicie HTTP). Esto significa que el encabezado del servidor aún no se ha enviado, por lo que no hay forma de que el servidor sepa qué dominio se solicita y con qué certificado (www.foo.com o www.bar.com) responder.


* Nota al pie: Técnicamente, puede alojar múltiples dominios si los aloja en diferentes puertos, pero eso generalmente no es una opción. También puede alojar varios dominios si su certificado SSL tiene un comodín. Por ejemplo, puede alojar foo.example.com y bar.example.com con el certificado * .example.com

Eadwacer
fuente
55
¿Tener un certificado SSL comodín no resolvería este problema?
Rob
La nota al pie de página contradice la respuesta: / puede usar certificados comodín y alojar cualquier dominio. en.wikipedia.org/wiki/Wildcard_certificate
lucascaro
23
Este problema ha sido resuelto por la Indicación de Nombre del Servidor, que es compatible con todos los principales navegadores en la actualidad. en.wikipedia.org/wiki/Server_Name_Indication
tia
@tia, excepto que no todos los servidores web lo admiten
efecto
2
@meffect ... Pero muchas cosas, incluyendo apache2, nginx, lighttpd y nodejs. Además de lo cual, el desarrollador puede elegir qué proxy inverso utilizan para el túnel HTTPS. Decir que "ningún cliente lo admite" sería un punto válido si fuera cierto porque es algo sobre lo que el desarrollador no tiene control y debe tenerlo en cuenta. Sin embargo, decir "algunos servidores no lo admiten" es en gran medida irrelevante, precisamente porque no es necesario tenerlo en cuenta. Especialmente cuando todos los servidores de la corriente principal no tienen realmente ayuda.
Parthian Shot
13

SSL / TLS no se usa con la suficiente frecuencia. HTTPS debe usarse para toda la sesión , en ningún momento se puede enviar una ID de sesión a través de HTTP. Si solo está utilizando https para iniciar sesión, entonces está violando claramente el top 10 de OWASP para 2010 "A3: autenticación y administración de sesión interrumpidas".

torre
fuente
Esto puede ser una suposición demasiado amplia. No hay ninguna razón por la que el estado de la sesión no se pueda administrar por separado para http y https mediante una única operación de inicio de sesión https. Es probable que sea más trabajo de lo que vale e invitar a errores relacionados con la seguridad, pero no parece constituir automáticamente una violación clara.
Einstein
@Einstein, por favor lea el OWASP A3, está muy claramente redactado. Tenga en cuenta que el atacante no necesita el nombre de usuario / contraseña si tiene la cookie de una sesión autenticada.
torre
El sitio proporciona https / http mixtos. El inicio de sesión https proporciona tokens de sesión de baja y alta seguridad por separado. Los tokens de baja seguridad asignados solo a la sesión http no funcionarían para operaciones que requieren alta seguridad. Según mi lectura, OWASP A3 está iluminando apenas el problema básico de la posibilidad de acceso de alta seguridad a través del transporte de baja seguridad.
Einstein
@Einstein Entonces, ¿no estás de acuerdo con que los ID de sesión se usen para autenticar los navegadores web? Tenga en cuenta este patrón de ataque, en los ataques xss está tratando de obtener el valor document.cookiepara que el atacante pueda usarlo para autenticarse. Este valor también se puede obtener olfateando el tráfico, que se detiene https. No estoy exactamente seguro de cuál es tu punto.
torre el
En su caso, el ID de sesión para http no tendría valor para los recursos protegidos https si un sistema creara dos sesiones separadas para una sola acción de autenticación para permitir que ambos protocolos se usen sin sesión https y recursos asociados expuestos por la cookie de sesión http. Por ejemplo, la sesión http podría usarse para identificar el acceso a los recursos públicos con fines informativos o el acceso a los tableros de mensajes públicos, pero no serían válidos para recursos seguros.
Einstein
12

¿Por qué no enviar cada correo postal en un sobre opaco a prueba de manipulaciones por correo certificado? Alguien de la oficina de correos siempre tendría la custodia personal de la misma, por lo que podría estar bastante seguro de que nadie está husmeando en su correo. Obviamente, la respuesta es que, si bien vale la pena gastar parte del correo, la mayoría no lo es. No me importa si alguien lee mi "¡Me alegra que hayas salido de la cárcel!" postal al tío Joe.

El cifrado no es gratuito, y no siempre ayuda.

Si una sesión (como compras, banca, etc.) va a terminar usando HTTPS, no hay una buena razón para no hacer que toda la sesión sea HTTPS lo antes posible.

Mi opinión es que HTTPS debe usarse solo cuando sea inevitablemente necesario, ya sea porque la solicitud o la respuesta deben protegerse de la inspección intermedia. Como ejemplo, ve a Yahoo! página principal. Aunque haya iniciado sesión, la mayor parte de su interacción será a través de HTTP. Se autentica a través de HTTPS y obtiene cookies que prueban su identidad, por lo que no necesita HTTPS para leer noticias.

David M
fuente
Jajaja !!! ¡Excelente! Apuesto a que el cartero pícaro abrir el sobre con "Me alegro de que salió de la cárcel" va a asustar los pantalones un poco y vuelva a sellar perfectamente ..
Andrei Rinea
19
Si el correo registrado costara 1% más en lugar de 300% más, lo usaría para todo.
solublefish
3
You authenticate over HTTPS and get cookies that prove your identity, so you don't need HTTPS to read news stories.Esa no es la forma correcta de manejar la autenticación de sesión. Las cookies deben establecerse con la bandera SEGURA. Pero sin tener en cuenta ese horrible consejo de seguridad por un segundo ... Su analogía de correo no es realmente precisa por varias razones. Una de ellas es que generalmente no puede inyectar vulnerabilidades en el correo de respuesta, o suplantar a alguien con impunidad, o hacer estallar un mensaje de "Su sesión caducada" en el correo de respuesta para que vuelvan a ingresar las credenciales que usan para Yahoo! y su banco
Parthian Shot
La reutilización de contraseñas y la fijación de sesiones, entre otras cosas, no son problemas en el correo postal.
Parthian Shot
Esos son buenos puntos, pero está aplicando el análisis de 2016 a una discusión en 2010.
David M
12

La razón más importante, más allá de la carga del sistema, es que rompe el alojamiento virtual basado en nombres. Con SSL, es un sitio: una dirección IP. Esto es bastante costoso y más difícil de administrar.

Adam Wright
fuente
+1 Es la razón por la cual Google App Engine no admite https en dominios personalizados. Esperando a que TLS-SNI sea más compatible.
Sripathi Krishnan
1
Puede recuperar esto con hardware de terminación SSL. Y si la carga del sistema es un problema (¡es para mucha gente!), El SSL de hardware puede ser el camino a seguir de todos modos.
Jason
excepto que puede tener múltiples dominios en el mismo certificado.
lucascaro
10
No es cierto del todo. (Ya no, de todos modos.)
Parthian Shot
77
Votación negativa porque la información en la publicación es obsoleta. SNI ahora es compatible con todos los principales navegadores.
Martin Törnwall
5

Para enlaces de alta latencia, el protocolo de enlace TLS inicial requiere viajes de ida y vuelta adicionales para validar la cadena de certificados (incluido el envío de cualquier certificado intermedio), acordar conjuntos de cifrado y establecer una sesión. Una vez que se establece una sesión, las solicitudes posteriores pueden utilizar el almacenamiento en caché de la sesión para reducir el número de viajes de ida y vuelta, pero incluso en este mejor caso todavía hay más viajes de ida y vuelta de los que requiere una conexión HTTP normal. Incluso si las operaciones de encriptación fueran libres, los viajes de ida y vuelta no lo son y pueden ser notorios en enlaces de red más lentos, especialmente si el sitio no aprovecha la canalización de http. Para los usuarios de banda ancha dentro de un segmento bien conectado de la red, esto no es un problema. Si realiza negocios a nivel internacional, solicitar https puede causar retrasos notorios.

Hay consideraciones adicionales, como el mantenimiento del servidor del estado de la sesión que requiere potencialmente más memoria y, por supuesto, operaciones de cifrado de datos. Prácticamente, los sitios pequeños no necesitan preocuparse por la capacidad dada del servidor versus el costo del hardware actual. Cualquier sitio grande fácilmente podría permitirse la descarga de CPU / w AES o tarjetas adicionales para proporcionar una funcionalidad similar.

Todos estos problemas se están volviendo cada vez más no problemáticos a medida que pasa el tiempo y las capacidades del hardware y la red mejoran. En la mayoría de los casos, dudo que haya alguna diferencia tangible hoy.

Puede haber consideraciones operativas tales como restricciones administrativas en el tráfico https (piense en filtros de contenido intermedios ... etc.) posiblemente en algunas regulaciones corporativas o gubernamentales. Algunos entornos corporativos requieren descifrado de datos en el perímetro para evitar fugas de información ... interferencia con puntos de acceso y sistemas de acceso basados ​​en la web similares que no son capaces de inyectar mensajes en transacciones https. Al final del día, desde mi punto de vista, las razones para no usar https por defecto probablemente sean bastante pequeñas.

Einstein
fuente
4

https consume más recursos que el http normal.

Exige más de los servidores y los clientes.

Johan
fuente
3

Si toda la sesión está encriptada, no podrá utilizar el almacenamiento en caché de recursos estáticos como imágenes y js a nivel de proxy, por ejemplo, ISP.

Alexei Tenitski
fuente
Bueno, excepto para servidores proxy con terminación SSL, o si está utilizando un CDN compatible con HTTPS.
Parthian Shot
3

Debe usar HTTPS en todas partes, pero perderá lo siguiente:

  1. Definitivamente no debe usar la Compresión SSL o la Compresión HTTP sobre SSL, debido a los ataques BREACH y CRIME. Entonces no hay compresión si su respuesta contiene identificadores de sesión o csrf. Puede mitigar esto colocando sus recursos estáticos (imágenes, js, css) en un dominio sin cookies, y use la compresión allí. También puede usar la minificación HTML.

  2. Un certificado SSL, una dirección IP, a menos que use SNI, que no funciona en todos los navegadores (antiguo Android, Blackberry 6, etc.).

  3. No debe alojar ningún contenido externo en sus páginas que no provenga de SSL.

  4. Pierde el encabezado Referer HTTP saliente cuando el navegador va a una página HTTP, lo que puede o no ser un problema para usted.

Neil McGuigan
fuente
0

Bueno, la razón obvia es el rendimiento: el servidor deberá cifrar todos los datos antes de la transmisión y luego el cliente los descifrará al recibirlos, lo que es una pérdida de tiempo si no hay datos confidenciales. También puede afectar la cantidad de su sitio que se almacena en caché.

También es potencialmente confuso para los usuarios finales si todas las direcciones usan en https://lugar de las familiares http://. Además, vea esta respuesta:

¿Por qué no usar siempre https cuando se incluye un archivo js?

Will Vousden
fuente
9
¿Por qué confundiría a los usuarios? ¿Cuántos realmente miran el protocolo de la uri?
Malfist
Hoy, 10 años después, https es más común y http sería confuso
madprops
0

https requiere que el servidor cifre y descifre las solicitudes y respuestas de los clientes. El impacto en el rendimiento aumentará si el servidor atiende a muchos clientes. Es por eso que la mayoría de las implementaciones actuales de https se limitan solo a la autenticación de contraseña. Pero con el aumento de la potencia informática, esto puede cambiar, después de todo, Gmail está utilizando SSL para todo el sitio.

futureelite7
fuente
0

Además de la respuesta de WhirlWind, debe considerar el costo y la aplicabilidad de los certificados SSL, los problemas de acceso (es posible, aunque poco probable, que un cliente no pueda comunicarse a través del puerto SSL), etc.

Usar SSL no es una garantía de seguridad garantizada. Este tipo de protección debe integrarse en la arquitectura de la aplicación, en lugar de tratar de confiar en una bala mágica.

3Dave
fuente
2
Dado que el usuario ya protege parte del sitio, el costo del certificado es más o menos discutible.
futureelite7
2
@ futureelite7 buen punto, pero probablemente relevante para otros que puedan estar investigando este tema en el futuro.
3Dave
El featurism es el enemigo de la seguridad. La mayoría de las debilidades en mis propias cosas, tienen raíces en alguna característica desaconsejada que yo o un predecesor acepté en el plan del producto. Creo que comenzar una función porque causa una vulnerabilidad de seguridad no te hace más popular que rechazarla en primer lugar. La popularidad NO DEBE importar, pero lamentablemente puede y lo hace. En su lugar, me preguntaría cuánto realmente quiero tratar con usuarios no seguros, o si la aplicación es adecuada incluso para usuarios que no pueden usar el cifrado (piense: banca, política, activismo).
Jason
0

Me dijeron que en un proyecto en nuestra empresa, descubrieron que el ancho de banda ocupado por los mensajes SSL era significativamente mayor que el de los mensajes simples. Creo que alguien me dijo que era una información asombrosamente 12 veces mayor. No lo he verificado yo mismo y suena muy alto, pero si se agrega algún tipo de encabezado a cada página y la mayoría de las páginas tienen una pequeña cantidad de contenido, puede que no esté tan lejos.

Dicho esto, la molestia de ir y venir entre http y https y hacer un seguimiento de qué páginas son, lo que me parece demasiado esfuerzo. Solo una vez traté de construir un sitio que los mezclara y terminamos abandonando el plan cuando nos tropezamos con cosas complejas como ventanas emergentes creadas por Javascript al conectarles un protocolo incorrecto y ese tipo de cosas. Terminamos haciendo que todo el sitio https fuera menos problemático. Supongo que en casos simples en los que solo tienes una pantalla de inicio de sesión y una pantalla de pago que deben protegerse y son páginas simples, no sería un gran problema mezclar y combinar.

No me preocuparía mucho la carga del cliente para descifrar. Normalmente, el cliente pasará mucho más tiempo esperando que los datos lleguen a través del cable de lo que se necesita para procesarlos. Hasta que los usuarios habitualmente tengan conexiones a Internet de gigabit / seg, la potencia de procesamiento del cliente probablemente sea bastante irrelevante. La potencia de la CPU requerida por el servidor para cifrar páginas es un problema diferente. Es posible que haya problemas de que no pueda mantenerse al día con cientos o miles de usuarios.

Arrendajo
fuente
1
El ancho de banda adicional es pequeño incluso en el peor de los casos.
Presidente James K. Polk
0

Otro pequeño punto (tal vez alguien puede verificar): si un usuario escribe datos en un elemento de formulario, como un cuadro de texto y luego, por alguna razón, actualiza la página o el servidor falla por un segundo, los datos que ingresó el usuario se pierden usando HTTPS pero se conserva utilizando HTTP.

Nota: No estoy seguro de si esto es específico del navegador, pero ciertamente sucede con mi navegador Firefox.

toc777
fuente
0

Windows Server 2012 con IIS 8.0 ahora ofrece SNI, que es la Indicación de nombre del servidor que permite que múltiples aplicaciones web SSL en IIS se alojen en una dirección IP.

Webmaister
fuente
1
¿Qué tiene eso que ver con la pregunta? Es una característica interesante, pero no veo la relevancia.
user1618143