A07: Identification and Authentication Failures
Если механизм входа можно обмануть или перебрать, рушится вся защита, построенная поверх него.
Identification and Authentication Failures — слабости в подтверждении личности пользователя: уязвимые пароли, перебор, плохое управление сессиями.
Аутентификация — дверь в систему. Если замок слабый, всё остальное теряет смысл. Эта категория объединяет проблемы паролей, защиты от перебора и управления сессиями.
Слабые пароли и перебор
Брутфорс — автоматический перебор паролей. Если приложение позволяет неограниченно пробовать пароли, рано или поздно подберут слабый. Защита — ограничение числа попыток (rate limiting), временная блокировка и требования к сложности пароля.
Многофакторная аутентификация
MFA (multi-factor authentication) — подтверждение входа вторым фактором: код из приложения-аутентификатора, аппаратный ключ. Даже зная пароль, без второго фактора злоумышленник не войдёт. Это одна из самых эффективных мер.
Управление сессиями
После входа пользователю выдаётся идентификатор сессии (обычно в cookie). Его нужно защищать: делать длинным и случайным, передавать только по HTTPS, ставить флаги HttpOnly (недоступен из JavaScript) и Secure (только по HTTPS), менять при логине, завершать по таймауту и при выходе.
Set-Cookie: session=...; HttpOnly; Secure; SameSite=Lax
// HttpOnly — недоступна скриптам (защита при XSS)
// Secure — передаётся только по HTTPS
// SameSite — ограничивает межсайтовую отправку (защита от CSRF)Как защищаться
- Ограничивайте число попыток входа (rate limiting), добавляйте задержки и блокировки.
- Предлагайте и поощряйте MFA, особенно для админов.
- Храните пароли через bcrypt/Argon2 (см. A02), проверяйте на утёкшие пароли.
- Защищайте cookie сессии флагами HttpOnly, Secure, SameSite.
- Не раскрывайте, что именно неверно — логин или пароль (нейтральное «неверные данные»).
Частые ошибки разработчиков
- Нет ограничения попыток входа — открыта дорога для перебора.
- Cookie сессии без HttpOnly/Secure: её можно украсть скриптом или по HTTP.
- Сообщают «такого пользователя нет» — это помогает перебирать существующие логины.
Итог
- Аутентификация — фундамент; слабый вход обесценивает остальную защиту.
- MFA и rate limiting резко повышают стойкость к перебору.
- Cookie сессии защищают флагами HttpOnly, Secure, SameSite.