Sí, la cuenta debe estar bloqueada.
El motivo es que el inicio de sesión correcto podría ser del usuario real, y los inicios de sesión fallidos podrían ser de un atacante. El hecho de que el usuario real haya iniciado sesión no debe reiniciar el contador del atacante. Por supuesto, puede realizar un seguimiento de las sesiones y solo bloquear al usuario si está en una sesión diferente a la del usuario real, sin embargo, aquí existe un mayor riesgo de errores de implementación, lo que significa que podría introducir algo inadvertidamente que permita a un atacante evitar el bloqueo. Con seguridad, a menudo es mejor mantener las cosas lo más simples posible.
También debe limitar los intentos repetidos de límite desde la misma dirección IP que ayudará a protegerse contra un ataque horizontal contra diferentes cuentas de usuario.
Lo anterior es un comentario sobre su propuesta actual, sin embargo, también me gustaría una respuesta cada vez más retrasada en lugar de bloquearla.
por ejemplo
Login Attempt Artificial Delay
1 0
2 1 second
3 2 seconds
4 4 seconds
5 8 seconds
De esa manera, el usuario real podrá iniciar sesión durante una fuerza bruta en su cuenta y el atacante no podrá provocar una Denegación de Servicio en el usuario legítimo. Para retrasos más prolongados, podría mostrar algo al usuario para mostrar que su inicio de sesión está en curso, por lo que no estaría tentado a hacer clic nuevamente. Por supuesto, no desea que la demora máxima sea mucho más larga que varios segundos, sin embargo, agregar una demora artificial en los hilos retrasará a un atacante. La diferencia entre ralentizar el inicio de sesión y mostrar un mensaje de bloqueo de cuenta es que el usuario real no tendrá que seguir enviando sus datos de inicio de sesión; solo debe ser paciente mientras el inicio de sesión progresa.