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.
Проверьте себя
1. Что такое брутфорс пароля?
AКража cookie
BАвтоматический перебор паролей
CПодмена запроса
DСлабое шифрование
2. Зачем cookie сессии нужен флаг HttpOnly?
AЧтобы её было видно в JavaScript
BЧтобы она была недоступна из JavaScript (защита при XSS)
CЧтобы ускорить сайт
DЧтобы хранить её дольше
3. Какая мера наиболее эффективна, даже если пароль украден?
AДлинный пароль
BМногофакторная аутентификация (MFA)
CСмена цвета кнопки входа
DКапча на каждой странице