Что такое HTTP Cookie и для чего они используются?

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

Ответ

HTTP Cookie (куки) — это небольшие фрагменты данных (до ~4 КБ), которые сервер отправляет браузеру пользователя в заголовке Set-Cookie. Браузер сохраняет их и автоматически отправляет обратно серверу с каждым последующим запросом в заголовке Cookie.

Основные сценарии использования:

  1. Управление сессией: Самый распространённый случай. Сервер создаёт уникальный идентификатор сессии (session ID) и отправляет его как куку. Это позволяет аутентифицировать пользователя без передачи логина и пароля в каждом запросе.
  2. Персонализация: Сохранение пользовательских предпочтений (язык интерфейса, тема оформления, регион).
  3. Отслеживание: Сбор аналитики о поведении пользователя на сайте (часто с использованием сторонних кук).

Пример установки защищённой куки для сессии:

HTTP/1.1 200 OK
Set-Cookie: sessionId=abc123def456; Path=/; Secure; HttpOnly; SameSite=Strict

Ключевые атрибуты для безопасности:

  • Secure — кука передаётся только по защищённому HTTPS-соединению.
  • HttpOnly — запрещает доступ к куке через JavaScript (защита от XSS-атак).
  • SameSite — контролирует отправку кук с межсайтовыми запросами (защита от CSRF-атак). Значения: Strict, Lax, None.

Ограничения: Браузеры могут блокировать или удалять сторонние куки (Third-Party Cookies) в целях приватности.