You don't have access to this class

Keep learning! Join and start boosting your career

Aprovecha el precio especial y haz tu profesión a prueba de IA

Antes: $249

Currency
$209
Suscríbete

Termina en:

1 Días
1 Hrs
18 Min
12 Seg

¿Dónde guardar una sesión?

8/13
Resources

What is secure session management?

Security and efficiency are fundamental pillars when managing sessions in web applications. Secure session management involves the mechanisms by which we reliably transmit the session ID between the user and our web application. Here we explore strategies and best practices to ensure that this transmission is indeed secure and effective.

How to choose the Session ID name?

The session ID name plays a key role in security:

  • Avoid obvious names: the name should never be in the URL. A negative example would be to have the session ID exposed in the web address of the application.
  • Do not use default names: Applications such as PHP sometimes use default names such as "PHP Session", which are easy to detect and can be campaigned by bots to exploit known vulnerabilities.
  • Use generic names: We recommend keeping generic names that do not reveal information about the server or the technology behind it, such as "ID=1234".

How to implement session expiration policies?

Implementing proper expiration policies is crucial for session management:

  1. Automatic via cookies: Cookies are popular for their ability to set expirations and be managed on both the client and server.
  2. Manual with logout option: The user should be allowed to revoke the session through a "logout" button.

What are the options for storing sessions securely?

There are several ways to store sessions, each with its advantages and disadvantages:

Cookies

Cookies are the preferred option and offer security enhancing attributes:

  • Secure: Allows cookies to be sent only on HTTPS connections.
  • HTTP Only: Prevents cookies from being read through the frontend, preventing unauthorized access to sensitive data.
  • SameSite: Controls when the cookie is sent:
    • Strict: Utopian for sensitive information, preventing cookies from being sent on external links.
    • None: Not recommended, as it allows extensive access to cookies.
    • Lax: Provides a balance between security and flexibility.

Web Storage

Web Storage divides its options into:

  • Local Storage: Persists across sessions and pages of the same origin.
  • Session Storage: Deleted when the tab is closed, providing more temporary security.

Where to store JWT tokens?

Choosing storage for JWT tokens is critical for security:

  • Implication considerations: Thought needs to be given to where and how to store JWT tokens since their security is critical.
  • Suggested reading: Further study on the advantages and disadvantages of each option is recommended to make informed decisions.

Final thoughts.

During the study and implementation of these practices, always keep in mind to assess the specific risks according to the application context is essential. Secure session management not only protects your web application, but also builds user confidence in a secure and trustworthy digital environment.

Contributions 2

Questions 2

Sort by:

Want to see more contributions, questions and answers from the community?

🏖️ ¿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.