Что такое аутентификация?
Комментарии (1)
Ответ сгенерирован нейросетью и может содержать ошибки
Аутентификация в приложениях
Аутентификация — это процесс проверки идентичности пользователя. Это один из самых критичных компонентов безопасности приложения. Для 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
- Всегда использовать HTTPS для передачи учётных данных
- Не хранить пароли в открытом виде — использовать хеширование
- Внедрить MFA для повышения безопасности
- Session timeout — автоматический logout
- Rate limiting — защита от brute force
- Password policies — требования к сложности
- Secure password recovery — проверка email, временные ссылки
- Log и monitor — отслеживание попыток входа
- Регулярные обновления — патчи и обновления
- Обучение пользователей — о безопасности паролей
Примеры в разных приложениях
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 инженеру более эффективно тестировать безопасность приложения, находить уязвимости и обеспечивать защиту данных пользователей.