La session fixation se evita…
Opciones
- Usando solo IDs de sesión largos para todos los usuarios
- Regenerando el ID de sesión tras cada login (Opción correcta)
- Usando peticiones GET solo en el endpoint de login
- Desactivando las cookies en el navegador del usuario
Respuesta
Regenerando el ID de sesión tras el login (y tras cambios de privilegios)
Por qué
El atacante primero obtiene un ID de sesión válido pero anónimo y engaña a la víctima para que lo use (por ejemplo con un enlace preparado). La víctima inicia sesión, y ese mismo ID pertenece ahora a un usuario autenticado, y el atacante ya lo conoce.
Si el servidor emite un ID de sesión NUEVO al iniciar sesión, el ID plantado por el atacante deja de servir.
Recuerda
ID de sesión nuevo en cada login.