Что такое процесс аутентификации (login) пользователя в веб-системе?

«Что такое процесс аутентификации (login) пользователя в веб-системе?» — вопрос из категории Основы тестирования, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Аутентификация (login) — это процесс проверки подлинности пользователя по предоставленным учетным данным для предоставления доступа к защищенным ресурсам системы.

Типичный механизм включает следующие этапы:

  1. Представление учетных данных — пользователь вводит логин (email/username) и пароль через форму.
  2. Клиентская валидация (опционально) — проверка формата данных (например, корректность email) на стороне браузера.
  3. Передача на сервер — данные отправляются по защищенному протоколу (HTTPS).
  4. Серверная аутентификация — сервер находит пользователя в БД по логину и сравнивает хеш предоставленного пароля с сохраненным хешем.
  5. Создание сессии — при успехе сервер создает сессию (сохраняет её идентификатор) или генерирует токен доступа (например, JWT).
  6. Ответ клиенту — клиенту отправляется идентификатор сессии (в cookie) или токен, после чего пользователь получает доступ.

Пример кода проверки пароля (Python):

import bcrypt

def authenticate_user(username: str, password: str) -> str | None:
    """Аутентифицирует пользователя. Возвращает токен или None."""
    user = db.get_user_by_username(username)
    if not user:
        return None  # Пользователь не найден

    # Сравнение хеша пароля
    if bcrypt.checkpw(password.encode('utf-8'), user.password_hash.encode('utf-8')):
        return generate_jwt_token(user.id)  # Генерация токена
    return None  # Неверный пароль

Ключевые аспекты безопасности:

  • Хеширование паролей: Пароли никогда не хранятся в открытом виде, используются стойкие алгоритмы (bcrypt, Argon2).
  • HTTPS: Обязателен для шифрования передаваемых данных.
  • Защита от атак: Реализация лимитов попыток входа, CAPTCHA для блокировки брутфорса.
  • Безопасные cookies: Использование флагов HttpOnly, Secure, SameSite для сессионных cookies.