¿Cuál es la importancia de proteger la información sensible de los usuarios?
En el mundo digital actual, la seguridad de la información es crucial. Muchas aplicaciones gestionan datos sensibles, y cualquier filtración podría tener consecuencias graves para los usuarios y las organizaciones. Por eso, es vital que los desarrolladores comprendan qué información están exponiendo y cómo protegerla. En este sentido, la clave está en minimizar los datos enviados al cliente y evitar el almacenamiento de datos sensibles en partes vulnerables de la aplicación.
¿Qué datos no deberían enviarse nunca a través de un cliente?
Al desarrollar una aplicación, ciertos datos nunca deben ser enviados a través del cliente debido a su sensibilidad. Entre ellos se incluyen:
Fechas de nacimiento.
Información de salud.
Detalles de identidad como número de pasaporte o cédula.
Direcciones y números telefónicos.
Estos datos deben gestionarse a través de endpoints intermedios seguros que garanticen su protección.
¿Cómo afecta la longevidad de los Access Tokens la seguridad?
Los Access Tokens son pequeños archivos que permiten a los usuarios acceder a información privilegiada. Sin embargo, su longevidad puede impactar la seguridad:
Cuanto más tiempo dura un token, más se expone a un posible uso indebido.
Es recomendable que estos tokens no permanezcan almacenados en el navegador por largos periodos de tiempo.
Session Storage es una opción favorable porque borra los datos al cerrar las pestañas o ventanas del navegador, reduciendo la exposición.
Encontrar el equilibrio entre la seguridad y la experiencia del usuario es vital. Aplicaciones sensibles, como las bancarias, tienden a tener sesiones más cortas para evitar vulnerabilidades.
¿Cómo se ajusta la duración de un token JWT en NextAuth?
NextAuth es una popular librería para la autenticación en Next.js que permite configurar la duración de los tokens JWT. Vamos a ver cómo hacerlo:
// Configuración de duración de sesión en NextAuthsession:{maxAge:15*60// 15 minutos en segundos}
¿Cómo afecta la experiencia del usuario a la duración de las sesiones?
La duración de las sesiones debe ser considerada no solo desde un punto de vista de seguridad sino también de usabilidad. Por ejemplo:
Aplicaciones como Facebook prefieren sesiones más largas para facilitar la interacción continua.
En contraste, los bancos prefieren sesiones cortas para maximizar la seguridad.
La duración ideal debe ser discutida con los interesados de la aplicación para garantizar un balance adecuado entre seguridad y experiencia de usuario.
¿Cómo se podría mejorar aún más la seguridad de los tokens?
Un enfoque adicional para proteger los tokens es mediante el firmado y la encriptación. Esto añade una capa extra de seguridad, asegurando que los tokens no puedan ser manipulados o leídos por terceros. Estos aspectos serán explorados en mayor detalle en lecciones futuras.
Es fundamental que los desarrolladores sigan perfeccionando sus habilidades y aprendan a adaptar las configuraciones de seguridad según las necesidades específicas de cada aplicación. ¡El conocimiento y la práctica continua son tus mejores aliados!
Debemos ser consientes que información estamos exponiendo de nuestros usuarios
Nuestro frontend, está expuesto a ser visible a través JS, por lo cual no debemos enviar ningún dato que sea sensible
Una forma fácil de caer es abusar de la flexibilidad de los tokens JWT para almacenar más información que no necesitamos
Todos los datos sensibles deben ser enviados y ser recibidos por parte del frontend a través de un endpoint para mandarlos de formas seguras
¿Cuánto tiempo debería durar un access_token?
Mientras tiempo sea visible el access_token más estamos exponiendo para que lo puedan usar con fines maliciosos y atacantes lo puedan aprovechar
OWASP recomienda que las sesiones no deberían ser almacenadas por largos periodos de tiempo
Entre más cercano a 0 será mejor, por ello sessionStorage es un gran aliado de guardar tokens, ya que al cerrar todas las pestañas o toda la ventana la sesión desaparecerá por completo
Desventaja: Cada vez que entre a la aplicación deberá de realizar un login, cosa que impacta en la experiencia de usuario
NextAuth nos da unos valores por defecto que si bien no están mal se podrían rebajar para mejorarlos
La recomendación es tener el tiempo entre 15 a 30 minutos
Los Access Tokens como algunos que son utilizados en los bancos tienen una duración X, en la cual se termina y se comienza otra , jamás persistiendo y siempre necesitando la renovación de la misma.
Si pongo MaxAge significará que termina la sesión y cacuda el token?
es el tiempo que duraráa sesión activa. Después se cierra la sesión