Saltar al contenido principal

Seguridad de Cookies

Sistema de cookies seguras con HttpOnly, SameSite y dominio restringido.

Problema Identificado

Síntoma: Al abrir un navegador privado/incógnito, el usuario aparecía logueado automáticamente.

Causa Raíz: Las cookies HttpOnly se estaban configurando con domain=None, lo que las hacía aplicables a todos los dominios en lugar de estar restringidas al dominio específico.

Configuración Corregida

Cookies de Login

response.set_cookie(
key="refresh_token",
value=refresh_token,
httponly=True,
secure=True, # HTTPS en producción
samesite="strict", # Máximo aislamiento
max_age=settings.JWT_REFRESH_EXPIRE_DAYS * 24 * 60 * 60,
path="/",
domain="localhost" # Restringido al dominio
)

Sistema de session_id

Cada sesión tiene un session_id único que se valida en todas las peticiones para prevenir fuga de sesiones entre ventanas privadas.

Implicaciones de Seguridad

Antes (Inseguro)

  • ❌ Cookies aplicables a todos los dominios
  • ❌ Persistencia entre sesiones de navegador privado
  • ❌ Posible fuga de sesiones entre aplicaciones

Después (Seguro)

  • ✅ Cookies restringidas al dominio específico
  • ✅ No persistencia entre sesiones de navegador privado
  • ✅ Aislamiento correcto de sesiones
  • ✅ Sistema de session_id único por ventana

Configuración por Entorno

Desarrollo

  • domain="localhost"
  • secure=False
  • samesite="lax"

Producción

  • domain=".tu-dominio.com" (o sin dominio para restricción estricta)
  • secure=True (requiere HTTPS)
  • samesite="strict"

Más Información