Какой лучший способ предотвратить атаку словаря? Я придумал несколько реализаций, но все они, похоже, имеют некоторые недостатки:
- Заблокировать пользователя после неудачных попыток входа в систему. Проблема: легко превратиться в атаку отказа в обслуживании, за короткое время заблокировать многих пользователей.
- Интенсивное увеличение времени ответа на неудачную попытку входа в систему по имени пользователя. Проблема: словарные атаки могут использовать один и тот же пароль, но разные имена пользователей.
- Интенсивное увеличение времени ответа на неудачную попытку входа в систему с IP-адреса. Проблема: легко обойти, спуская IP-адрес.
- Интенсивное увеличение времени ответа на неудачную попытку входа в сеанс. Проблема: легко обойтись, создав атаку словаря, которая запускает новый сеанс при каждой попытке.