Что такое токен в контексте веб-безопасности и аутентификации?

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

Ответ

Токен — это компактная строка, выступающая в роли учетных данных, которая выдается сервером после успешной аутентификации и используется клиентом для доступа к защищенным ресурсам.

Основные типы и их применение:

  1. Токены доступа (Access Tokens):

    • Назначение: Краткосрочный ключ для доступа к API.
    • Формат: Часто JWT (JSON Web Token).
    • Передача: В заголовке Authorization: Bearer <token>.
      GET /api/user/profile HTTP/1.1
      Host: api.example.com
      Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
    • Структура JWT: header.payload.signature. Полезная нагрузка (payload) содержит claims (утверждения), например, ID пользователя и срок действия.
  2. CSRF-токены (Токены защиты от межсайтовой подделки запроса):

    • Назначение: Защита state-changing операций (POST, PUT, DELETE) от выполнения несанкционированными сайтами.
    • Принцип: Уникальное, непредсказуемое значение, генерируемое сервером и передаваемое клиенту (обычно в скрытом поле формы или в cookie). Сервер проверяет совпадение токена из тела запроса и из cookie сессии.
      <form action="/transfer" method="POST">
      <input type="hidden" name="csrf_token" value="a1b2c3d4e5f6">
      <!-- другие поля формы -->
      </form>
  3. Refresh Tokens: Долгоживущие токены, используемые для получения новых Access Tokens без повторного ввода логина и пароля.

Преимущества токенов перед сессиями на основе cookies:

  • Stateless сервер: Серверу не нужно хранить состояние сессии, что улучшает масштабируемость.
  • Кроссплатформенность: Легко использовать в мобильных и desktop-приложениях, SPA.
  • Гибкость: В токен можно закодировать права доступа (scope) и другую метаинформацию.