Como HTTP no tiene estado (no recuerda peticiones previas), las aplicaciones usan cookies, sesiones y tokens para "recordar" al usuario entre peticiones. Son las credenciales que mantienen tu sesión iniciada, y por eso son un objetivo frecuente de ataque.
Cookies
Pequeños datos que el servidor entrega al navegador (
Set-Cookie) y que este reenvía en cada petición al mismo sitio (Cookie). Sirven para sesiones, preferencias y seguimiento.
Sesiones (estado en el servidor):
- El usuario inicia sesión.
- El servidor crea una sesión y genera un ID de sesión único.
- Ese ID viaja al navegador en una cookie.
- En cada petición, la cookie identifica al usuario; el estado vive en el servidor.
Tokens (estado en el cliente):
Un token (ej. JWT) es un dato autocontenido y firmado que incluye la información del usuario. El cliente lo guarda y lo envía en cada petición (normalmente en la cabecera
Authorization). El servidor solo verifica la firma, sin almacenar estado.
| Sesión (cookie) | Token (JWT) | |
|---|---|---|
| Dónde vive el estado | En el servidor | En el cliente (dentro del token) |
| El servidor recuerda | Sí | No (solo verifica firma) |
| Uso típico | Webs tradicionales | APIs, apps modernas / SPA |
Por qué importa en seguridad:
- Robo de sesión/token → suplantar al usuario sin conocer su contraseña (es robar la "llave ya hecha").
- Ataques relacionados: XSS (robar cookies/tokens), CSRF (abusar de la sesión), session hijacking/fixation.
Protecciones clave de las cookies:
| Atributo | Protege |
|---|---|
| HttpOnly | JavaScript no puede leer la cookie (mitiga XSS) |
| Secure | Solo se envía por HTTPS |
| SameSite | Limita el envío entre sitios (mitiga CSRF) |
| Expiración | Reduce la ventana de robo |
Cookies, sesiones y tokens son la base de la autenticación web (tema 5) y blanco directo de XSS y CSRF (pilar Hacking Web). Su protección aplica el cifrado en tránsito (HTTPS).