Debe decirle al usuario que la cuenta ha sido bloqueada; de lo contrario, no veo cómo manejaría esa situación sin mostrar un mensaje directamente en la aplicación web. Por supuesto, lo más probable es que le envíe un correo electrónico con algunos pasos para desbloquear su cuenta, pero aún así, debe notificar al usuario dentro de la aplicación que le ha enviado un correo electrónico.
Ahora, considerando su principal preocupación, que es que un atacante podría crear una lista de los nombres de usuario registrados en su sitio web, existe una solución para mitigar este problema.
Seguimiento de intentos por cookies / campos ocultos / entradas de base de datos
Cuando un usuario intenta iniciar sesión con un nombre de usuario inexistente, puede hacer un seguimiento de su intento fallido almacenando la información en una cookie, un campo oculto o incluso directamente en su base de datos. De esa manera, si bloquea una cuenta real después de 3 intentos fallidos, puede hacer un seguimiento de los intentos fallidos (que no son intentos fallidos reales porque el nombre de usuario no existe realmente) y mostrar el mensaje de bloqueo exactamente como en una cuenta real. situación.
La forma más transparente y eficiente de implementar esto sería insertando los intentos fallidos en una base de datos, porque el usuario siempre puede modificar los campos ocultos y las cookies, lo que eventualmente podría ayudarlo a descubrir su pequeño truco. Además, puede ser difícil hacer un seguimiento de los intentos de nombre de usuario inexistentes si el usuario intenta usar varios nombres de usuario mediante cookies y campos ocultos. Sin embargo, en la base de datos, simplemente puede registrar la IP del usuario, el nombre de usuario inexistente y, finalmente, la cantidad de intentos fallidos que indicarán si debe mostrar el mensaje de bloqueo falso o no a su aplicación web.
También es posible que no desee filtrar los intentos solo por IP, en caso de que el atacante use un proxy y pruebe el mismo nombre de usuario y los avisos que le tomó de nuevo, por ejemplo, 3 intentos de bloquear la cuenta. Una vez más, podría descubrir tu truco de esta manera.
Pero, ¿realmente necesitas tal protección?
Antes de implementar una protección de este tipo, tómese un tiempo para pensar si es realmente necesario para su aplicación web. Una situación en la que esto sería completamente inútil es un sitio web que tiene un foro donde los usuarios inician sesión con el mismo nombre de usuario que se muestra en dicho foro. Obviamente, un usuario malintencionado podría construir una lista de los usuarios registrados con bastante facilidad simplemente navegando por las páginas.
Iniciar sesión usando la dirección de correo electrónico
¿Ha pensado en usar la dirección de correo electrónico del usuario para conectarse a su aplicación web, si es posible? Es mucho menos probable que alguien intente construir una lista de direcciones de correo electrónico ya que hay muchas más posibilidades que los nombres de usuario (los usuarios tienden a elegir nombres de usuario típicos y simples como "Simon" cuando está disponible. Sin embargo, la búsqueda de Simon's e La dirección de correo electrónico es más difícil, ya que hay muchos servicios de correo electrónico posibles, asumiendo que eligió el nombre de usuario "Simon" (p. ej. [email protected], [email protected], [email protected], etc.)) .