¿Por qué las solicitudes HTTPS no se pueden almacenar en caché pero HTTP sí?

En realidad, las solicitudes HTTPS son susceptibles a ataques de hombre en el medio . Entonces, incluso más allá de las otras respuestas, sí, en teoría, son almacenables en caché .

Déjame explicarte algo. Todos sabemos que Quora tiene un certificado SSL confiable de una Autoridad de Certificación ‘respetable’.

Pero, ¿ quién está emitiendo ese certificado?

¿Es digicert? ¿Es Verisign? ¿Es RSA?

¿O es la autoridad de certificación del propio gobierno de su país?

Resulta que los cuatro son aceptables siempre que pertenezcan a la lista de proveedores de CA de confianza de su sistema. Y sí, lo hacen. Míralo, la CA del gobierno finlandés está instalada como una CA de confianza en mi Mac de forma predeterminada. Ahora, ¿por qué confiaría en cualquier CA del gobierno por defecto?

Su propio ISP podría actuar en nombre de algunas de estas agencias gubernamentales e interceptar todas las conexiones SSL de la siguiente manera:

Explicacion :
Su navegador inicia un protocolo de enlace SSL a través de la red para llegar al servidor. El ISP completa el apretón de manos con el certificado de CA del gobierno. Ahora, su sesión de datos SSL envía A encriptada al ISP, con claves conocidas por el ISP.

Su ISP decide retransmitir esta información al Servidor descifrando este mensaje y posiblemente modificándolos como B. Luego inicia una sesión de cliente SSL como si viniera de su IP – (resulta que el Servidor generalmente no valida al cliente certificado) y envía B cifrado al servidor. Aquí, el certificado de CA real participa en el cifrado de la clave de sesión.

Lo que ahora le ofrece una respuesta a esta pregunta: ¿se pueden almacenar en caché las solicitudes SSL ? Si , de hecho. Y pueden ser interceptados y manipulados.

Maravillosa pregunta!

Las solicitudes HTTPS se pueden almacenar en caché, pero solo por navegadores, no por servidores proxy, y algunos navegadores pueden negarse a escribir realmente la memoria caché en el disco a menos que se les indique explícitamente (mediante encabezados).

La razón por la que no quieren escribir los archivos en el disco es algo comprensible: no desea que sus extractos bancarios y otros datos privados se encuentren en archivos de texto sin formato en la carpeta de caché del navegador.

La razón por la que los servidores proxy no pueden almacenar en caché las solicitudes HTTPS es porque HTTPS fue diseñado para evitar eso: técnicamente, no hay diferencia entre el almacenamiento en caché de proxy y un ataque de repetición, y HTTPS fue diseñado para evitar ataques de suplantación / repetición (por ejemplo, rellenará algunos al azar datos en cada mensaje, que solo es válido una vez; de modo que, por ejemplo, no puede capturar algunos paquetes de algún administrador que apaga un servidor y luego simplemente reinyecta los mismos paquetes para apagarlo usted mismo, sin siquiera molestarse en romper el crypto: el nonces ahora no será válido).

Las solicitudes HTTPS SON almacenables en caché

El almacenamiento en caché de solicitudes HTTPS se puede controlar mediante encabezados de respuesta al igual que HTTP.

Para muchos es una sorpresa que, de manera predeterminada, todas las versiones de Internet Explorer almacenen en caché el contenido HTTPS siempre que los encabezados de caché lo permitan. Si un recurso se envía con una directiva Cache-Control: max-age = 600, por ejemplo, IE almacenará en caché el recurso durante diez minutos. El uso de HTTPS solo no tiene ningún impacto sobre si IE decide o no almacenar en caché un recurso. (Los navegadores que no son IE pueden tener un comportamiento predeterminado diferente para el almacenamiento en caché del contenido HTTPS, según la versión que esté utilizando, por lo que no hablaré de ellos).

De: Los 7 mitos principales sobre HTTPS

Más información: ¿Los navegadores web almacenarán en caché el contenido a través de https?

De forma predeterminada, los navegadores web deben almacenar en caché el contenido a través de HTTPS igual que a través de HTTP, a menos que se indique explícitamente lo contrario a través de los Encabezados HTTP recibidos.

Esto se puede lograr estableciendo el valor de max-age en el encabezado Cache-Control en un valor distinto de cero, p. Ej.

Control de caché: max-age = 3600

le dirá al navegador que esta página se puede almacenar en caché durante 3600 segundos (1 hora)

No solían ser, pero ahora lo son.

En Firefox sobre: ​​config , hay un valor browser.cache.disk_cache_ssl . Hace algunos años, el valor predeterminado era “falso”, pero ahora es “verdadero”. Lo puedes cambiar si quieres. Cambié mi estado predeterminado “verdadero” hace un tiempo en mi escritorio: es tolerablemente seguro en una oficina privada, y dudo que alguien pueda molestarse en hackearlo para cavar en la memoria caché de mi navegador.

Supongo que la idea detrás de hacer que las solicitudes HTTPS no se puedan almacenar en caché fue que, en 2000, las páginas más seguras tenían información confidencial, por ejemplo, extractos bancarios, la mayoría de las PC eran inseguras, y el contenido de la memoria caché no debería dejarse allí donde cualquiera pudiera verlos. Ahora (2017), la mayoría de los sitios web son seguros, incluso si no tienen información confidencial, la mayoría de las PC son más seguras de lo que eran, y hacer que las páginas no se puedan almacenar en caché aumenta el tiempo de descarga para todo. La conveniencia supera el riesgo agregado.

More Interesting

¿Por qué los programas de desarrollo de software inmersivo son tan caros?

¿Por qué no hay una lucha real en mi vida? Soy una mujer de 22 años que trabaja en una empresa de software en Bangalore con un paquete decente.

¿Cómo esconden el código fuente de un software?

¿Cuáles son los requisitos básicos para principiantes al crear un nuevo software?

¿Cuál es el tamaño estándar para Agile Team?

Nunca creo que mi código sea lo suficientemente bueno y debido a esto, siempre vuelvo a rehacer proyectos y termino sin hacer nada. ¿Hay alguna manera de superar esto?

¿Cuáles fueron los roles y los perfiles de trabajo de los ingenieros de software, informática y informática en la década de 1990?

¿Cómo se comunicaban e intercambiaban aplicaciones complejas en red antes de desarrollar el estilo arquitectónico REST?

Si de repente encuentra que es extremadamente lento para su software comunicarse con la base de datos, ¿cuál es el posible problema?

¿Cuál es la razón detrás de decir que el sánscrito es el lenguaje más adecuado para la programación?

¿Por qué Accenture acepta a alguien de cualquier curso y simplemente lo convierte en un probador de software sin tener en cuenta sus habilidades y antecedentes reales?

Con respecto al desarrollo web, ¿cómo hago para que una imagen de fondo grande se cargue rápidamente?

¿Es Ruby on Rails una mejor opción que Java (por ejemplo, JSF) para desarrollar aplicaciones web? ¿Por qué?

¿Cuáles son algunas de las mejores prácticas en la gestión del rendimiento de las aplicaciones?

Quiero trabajar en algún proyecto paralelo en el espacio móvil (no remunerado, solo por diversión y aprendizaje) aparte de mi trabajo diario. ¿Cómo puedo encontrar / acercarme a las compañías que buscan tales oportunidades?