SEGURIDAD

Sesión

Estado que recuerda quién eres entre peticiones. Es lo que hace que no tengas que identificarte en cada página.

Nivel · intermedio4 min de lecturaActualizado 28 ago 2026
También conocido como: Sesión de usuario, Session

Definición

Una sesión es el estado que permite a un sistema recordar quién eres entre una petición y la siguiente.

Sin ella, cada página exigiría volver a identificarse, porque HTTP no recuerda nada por sí mismo. Ver cookie, que es el mecanismo habitual para transportarla.

Dos formas de hacerlo

Sesión en servidor. El servidor guarda los datos del usuario y le entrega un identificador aleatorio. El navegador devuelve ese identificador en cada petición y el servidor busca a quién corresponde.

Token firmado (JWT). El servidor entrega un token que contiene la información y va firmado. El servidor no guarda nada: verifica la firma y confía en el contenido.

Sesión en servidorToken firmado
Dónde vive el estadoEn el servidorEn el cliente
Cerrar sesión al instanteSí, se borra y yaDifícil: el token sigue siendo válido
Escalar a varios servidoresNecesita almacén compartidoTrivial
Tamaño en cada peticiónUn identificadorEl token entero
Revocar accesoInmediatoRequiere lista negra o caducidad corta

La elección se reduce casi siempre a una pregunta: ¿necesitas poder expulsar a alguien ahora mismo? Si la respuesta es sí —un panel de administración, un sistema con datos sensibles— la sesión en servidor es más honesta. Los tokens son cómodos para APIs y para escalar, y su punto débil real es la revocación.

Cómo se roba una sesión

Conviene conocer los tres vectores, porque las defensas salen de ahí:

Robo de la cookie. Con un XSS, el JavaScript del atacante lee la cookie y suplanta al usuario. Se evita con HttpOnly.

Interceptación en tránsito. Si la conexión no va por HTTPS, cualquiera en la misma red puede leer el identificador.

Fijación de sesión. El atacante consigue que la víctima use un identificador que él conoce. Se evita regenerando el identificador al iniciar sesión — es la defensa más olvidada y la más barata.

Ejemplo práctico

En un panel de administración, la gestión de sesión decide más de la seguridad real que la fortaleza de la contraseña.

Lo que aprendí montando accesos: las cuatro medidas que de verdad cambian algo son sencillas y suelen faltar todas a la vez:

Regenerar el identificador al hacer login. Dos líneas, y cierra la fijación de sesión.

Caducidad por inactividad, no solo por tiempo absoluto. Un panel abierto en un ordenador compartido durante horas es un riesgo real.

Cookie con HttpOnly y Secure, siempre.

Poder cerrar todas las sesiones de un usuario desde el sistema. El día que alguien deja la empresa o pierde el portátil, esa función es la que se necesita — y es justo la que nadie construye hasta que hace falta.

El segundo aprendizaje, sobre el «recordarme»: es la función que más cómoda resulta y más riesgo introduce, porque alarga la vida de la sesión durante semanas. La forma sensata de plantearlo no es todo o nada, sino por niveles: recordar para navegar sí, y volver a pedir contraseña antes de una acción sensible — cambiar datos bancarios, dar de alta a un usuario, exportar la base de clientes.

Ese patrón —sesión larga para lo cotidiano, reautenticación para lo delicado— da comodidad sin regalar el castillo.

Y una advertencia sobre guardar cosas en el navegador: localStorage es accesible desde JavaScript, así que no es sitio para un token de sesión. Un XSS lo lee sin esfuerzo. Sirve para preferencias de interfaz, no para credenciales.

Errores comunes

  • No regenerar el identificador al iniciar sesión.
  • Cookie sin HttpOnly.
  • Guardar el token en localStorage.
  • Sesiones que no caducan nunca.
  • No poder revocar el acceso de un usuario concreto.
  • Meter datos sensibles en el token. Un JWT va firmado, pero no cifrado: cualquiera puede leer su contenido.
  • Usar identificadores predecibles. Deben ser aleatorios y largos.

Cuándo revisarlo

Al construir cualquier acceso con usuarios, y siempre antes de exponer un panel a internet.

La pregunta que mide si está bien resuelto: si a un usuario le roban el portátil ahora mismo, ¿puedo cerrar su acceso en un minuto? Si la respuesta es no, ese es el primer arreglo.

Referencias

Tagsprogramacionseguridadwebbackend
Escrito por
Antonio Echeverría

Dirijo IMDICA, una empresa de suministro industrial, desde 2007. Escribo estas definiciones desde el lado de quien las usa para decidir, no desde el de quien las estudia.

Si necesitas que alguien construya esto de verdad y no solo lo explique, eso es lo que hago en AE Works.