Sí, tienes razón. En cualquier lugar de su sitio donde pueda confirmarse que existe un nombre de usuario o no, puede llevar a username enumeration .
Sin embargo, este problema se puede resolver si es importante para su sistema. En algunos sistemas, la enumeración del nombre de usuario no se puede evitar ya que es inherente a la naturaleza de la aplicación. Un ejemplo es un servicio de correo web: aquí las direcciones de correo electrónico se consideran potencialmente públicas. Impedir que los usuarios conozcan otros nombres de usuario es difícil sin requerir que los usuarios inicien sesión con un identificador diferente al de su dirección de correo electrónico alojada y pueden generar confusión y dificultad para recuperar las credenciales perdidas.
Sin embargo, con la mayoría de los otros sistemas, esto puede solucionarse teniendo la dirección de correo electrónico del usuario como su nombre de usuario de inicio de sesión. Resolvería el problema teniendo la contraseña olvidada y el formulario de registro como efectivamente la misma página. Para registrarse, este sería un formulario de varios pasos y el primer paso simplemente solicita el nombre de usuario (correo electrónico) que el usuario desea usar con su sistema. Para la recuperación de la cuenta, esta sería la misma forma pero el título diría algo similar a Please enter your email address to generate a password recovery email
.
En ambos casos, el formulario enviará al usuario un correo electrónico. Si ya están registrados, el contenido de este correo electrónico contiene un enlace para restablecer la contraseña. Si no están registrados, el contenido de este correo electrónico contiene un enlace a la siguiente etapa del proceso de registro. Esto evitará que los nombres de usuario en su sistema sean enumerados, por lo que un atacante no sabrá a qué cuentas dirigirse.
Por supuesto, esto implica que está dispuesto a permitir que las contraseñas se restauren por correo electrónico, lo que puede ser inaceptable para algunas aplicaciones, como las aplicaciones bancarias. Sin embargo, como este tipo de cuentas generalmente tienen controles de seguridad adicionales, generalmente tienen nombres de usuario asignados por el banco en lugar de permitir que las personas elijan sus propios.