Tengo problemas para entender completamente cómo prevenir los intentos de inicio de sesión de inicio rápido. Mis preguntas provienen básicamente de la La guía definitiva para la autenticación de sitios web basada en formularios .
La recomendación final es establecer una regulación de inicio de sesión, establecer un retraso de tiempo entre intentos fallidos . Algo como:
- 1 intento fallido = 5 segundos de retraso
- 2 intentos fallidos = 15 segundos de retraso
- 3+ intentos fallidos = 45 segundos de retraso
Algunas preguntas que vienen fácilmente a la mente son:
-
Si estamos tratando de proteger nuestro sistema de ataques de fuerza bruta o diccionario, ¿cómo es que los retrasos son tan restrictivos? Uno de los ejemplos muestra un aumento de 2 ** 2 por intento no válido. ¿Un poco menor de tiempo no desalentaría a un atacante automatizado?
-
En este esquema de protección, ¿cuál sería el cliente? ¿Cómo se identificaría? ¿Estamos hablando de una cuenta de IP + o solo de la cuenta? Si estamos hablando solo de una cuenta sin tener en cuenta la IP, ¿no es probable que eso moleste a los usuarios legítimos que intentan acceder a su cuenta?
-
Nunca he visto ningún material de lectura hablando de seres humanos que intentan acceder a las cuentas. Entiendo que este caso sería altamente improbable (más si asumiéramos las políticas de contraseña) pero, ¿qué pasa si un atacante ha creado una lista de contraseñas probables a través de algún método (ingeniería social)? ¿No debería estar protegido eso también? Porque en ese caso, y siendo el cliente identificado por la cuenta de IP +, ser muy restrictivo tendría mucho sentido, tratar de bloquear la IP que está usando.
¿De qué manera los inicios de sesión fallidos hacen una diferencia real entre la simple aceleración? . Con una limitación simple, me refiero a una aceleración en el punto final de "inicio de sesión" que controla el número de veces que intenta iniciar sesión, pero sin tener en cuenta si estos intentos tuvieron éxito o no.
Suponiendo que esta definición anterior es lo que quise decir con un simple acelerador, supongamos que estoy controlando el número de veces que puede llamar al punto final de inicio de sesión para una cuenta dado un lapso de tiempo:
- Para cada cuenta, se puede llamar al punto final de inicio de sesión 3 veces por minuto.
¿Sería eso suficiente para detener un ataque de fuerza bruta? ¿Agregar este retraso mencionado anteriormente cuando el intento no es válido da mejores resultados?
Estaría muy agradecido si alguien pudiera arrojar algo de luz aquí.