Gestión de Sesiones en Aplicaciones Web: Seguridad y Mecanismos

Clasificado en Informática

Escrito el en español con un tamaño de 4,08 KB

Gestión de Sesiones en Aplicaciones Web

Seguridad de las Cookies

Las cookies, simples ficheros de texto almacenados por el navegador, son elementos pasivos. No pueden ejecutar acciones, infectar el ordenador con virus ni extraer datos del disco duro. Almacenan únicamente información confidencial previamente enviada al servidor.

Sin embargo, presentan ciertas vulnerabilidades:

  • Cualquier usuario con acceso a ellas (por ejemplo, a través de la red local, nunca a través de Internet) puede extraer sus datos.
  • Los servidores pueden utilizarlas para rastrear las páginas visitadas por un usuario y crear un perfil.

Sesiones en HTTP

HTTP es un protocolo sin estado. Tras la respuesta, el servidor cierra la conexión (HTTP/1.0). Los servidores HTTP responden a cada solicitud del cliente sin relacionarla con solicitudes previas o posteriores. Independientemente de la versión HTTP, no existe el concepto de sesión.

Las sesiones son cruciales en las aplicaciones web. Permiten:

  • Definir varios estados en la aplicación.
  • Contextualizar las solicitudes y respuestas.
  • Intercambiar información sobre el estado de la aplicación (datos asociados a la sesión) entre clientes y servidores.

El servidor almacena la siguiente información para el seguimiento de la sesión:

  • Identificador de la sesión
  • Identificador del usuario en sesión
  • Tiempo de expiración de la sesión
  • Dirección del cliente
  • Variables asociadas a la sesión
  • Otras variables temporales

Debido a la naturaleza de HTTP, es imposible asegurar la existencia o ausencia de una sesión. Se debe implementar un proceso que revise periódicamente los tiempos de expiración y elimine los datos de sesiones expiradas.

Mecanismos de Control de Sesión

Se deben establecer mecanismos externos a HTTP para controlar la sesión:

  • Cookies
  • Direcciones URL modificadas (inflando las URL)
  • Controles HTML ocultos (e.g., <INPUT type="hidden" name="session" value="1234">)
  • Dirección IP del cliente

El servidor puede almacenar la información de la sesión en:

  • Memoria RAM
  • Archivos
  • Base de datos

Los tres primeros son los más utilizados. Pocas aplicaciones web usan un solo tipo; generalmente se combinan para aprovechar las ventajas de cada uno y minimizar sus desventajas.

Ventajas y Desventajas de los Mecanismos

  • Dirección IP: No distingue usuarios, solo máquinas. Puede estar oculta si se utiliza un proxy.
  • Cookies: Pueden ser leídas por terceros. Se deben usar exclusivamente cookies de sesión. Algunos usuarios las desactivan.
  • Controles HTML ocultos y URL modificadas: Su gestión se complica al aumentar la información persistente.
  • URL modificadas: Solo funcionan si se accede a las páginas a través de enlaces, no introduciendo la URL directamente.

Identificadores de Sesión

Para que la aplicación web identifique cada petición HTTP dentro de una sesión, las peticiones deben contener un identificador a través de:

  • Parámetros en la URL (método GET)
  • Parámetros en el cuerpo del mensaje (método POST)
  • Cookie

Esto evita, entre otras cosas, que el usuario deba autenticarse en cada petición.

Los identificadores de sesión deben ser únicos y difíciles de adivinar para prevenir accesos fraudulentos. Se requiere un mecanismo que genere identificadores aleatorios con un gran periodo de repetición.

Autenticación del Usuario

La web funciona de forma predeterminada de manera anónima. Solo se conoce con certeza la dirección IP del cliente (si no hay un proxy).

Por motivos de personalización o restricción, las aplicaciones web a veces necesitan conocer y verificar la identidad del usuario mediante un nombre de usuario y una contraseña. Este proceso se denomina autenticación.

Entradas relacionadas: