Tengo una aplicación basada en web donde los usuarios pueden iniciar sesión con nombre de usuario y contraseña.
Acabo de implementar una nueva función de bloqueo de cuenta y me preguntaba si tiene sentido o si la he arruinado por completo.
Los primeros 3 intentos de inicio de sesión no válidos solo muestran mi estándar:
Incorrect user name or password
pero almaceno cada intento fallido. Para cualquier intento posterior, bloqueo la cuenta durante más y más segundos y se la muestro al usuario:
The logon failed because your account is blocked due to a previous unsuccessful attempt.
Please wait a 18 seconds and try again.
Si el recuento de inicio de sesión fallido es mayor a 10, bloqueo la cuenta durante 120 segundos, es el tiempo de espera máximo.
Si el usuario adecuado finalmente recuerda la contraseña correcta, tiene que esperar 2 minutos, eso es No está mal.
Pero un pirata informático solo puede probar una nueva contraseña cada 2 minutos, lo que pronto se vuelve aburrido.
Después de un inicio de sesión exitoso, mi cuenta de fallas se restablece a cero.
Todos los números aquí son configurables.
Problemas:
- Después de algunos intentos, revelo que un nombre de usuario es válido, por mostrando un mensaje diferente, pero también podría apagarlo y siempre solo muestra el mensaje estándar.
- Si el usuario real intenta iniciar sesión mientras otra persona está intentando entrar en su cuenta, ella no podrá iniciar sesión, por lo que esta es una negación de servicio. Pero dos minutos después de que el atacante se da por vencido, ella puede iniciar sesión sin tener que llamar a la mesa de ayuda.