Autenticación
Demostrar quién es el usuario y, después, decidir qué tiene derecho a hacer.
Autenticación
Un formulario de inicio de sesión que responde «este email no existe» en 12 milisegundos y «contraseña incorrecta» en 180 milisegundos revela gratis qué cuentas existen en tu servicio. El atacante ni siquiera necesita leer el mensaje: la diferencia de tiempo basta, porque la ruta «email desconocido» se salta el paso del hash. Con una lista de diez millones de direcciones procedentes de una filtración anterior, extrae en unas pocas horas la lista exacta de tus usuarios y luego concentra sus intentos en ellos.
Este tipo de detalle resume la autenticación: el mecanismo principal es sencillo de escribir, y son las periferias las que abren las brechas. Una cookie sin el atributo HttpOnly, una comprobación de rol aplicada sobre el cuerpo de la petición en lugar de sobre el token, un cierre de sesión que no invalida nada, una comparación de secretos con ===. Esta lección trata el camino nominal con rapidez para dedicar lo esencial a esas periferias, porque es ahí donde se producen los incidentes.
Contraseñas
Una contraseña no se cifra, se hashea: la operación debe ser irreversible. Y no con SHA-256: esas funciones están diseñadas para ser rápidas, que es exactamente lo contrario de lo que queremos. Utiliza una función lenta y parametrizable, preferiblemente argon2id y, en su defecto, bcrypt.
Comentarios
Los comentarios funcionan con GitHub Discussions
Inicia sesión con GitHub para participar en la discusión