🏖️ ¿Dónde guardar una sesión?
Recursos
Session Management - OWASP Cheat Sheet Series
Where should you store tokens?
Apuntes
Manejo seguro de sesiones
- Se trata de los mecanismos que implementamos para transmitir de forma segura entre el cliente / servidor el ID de la sesión que lo distingue
- Para considerarlos seguros depende mucho de:
- Donde se guardan
- Nombres asignados
En general
- El session ID no debe ser obvio ni estar expuesto en la URL
- Nunca deberíamos ver en nuestra aplicación que la URL contenga la sesión del usuario
- Haría muy fácil de referenciarla e identificarla
- Existe tecnologías como PHP que viene con el nombre por defecto PHP Session haciendo que se identifique fácilmente la perfilación
- Nos convierte en un objetivo de bots y hacernos vulnerables a ataques comunes para PHP
- Se recomienda que el nombre sea genérico y no de información como
id = 1323298
- Nunca deberíamos ver en nuestra aplicación que la URL contenga la sesión del usuario
- Debe tener política de vencimiento automática y manual
- Por este motivo, las cookies se volvieron populares con las sesiones, ya que permiten configurar un vencimiento manipulable en el servidor y en el cliente
- Este vencimiento indica al navegador y servidor cuando debe descartar o renovar la sesión ⇒ Manejo automático
- El usuario debe tener la capacidad de revocar la sesión, a través de un botón de logout ⇒ Manejo de sesión manual
¿Dónde guardar una sesión?
Cookie
- Ha sido muy popular
- Utilizado por muchos años
- La opción preferida para comunicar y mantener el estado en peticiones HTTP
- Existen algunos atributos para mejorar la seguridad
Secure
- Solo se envía en conexiones encriptadas (Unicamente se utilizará en HTTPS)
HttpOnly
- Prohíbe su uso en script del navegador
- Mitiga el riesgo que los atacantes se hagan de esta información
SameSite
- Es un atributo relativamente nuevo
- Controla cuando se envía la cookie.
Strict
Podriamos tener un same site que nunca permita que la cookie nunca se envíe a otros sitiosNone
la cookie se encluye en cualquier enlace para tener acceso a las cookies de los mismosLax
es el estado por defecto, brinda una gran flexibilidad entre estricto y nada
Web Storage
- LocalStorage
- Persistente a través de sesiones en páginas del mismo origen (Dominio donde se encuentre).
- SessionStorage
- Similar, pero su duración termina cuando se cierre la pestaña / ventana
- Cuando se cierre la ventana se borra toda la información
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?