Fluid Attacks logo
Contact Us
Young hacker smiling
Zero false positives

Expert intelligence + effective automation

Prevenir almacenamiento de páginas en caché

Necesidad

Prevenir almacenamiento de páginas en caché en ASP.NET.

Contexto

A continuación se describe las circunstancias bajo las cuales la siguiente solución tiene sentido:

  1. Se está desarrollando una aplicación WEB en ASP.NET.

  2. El sistema no debe almacenar información sensible en archivos temporales o en memoria caché.[1]

Solución

La memoria caché es una memoria auxiliar de acceso rápido, la cual se encarga de almacenar de manera temporal los datos recientes y más frecuentados del usuario. Cuando se accede por primera vez a un dato, se guarda una copia de éste dentro de la memoria caché de forma que el siguiente acceso se realice a dicha copia, reduciendo el tiempo de acceso y mejorando el rendimiento.

El caché web, es un tipo especial de caché, que tiene por objetivo reducir el ancho de banda consumido, la carga de los servidores y el retraso de las descargas [2]. Dentro de esta categoría se distinguen 3 tipos de caché web:

  • Privados: Funciona para un usuario.

  • Compartidos: Funcionan para varios usuarios.

  • Pasarela: Funcionan para un servidor.

En el ámbito del desarrollo web, es frecuente que las aplicaciones puedan aumentar el rendimiento si se almacenan en la memoria caché los datos a los que se tiene acceso de forma frecuente y cuya creación requiere un tiempo de procesamiento significativo [3]. Uno de los factores más críticos a la hora de crear aplicaciones Web, que sean escalables y de alto rendimiento es la capacidad para almacenar elementos en memoria, ya sean objetos de datos, páginas o secciones de páginas en el momento en el que son solicitados [4]. Sin embargo, para mejorar la confidencialidad, es importante limitar ciertas páginas de la aplicación de ser almacenadas en caché por el navegador web. Esto evita que un atacante con acceso a la máquina de un usuario legítimo pueda obtener información de las páginas visitadas.

  1. Para prevenir el almacenamiento de páginas en caché se modifica el Page_Load[5] de la página en cuestión. Agregando cualquiera de las siguientes líneas:

    test.py
    1
    2
    Response.Cache.SetCacheability(HttpCacheability.ServerAndNoCache);
    Response.Cache.SetCacheability(HttpCacheability.NoCache);
    
  2. Cada vez que se haga clic en un botón hacia delante o hacia atrás del explorador, o cualquier evento que genere un POSTBACK, se solicitará al servidor una nueva versión de la página.


Service status - Terms of Use