
Dado que las respuestas comunes de fallas en el nombre de usuario y/o contraseña al iniciar sesión SIEMPRE se devuelven "Su nombre de usuario o contraseña son incorrectos" debido a una mayor seguridad, entonces ¿por qué los sistemas no almacenarían la combinación de nombre de usuario Y contraseña en hash? Nada me molesta más que no saber qué correo electrónico estoy usando y tener que probar con otros, especialmente cuando puede haber límites MÁXIMOS en la longitud de las contraseñas, etc.
Respuesta1
Por la misma razón no mantenemos nuestros nombres reales en secreto: se utilizan para identificarnos y, por diseño, se pueden compartir.
La intención es reducir la información que un atacante potencial puede tener al no compartir si está operando con un nombre de usuario existente. Dicho esto, los sistemas que utilizan mensajes de estilo "nombre de usuario o contraseña incorrectos" suelen ser tan vulnerables como los sistemas que no los tienen. Los formularios de registro (y, a veces, los formularios de restablecimiento de contraseña) le indicarán si existe una cuenta o no, por lo que es trivial identificar si existe un nombre de usuario. Como tal, este enfoque puede resultar más frustrante para los usuarios legítimos que un obstáculo para los atacantes.
Además, imagina intentar encontrar un amigo en una plataforma si su nombre de usuario en texto plano no está almacenado: tendrías que obtener el nombre de usuario correcto, carácter por carácter. Un sistema así sería terriblemente impracticable. Tener un nombre de usuario secreto sería similar a tener una segunda contraseña, y existen formas mucho mejores de proteger las cuentas que esa.