← Назад к вопросам

Что такое аутентификация?

1.0 Junior🔥 221 комментариев
#Клиент-серверная архитектура#Теория тестирования

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI23 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Аутентификация в приложениях

Аутентификация — это процесс проверки идентичности пользователя. Это один из самых критичных компонентов безопасности приложения. Для QA инженера понимание механизмов аутентификации необходимо при тестировании функций входа, управления сессиями и безопасности.

Определение и различие от авторизации

Аутентификация (Authentication)

  • Проверка: "Ты кто?" или "Ты действительно пользователь, за которого себя выдаёшь?"
  • Проверка идентичности пользователя
  • Подтверждение, что пользователь это действительно он
  • Пример: вход по логину и паролю

Авторизация (Authorization)

  • Проверка: "Что ты можешь делать?"
  • Проверка прав доступа
  • Определение, какие ресурсы доступны аутентифицированному пользователю
  • Пример: только админ может удалять пользователей

Методы аутентификации

Логин и пароль (Basic Authentication)

  • Самый распространённый метод
  • Пользователь вводит логин и пароль
  • Сервер проверяет учётные данные в БД
  • Простой и понятный для пользователей
  • Требует использования HTTPS для безопасности

Email и пароль

  • Вариант Basic Authentication
  • Email вместо логина
  • Проще для восстановления пароля

Multi-Factor Authentication (MFA)

  • Двухфакторная аутентификация (2FA)
  • После пароля требуется второй фактор
  • Методы: SMS код, email код, authenticator app, биометрия
  • Google Authenticator, Authy, Microsoft Authenticator

OAuth 2.0

  • Делегированная аутентификация
  • Вход через социальные сети (Google, Facebook, GitHub)
  • Не нужно доверять пароль третьим сторонам
  • Получение токена вместо пароля

OpenID Connect

  • Слой аутентификации над OAuth 2.0
  • Получение информации о пользователе
  • Идентификация через внешних провайдеров

JWT (JSON Web Token)

  • Токен-based аутентификация
  • Состоит из трёх частей: header, payload, signature
  • Отправляется в заголовке Authorization
  • Не требует хранения сессии на сервере

Session-based Authentication

  • Сервер создаёт сессию после успешного входа
  • Session ID хранится в cookies
  • Каждый запрос включает session ID
  • Информация о сессии хранится на сервере

Биометрическая аутентификация

  • Отпечаток пальца (Fingerprint)
  • Распознавание лица (Face Recognition)
  • Сканирование сетчатки глаза
  • Используется на мобильных устройствах

Процесс аутентификации

Шаг 1: Отправка учётных данных

Пользователь вводит email/пароль
Направляет на сервер через HTTPS

Шаг 2: Проверка на сервере

Сервер получает учётные данные
Проверяет в БД
Сравнивает хешированный пароль

Шаг 3: Проверка MFA (если требуется)

Посылает код подтверждения
Пользователь вводит код
Сервер проверяет код

Шаг 4: Создание токена/сессии

Сервер создаёт JWT или session
Отправляет обратно клиенту

Шаг 5: Использование для доступа

Клиент отправляет токен/cookies с каждым запросом
Сервер проверяет действительность
Разрешает или запрещает доступ

Безопасность паролей

Хеширование паролей

  • Пароли не хранятся в открытом виде
  • Используется хеширование (bcrypt, Argon2, PBKDF2)
  • Невозможно восстановить пароль из хеша
  • Даже разработчики не знают пароли

Salting

  • Добавление случайных данных к паролю
  • Предотвращает rainbow table атаки
  • Каждый пароль имеет уникальный salt

Защита при передаче

  • Использование HTTPS/TLS
  • Шифрование данных в транзите
  • Защита от перехвата

Тестирование аутентификации

Функциональное тестирование

  • Вход с корректными учётными данными
  • Вход с неправильным паролем
  • Вход с неправильным логином
  • Забытый пароль функциональность
  • Восстановление пароля

Безопасность

  • SQL injection в форме входа
  • Brute force атаки (попытки угадать пароль)
  • Password complexity требования
  • Session timeout после неактивности
  • Logout функциональность

MFA тестирование

  • Отправка кода подтверждения
  • Проверка кода (валидный/невалидный)
  • Expiration кода
  • Повторная отправка кода
  • Резервные коды для восстановления

OAuth/Social Login

  • Вход через Google/Facebook
  • Разрешение на доступ
  • Связывание аккаунтов
  • Отвязание социального аккаунта

Производительность

  • Время отклика на вход
  • Время генерации токена
  • Кэширование и сессии

Типичные проблемы

Weak passwords

  • Короткие пароли
  • Пароли без спецсимволов
  • Часто используемые пароли

Session management

  • Сессии не истекают
  • Session fixation уязвимости
  • Session stealing

Password reset

  • Предсказуемые токены восстановления
  • Долгое время действия токена
  • Отсутствие проверки email

API Security

  • API ключи в открытом виде
  • Токены с длинным lifetime
  • Отсутствие rate limiting

Tools для тестирования

Burp Suite

  • Тестирование аутентификации
  • Анализ cookies и tokens
  • Session handling

OWASP ZAP

  • Сканирование уязвимостей
  • Проверка password policies

Postman

  • Тестирование API аутентификации
  • Token management

Best Practices

  1. Всегда использовать HTTPS для передачи учётных данных
  2. Не хранить пароли в открытом виде — использовать хеширование
  3. Внедрить MFA для повышения безопасности
  4. Session timeout — автоматический logout
  5. Rate limiting — защита от brute force
  6. Password policies — требования к сложности
  7. Secure password recovery — проверка email, временные ссылки
  8. Log и monitor — отслеживание попыток входа
  9. Регулярные обновления — патчи и обновления
  10. Обучение пользователей — о безопасности паролей

Примеры в разных приложениях

Web приложения

  • Form с полями email/пароль
  • Cookies с session ID
  • CSRF токены

Мобильные приложения

  • JWT токены
  • Refresh tokens
  • Биометрическая аутентификация
  • Secure storage паролей

API

  • Bearer tokens (JWT)
  • API keys
  • OAuth 2.0
  • Basic auth (только с HTTPS)

Понимание аутентификации помогает QA инженеру более эффективно тестировать безопасность приложения, находить уязвимости и обеспечивать защиту данных пользователей.