No tienes acceso a esta clase

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

Otras estrategias avanzadas de seguridad

10/13
Recursos

¿Cuáles son las mejores prácticas para el manejo de sesiones?

El manejo de sesiones es un aspecto crítico en la seguridad de las aplicaciones web, ya que involucra la protección de información sensible y la prevención de accesos no autorizados. En este contexto, es esencial seguir las recomendaciones de OWASP y adoptar estrategias seguras y probadas para mitigar los riesgos, particularmente cuando se trata de la autenticación y el manejo de sesiones.

¿Qué estrategias no se deben implementar?

Aunque hay muchas estrategias efectivas, también existen prácticas que deben evitarse a toda costa. Entre ellas destacan:

  • Evitar el uso de Local Storage: Un error común es almacenar JWT en "local storage". Esto es riesgoso porque, incluso al cerrar las pestañas del navegador, el token sigue accesible. Local storage no proporciona un entorno seguro para almacenar información sensible y debe evitarse.

  • No desencriptar en el cliente: Desencriptar información en el cliente es peligroso. Esto implica que el cliente debe almacenar el secreto de desencriptación, exponiendo información sensible a cualquiera con acceso al cliente. Se recomienda manejar la desencriptación en un servidor o mediante endpoints seguros.

¿Qué alternativas seguras existen para manejar tokens y sesiones?

En lugar de las prácticas mencionadas, se pueden considerar alternativas más seguras:

  • Uso de Oauth y servicios externos: Incorporar servicios como Oauth permite gestionar sesiones de manera segura sin almacenar claves o secretos en la propia aplicación, incluso en páginas estáticas. Estos servicios ofrecen endpoints seguros para manejar autenticación y sesiones.

  • Implementación de Web Workers: Los Web Workers pueden actuar como intermediarios entre la aplicación y el servidor, interceptando y manipulando solicitudes HTTP. Aunque no son completamente seguros y requieren mitigación de vulnerabilidades XSS, pueden ofrecer una capa adicional de seguridad. Se recomienda el uso de cookies CSRF para aumentar la protección.

¿Cómo pueden combinarse diferentes estrategias para mejorar la seguridad de las sesiones?

Una de las prácticas sugeridas es combinar diferentes técnicas para construir una estrategia robusta. Por ejemplo:

  • Uso de cookies duales: Una estrategia interesante es utilizar dos cookies: una que contiene información básica de la sesión, accesible al cliente, y otra encriptada, inaccesible para el cliente. Al hacer una solicitud HTTP, ambas cookies se envían al servidor para su validación, asegurando que no han sido alteradas.

Este enfoque, utilizado por empresas como Lite Rail, ofrece una capa de seguridad adicional al manejar información sensible. Vale la pena explorar más en los enlaces proporcionados para adaptar y aplicar estos métodos de acuerdo a las necesidades específicas de cada aplicación.

Continuar explorando y entendiendo las mejores prácticas en la seguridad de sesiones no solo protegerá tus aplicaciones, sino que también te permitirá estar un paso adelante en el cambiante panorama de ciberseguridad. ¡Sigue aprendiendo y fortaleciendo tus habilidades en desarrollo seguro!

Aportes 4

Preguntas 0

Ordenar por:

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

Acabo de leerme el artículo completo de las dos cookies. Está genial.

Peter Locke propone llevar a cabo la autenticación diviendo el JWT en dos cookies:

  • header.payload. Con atributo secure y duración de 30 minutos. Pueden leerse por el frontend.
  • signature. Con atributo secure y HttpOnly. No disponible para el frontend y que se pierde una vez se cierra el browser.

🎰 Otras estrategias avanzadas de seguridad

Recursos

Getting Token Authentication Right in a Stateless Single Page Application

Session Management - OWASP Cheat Sheet Series

Apuntes

“Nunca uses localStorage para guardar secretos”

  • Es común el fallo de guardar los JWT en los localStorage, esta es la peor forma de manipular la sesión, ya que siempre se guardará en el navegador

“Nunca desencriptar [tokens] en el cliente, usar siempre endpoints”

  • Si desencriptamos tokens en el cliente significa que debe guardar de alguna forma el secreto con el cual va a desencriptar dicha información y en el cliente no hay forma de proteger de buena manera dicho secreto
  • Por este motivo, la desencriptación se tienen que hacer ante un endpoint
  • En caso de ser aplicaciones estáticas, no significa que no podamos utilizar servicios de terceros encargados de esa tarea
    • Oauth es un servicio que funciona muy bien en páginas estáticas, ofreciéndonos endpoints con los cuales desde el cliente se pueden acceder a la sesión del cliente sin necesidad de guardar secretos en nuestra aplicación

Guardar Tokens

  • Web worker
    • Los web workers son un tipo de capa que existen entre la aplicación y el servidor, se situan exactamente en el medio.
    • El JS no tiene acceso al mismo
    • Interceptando los request, agregan el token guardado y mandarlo al servidor
    • En caso de que el servidor responda con datos sensibles, el web worker puede quitar la información sensible y mandarlo al JavaScript
    • No tiene soporte en algunos navegadores como Internet Explorer
    • Al ser utilizado dentro JavaScript puede estar expuesto a vulnerabilidades XSS ⇒ Por lo cual se deben usar cookies CSRF para mitigar dichos riesgos
  • Combinación de diferentes estrategias
  • Estrategia de dos cookies
Excelente aporte!

Estrategia 2 cookies