No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

¿Dónde guardar una sesión?

8/13
Recursos

Aportes 2

Preguntas 2

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

🏖️ ¿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
  • 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 sitios
      • None la cookie se encluye en cualquier enlace para tener acceso a las cookies de los mismos
      • Lax 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

El sesión ID no debe ser obvio ni exponerse en la URL.

Cookie

  • Secure: Solo se envía en conexiones encriptadas (Unicamente se utilizará en HTTPS).
  • Http only: Prohíbe su uso en script del navegador con lo que mitiga el riesgo que los atacantes se hagan de esta información.
  • Same site: Controla cuando se envía la cookie y tiene varias implementaciones (strict, none y lax).

Web storage

  • Localstorage: Persiste la sesión en páginas del mismo origen, no hay fecha de expiración de los datos.
  • SessionStorage: Persiste la sesión en paginas del mismo origen, los datos se eliminan cuando se cierra toas las pestañas del navegador.