Brute force — подбор секрета множеством попыток. Для онлайн-входа применяют согласованные лимиты и задержки, MFA, контроль аномалий и безопасное восстановление доступа. Ограничение только по IP недостаточно, а жесткая блокировка аккаунта может стать способом отказа в обслуживании. Для офлайн-перебора украденных хешей нужна отдельная защита хранения паролей.
Что такое brute force и как защитить вход от перебора?
Защита аутентификации от перебора: лимиты, MFA, наблюдение за распределенными попытками и защита от блокировки чужих аккаунтов.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Brute force — перебор вариантов пароля или другого секрета. Следует различать онлайн-попытки через форму входа и офлайн-подбор по уже полученному хешу: серверный rate limit помогает только в первом случае.
Для онлайн-аутентификации используют несколько мер:
- лимиты и возрастающие задержки с учетом аккаунта и источников запросов;
- MFA, чтобы одного подобранного пароля было недостаточно;
- мониторинг распределенных попыток и необычных успешных входов;
- дополнительные проверки при повышенном риске;
- защищенное восстановление доступа.
Лимит только на один IP обходится распределением запросов и может задевать пользователей общей сети. Безусловная блокировка после нескольких ошибок позволяет атакующему блокировать чужие аккаунты. Эти компромиссы разобраны в OWASP Authentication Cheat Sheet.
Счетчики должны корректно работать при конкурентных запросах и нескольких экземплярах приложения. Один глобальный счетчик для всех пользователей неверен: он смешивает независимые попытки. Блокирующее ожидание внутри каждого обработчика также может расходовать ресурсы сервера.
При утечке хешей нужна другая граница защиты: подходящий алгоритм хранения паролей, соль и параметры стоимости вычисления. Рекомендации приведены в OWASP Password Storage Cheat Sheet. Это не заменяет предотвращение самой утечки.
На интервью важно показать сочетание мер и компромиссы, а не назвать универсальное число попыток, подходящее любому продукту.