Me dicen que para evitar que el usuario-info de la fuga, «no-cache» en respuesta no es suficiente. «no-store» que también es necesario.

Cache-Control: no-cache, no-store

Después de leer esta especificación http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html, todavía no estoy muy seguro de por qué.

Mi comprensión actual es que es sólo por intermedio de la caché del servidor. Incluso si «no-cache» es en respuesta, intermedio servidor de caché puede guardar el contenido no volátil de almacenamiento. El intermedio servidor de caché va a decidir si el uso de la guarda de contenido para la siguiente solicitud. Sin embargo, si «no-store» es en la respuesta, la caché intermedio sever no se supone que para almacenar el contenido. Así que es más seguro.

¿Hay alguna otra razón por la que necesitamos tanto «no-cache» y «no-store»?

  • no-cache no significa lo que usted piensa. En realidad, significa «por favor, vuelva a validar».
InformationsquelleAutor Morgan Cheng | 2009-05-15

11 Comentarios

  1. 70

    Debo aclarar que no-cache no significa no caché. De hecho, significa «volver a validar con el servidor» antes de usar cualquier respuesta en caché puede tener, en cada solicitud.

    must-revalidate, por otro lado, sólo necesita revalidar cuando el recurso se considera obsoleto.

    Si el servidor dice que el recurso está siendo válida, a continuación, la memoria caché puede responder con su representación, por lo tanto aliviando la necesidad de que el servidor vuelva a enviar la totalidad de los recursos.

    no-store es eficaz la plena no caché directiva y es la intención de impedir el almacenamiento de la representación en cualquier forma de caché de ningún tipo.

    Digo que sea, pero tenga en cuenta esto en el RFC 2616 HTTP especificaciones:

    Historia búferes PUEDE almacenar este tipo de respuestas como parte de su operación normal

    Pero esto es omitido de la nueva RFC 7234 HTTP spec, potencialmente, en un intento de hacer no-store más fuerte, ver:

    http://tools.ietf.org/html/rfc7234#section-5.2.1.5

    • Todavía no responder a la pregunta: ¿por qué por tanto no-cache y no-store deben ser utilizados en la respuesta HTTP? No Cache-Control: no-store suficiente?
    • Hay diferencias entre los navegadores? Porque en este artículo de Microsoft docs.microsoft.com/en-us/iis/configuration/system.webServer/… no mencionar siquiera no-store y describe no-cache como si no es el almacenamiento en caché en todos los…. Estoy confundido!
    • Alconja la respuesta es la respuesta a la pregunta, específicamente. Cuando me contestó que lo hizo sólo para aclarar, muy común en la miconception. Por favor vote por la otra respuesta!
  2. 45

    Bajo ciertas circunstancias, IE6 todavía caché de archivos, incluso cuando Cache-Control: no-cache es en los encabezados de respuesta.

    La W3C estados de no-cache:

    Si la directiva no-cache no
    especificar un nombre de campo, luego de una memoria caché
    NO DEBE utilizar la respuesta para satisfacer una
    después de una petición sin éxito
    revalidación con el servidor de origen.

    Mi solicitud, si usted ha visitado una página con el no-cache encabezado, luego de la sesión y, a continuación, devolver el golpe en su navegador IE6 seguiría agarrar la página de la caché (sin/un nuevo validación de solicitud para el servidor). Añadir en el no-store encabezado dejado de hacerlo. Pero si usted toma el W3C en su palabra, no hay realmente ninguna manera de controlar este comportamiento:

    Historia búferes PUEDE almacenar este tipo de respuestas como parte de su operación normal.

    Diferencias generales entre el historial del navegador y la normal de almacenamiento en caché de HTTP se describen en una sub-sección de la especificación.

    • cuando usted golpeó de nuevo en su navegador IE6 no agarrar la página de la caché. Se agarra a la página desde el búfer de historial.
    • En Chrome 34 (2014), todavía es necesario establecer no-store así. De lo contrario, Chrome te mostrará en caché/buffer de datos cuando se utiliza el botón atrás.
    • -1 porque la primera frase erróneamente supone que es incorrecto para un navegador para almacenar en caché una respuesta que tiene un no-cache encabezado. El W3C citar inmediatamente a continuación se hace claro que este no es el caso; por el contrario, la no-cache encabezado sólo significa que la respuesta debe ser revalidados antes de ser reutilizado para servir a las solicitudes posteriores.
  3. 16

    De la Especificación HTTP 1.1:

    no-store:

    El propósito de la no-store directiva es prevenir el involuntaria de liberación o retención de información sensible (por ejemplo, en cintas de copia de seguridad). La no-store directiva se aplica a la totalidad del mensaje, y PUEDE ser enviado en una respuesta o una petición. Si envía una solicitud, una memoria caché NO DEBE almacenar cualquier parte de esta solicitud o en cualquier respuesta. Si se envía en una respuesta, una memoria caché NO DEBE almacenar cualquier parte de esta respuesta o la solicitud de que la provoca. La presente directiva se aplica tanto a los no compartidos y caches compartidas. «NO DEBE almacenar» en este contexto significa que la caché NO DEBEN intencionalmente almacenar la información en almacenamiento no volátil, y se DEBE hacer un mejor esfuerzo de intentar quitar la información de la volatilidad de almacenamiento tan pronto como sea posible después de reenvío.
    Incluso cuando esta directiva está asociada con una respuesta, los usuarios pueden guardar explícitamente tal respuesta fuera de el sistema de almacenamiento en caché (por ejemplo, con un diálogo «Guardar Como»). La historia de búferes PUEDE almacenar este tipo de respuestas como parte de su operación normal.
    El propósito de esta directiva es cumplir con los requisitos establecidos de ciertos usuarios y el servicio de los autores que se preocupan por las descargas accidentales de información a través de imprevistos de los accesos a la caché de estructuras de datos. Mientras que el uso de esta directiva podría mejorar la privacidad en algunos casos, nos advierten que NO es en modo alguno un confiable y suficiente de mecanismos para asegurar la privacidad. En particular, malicioso o en peligro de cachés pueden no reconocer o para obedecer a la presente directiva, y las redes de comunicaciones pueden ser vulnerables a la interceptación.

    • Si ya no se almacena en caché la solicitud, entonces ¿no que ya evitar el almacenamiento de la respuesta en no volátil de los medios de comunicación?
    • Más a menudo que no. no-cache y max-age=0 decir que el elemento a ser considerado obsoleto. Esto significa que el debe ser revalidados antes de ser servido. Esto significa que una caché no se pudo guardar el archivo y, a continuación, realizar una solicitud condicional a que el servidor puede responder 304 NOT MODIFIED. Obviamente, esto es una gran ventaja, ya que el cuerpo de la respuesta no necesita ser generado y enviado. Para tomar ventaja de esto muchos (la mayoría?) las cachés de se de la tienda no-cache respuestas.
  4. 13

    Si quieres evitar el almacenamiento en caché (por ejemplo, la fuerza de una recarga cuando se utiliza el botón «atrás») que usted necesita:

    • no-cache de IE

    • no-store para Firefox

    Hay mi información sobre esto aquí:

    http://blog.httpwatch.com/2008/10/15/two-important-differences-between-firefox-and-ie-caching/

    • ¿Por qué no no-almacenar ser suficiente para Internet Explorer? Tu post no explica.
    • Que versión de IE están hablando?
    • Probablemente cualquier versión de IE fue el más reciente en el momento en que él/ella escribió el comentario. Según la Wikipedia este fue IE7. Para FF se parece a 3. No hay muchas personas que todavía uso.
  5. 10

    no-store no debería ser necesario en situaciones normales, y pueden perjudicar a la velocidad y facilidad de uso. Está destinado para el uso donde la respuesta HTTP contiene información tan sensible que nunca debe ser escrito para el caché de disco en todas las personas, independientemente de los efectos negativos que crea para el usuario.

    Cómo funciona:

    • Normalmente, incluso si un agente de usuario, tales como un navegador determina que una respuesta no debe ser almacenado en caché, todavía puede almacenar en la caché de disco, por razones internas para el agente de usuario. Esta versión puede ser utilizada para funciones como la de «ver código fuente», «volver», «información de la página», y así sucesivamente, donde el usuario no necesariamente solicitado de nuevo la página, pero el navegador no lo consideran una nueva vista de página y tiene sentido para servir a la misma versión que el usuario está viendo actualmente.

    • Utilizando no-store evitará que la respuesta se almacena, sino que esto puede influir en el navegador la capacidad de darle a «ver código fuente», «volver», «información de la página», y así sucesivamente, sin hacer una nueva solicitud para el servidor, lo cual es indeseable. En otras palabras, el usuario puede tratar de visualización de la fuente, y si el navegador no lo tenía en la memoria, que va a ser dicho que esto no es posible, o se hará una nueva solicitud para el servidor. Por lo tanto, no-store sólo debe ser utilizado cuando el impedido la experiencia del usuario de estas características no funciona correctamente o rápidamente se ve compensado por la importancia de asegurarse de que el contenido no se almacena en la memoria caché.

    Mi comprensión actual es que es sólo por intermedio de la caché del servidor. Incluso si «no-cache» es en respuesta, intermedio servidor de caché puede guardar el contenido no volátil de almacenamiento.

    Esto es incorrecto. Intermedio de los servidores de caché compatible con HTTP 1.1 obedecer la no-cache y must-revalidate instrucciones, asegurándose de que el contenido no está en caché. El uso de estas instrucciones se asegurará de que la respuesta no está en caché por intermedio de la caché, y que todas las solicitudes posteriores que son enviados de vuelta al servidor de origen.

    Si la caché intermedio servidor no es compatible con HTTP 1.1, entonces usted tendrá que utilizar Pragma: no-cache y esperar lo mejor. Tenga en cuenta que si no es compatible con HTTP 1.1, a continuación, no-store es irrelevante de todos modos.

    • Estoy malentendido algo, porque mnot.net/cache_docs/#CACHE-CONTROL es contradecirse a usted. Se dice que no-cache mantiene rígido frescura sin renunciar a todas las ventajas de almacenamiento en caché, lo que significa que la memoria caché se almacena y se utiliza de nuevo si el servidor responde con 304 No Modificado.
    • -1: no-cache no significa que el contenido no puede ser almacenado en caché. En 14.9.1 Lo que Es cacheable con la especificación dice, «Si la directiva no-cache no especifica un nombre de campo, luego de una caché, NO DEBE utilizar la respuesta para satisfacer una solicitud posterior sin éxito revalidación con el servidor de origen.» (w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9.) Como Chris Shiflett, explica, «no impedir un sistema de almacenamiento en caché de mantener una copia en la caché. Simplemente requiere que el sistema de almacenamiento en caché revalidar su caché antes de enviarlo de vuelta al cliente.» (HTTP Manual del Programador, p 91)
    • No creo que lo que escribí en esta respuesta los contratos de cualquiera de esos dos comentarios – yo simplemente no hablar de cómo los navegadores revalidar (por ejemplo, el uso de If-Modified-since / If-None-Match) porque yo no lo veo como relevantes. Yo ni siquiera intento de cubrir lo que no-cache es, así que yo estoy teniendo dificultad para la comprensión de cómo el comentario de @james.garriss se relaciona con mi respuesta.
  6. 8

    Si un sistema de almacenamiento en caché implementa correctamente no-store, entonces no necesita no-cache. Pero no todos lo hacen. Además, algunos de los navegadores implementan no-cache como no era de la tienda. Por lo tanto, aunque no es estrictamente necesario, es probablemente la más segura para incluir a ambos.

    • «Pero no todos lo hacen.» necesitamos un ejemplo concreto para convencer a mi colega.
    • Ese comentario fue hecho hace 6 años. Tendrás la necesidad de estudiar el comportamiento actual de los servidores de almacenamiento en caché para ver lo que están haciendo.
  7. 7

    Para chrome, no-cache se utiliza para recargar la página, en una re-visita, pero todavía se almacena en caché si retrocedemos en la historia (botón atrás). Para volver a cargar la página para la historia-de nuevo así, no uso de la tienda. Es decir las necesidades de must-revalidate para trabajar en todas las ocasiones.

    Tan sólo asegúrese de evitar todos los errores y malas interpretaciones, yo siempre uso

    Cache-Control: no-store, no-cache, must-revalidate
    

    si quiero asegúrese de que vuelve a cargar.

  8. 6

    Tenga en cuenta que Internet Explorer desde la versión 5 hasta 8 producirá un error al intentar descargar un archivo se sirve a través de https y el servidor de envío de Cache-Control: no-cache o Pragma: no-cache encabezados.

    Ver http://support.microsoft.com/kb/812935/en-us

    El uso de Cache-Control: no-store y Pragma: private parece ser la cosa más cercana que todavía funciona.

    • Como se sugirió en relación con el MODO de respuesta se puede establecer Cache-Control: no-store, no-cache, must-revalidate en ese orden exacto para hacer el trabajo. Sin embargo, eso no funcionó en nuestro escenario, pero lo que @bassim se sugirió anteriormente lo hizo. Gracias!
  9. 2

    Originalmente se utilizó la no-cache hace muchos años y lo hizo ejecutar a algunos problemas con el contenido obsoleto con ciertos navegadores… no recuerdo los detalles, lamentablemente.

    Hemos tenido desde que se establecieron en el uso de la no-store. Nunca miró hacia atrás o tenido un solo problema con el contenido obsoleto por cualquier navegador o intermediarios desde entonces.

    Este espacio es, sin duda dominado por la realidad de las implementaciones vs lo que pasa que se han escrito en varios RFCs. Muchos proxies, en particular, tienden a pensar que hacer un mejor trabajo de «mejorar el rendimiento» mediante la sustitución de la política, se supone que siguiendo con su propio.

    • Creo que es Firefox que prefería el no-store.
  10. 0

    De OWASP se explica esto:

    ¿Cuál es la diferencia entre la caché de directivas de control: no-cache, y no de la tienda?

    La directiva no-cache en una respuesta se indica que la respuesta no debe ser utilizado para servir a una solicitud posterior decir, la caché no debe mostrar una respuesta que tiene esta directiva establece en el encabezado, pero hay que dejar que el servidor de atender la solicitud. La directiva no-cache puede incluir nombres de campo; en cuyo caso la respuesta puede ser muestra de la caché, excepto para los nombres de campo se especifica que debe ser servida por el servidor. La no-store directiva se aplica a la totalidad del mensaje e indica que la caché no debe almacenar cualquier parte de la respuesta o la solicitud para que se le solicite.

    Estoy totalmente seguro con estas directivas?

    No. Pero en general, el uso de ambos Cache-Control: no-cache, no de la tienda y Pragma: no-cache, además Expires: 0 (o lo suficientemente retroactivo GMT fecha como la época UNIX). No el contenido html del tipo pdf, documentos de word, hojas de cálculo de excel, etc a menudo se consigue en caché incluso cuando el anterior control de la caché de las directivas se establecen (aunque esto varía según la versión y el uso adicional de must-revalidate, pre-check=0, post-check=0, max-age=0, y s-maxage=0, en la práctica, a veces puede resultar, al menos en la eliminación de archivos en el navegador de cierre en algunos casos debido al navegador y peculiaridades HTTP implementaciones). También, ‘Autocompletar’ característica permite a un navegador a la caché de lo que el usuario escribe en un campo de entrada de un formulario. Para comprobar esto, la forma de la etiqueta o de la entrada individual etiquetas deben incluir la » Autocomplete=»Off» ‘ atributo. Sin embargo, cabe señalar que este atributo no es estándar (aunque es compatible con los principales navegadores) de modo que se rompa XHTML validación.

    Fuente aquí.

Dejar respuesta

Please enter your comment!
Please enter your name here