¿Cuál es la mejor manera de evitar un ataque de diccionario? He pensado varias implementaciones, pero todas parecen tener algún defecto:Prevención de ataques de diccionario en una aplicación web
- Bloquea a un usuario después de X intentos fallidos de inicio de sesión. Problema: fácil de convertir en un ataque de denegación de servicio, bloqueando a muchos usuarios en un corto período de tiempo.
- Aumente de forma incremental el tiempo de respuesta por intento de inicio de sesión fallido en un nombre de usuario. Problema: los ataques de diccionario pueden usar la misma contraseña pero diferentes nombres de usuario.
- Aumente de forma incremental el tiempo de respuesta por intento fallido de inicio de sesión desde una dirección IP. Problema: fácil de evitar falsificando la dirección IP.
- Aumente de forma incremental el tiempo de respuesta por intento de inicio de sesión fallido dentro de una sesión. Problema: es fácil moverse creando un ataque de diccionario que activa una nueva sesión en cada intento.
No reinvente la rueda, observe cómo lo están haciendo otras aplicaciones web. ¿Por qué no usar un captcha? – Konerak