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

Сколько хранится куки?

2.3 Middle🔥 161 комментариев
#Процессы и методологии разработки#Теория тестирования

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

🐱
deepseek-v3.2PrepBro AI6 апр. 2026 г.(ред.)

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

Сроки хранения Cookie (куки)

Куки (Cookie) — это небольшие фрагменты данных, которые веб-сервер отправляет браузеру пользователя для хранения и последующей отправки обратно с каждым запросом. Срок их хранения — фундаментальный атрибут, напрямую влияющий на безопасность, функциональность и UX. Как QA-инженер, я подхожу к этому вопросу с точки зрения тестирования, валидации поведения приложения и защиты пользовательских данных.

Классификация по сроку жизни

С технической точки зрения, куки делятся на два основных типа, определяемых атрибутом Max-Age или Expires:

  1. Сессионные куки (Session Cookies)
    *   **Хранятся:** Только в течение текущей сессии браузера.
    *   **Срок жизни:** Не имеют явного атрибута `Expires` или `Max-Age`. Удаляются автоматически при закрытии вкладки/браузера.
    *   **Назначение:** Временное хранение состояния (например, ID сессии, содержимое корзины покупок в течение одного визита).
    *   **Тестирование:** Важно проверять, что критичные данные (токены аутентификации) не хранятся в таких куках, если требуется "запомнить пользователя". Также необходимо валидировать корректность очистки при logout и закрытии браузера.

  1. Постоянные куки (Persistent Cookies)
    *   **Хранятся:** На устройстве пользователя до наступления срока истечения (**`Expires`**) или в течение заданного количества секунд (**`Max-Age`**).
    *   **Срок жизни:** Задается явно сервером. Может составлять от нескольких минут до нескольких лет.
    *   **Назначение:** Долгосрочная идентификация (например, `auth_token` для функции "Запомнить меня", предпочтения языка, аналитические идентификаторы).
    *   **Тестирование:** Ключевая область! Нужно проверять:
        *   Корректность установки заявленного срока.
        *   Поведение приложения после истечения срока (происходит ли автоматический logout, корректно ли запрашиваются новые учетные данные).
        *   Обновляется ли срок жизни при активных действиях пользователя (например, `Keep-Alive` сессии).

Практический пример: Установка кук

При тестировании API мы часто анализируем заголовки ответов. Вот как это выглядит:

# HTTP-ответ при успешной аутентификации с установкой кук
HTTP/1.1 200 OK
Set-Cookie: session_id=abc123def456; Path=/; HttpOnly; Secure
Set-Cookie: user_prefs=lang%3Dru%26theme%3Ddark; Path=/; Max-Age=2592000; SameSite=Lax

Разбор:

  • session_idсессионная кука (нет Expires/Max-Age). Будет удалена при закрытии браузера. Защищена атрибутами HttpOnly и Secure.
  • user_prefsпостоянная кука с Max-Age=2592000 (30 дней в секундах). Будет храниться на устройстве месяц.

Что критически важно проверять QA-инженеру?

С точки зрения обеспечения качества, тестирование кук — это не просто проверка срока. Это комплексная валидация:

  • Соответствие требованиям: Сроки хранения auth_token, аналитических (_ga) или рекламных (_fbp) кук должны строго соответствовать политикам безопасности (GDPR, CCPA) и функциональным спецификациям.
  • Безопасность: Наличие защитных атрибутов (Secure — передача только по HTTPS, HttpOnly — недоступность из JavaScript, SameSite — защита от CSRF-атак) для кук, содержащих конфиденциальные данные. Сессионные куки особенно уязвимы, если не защищены.
  • Сценарии истечения срока: Автоматическая обработка "протухших" кук: корректный logout, редирект на страницу логина, возможность "продления" сессии.
  • Очистка данных: Удаляются ли куки корректно при выполнении пользователем действия "Выйти" (должен отправляться заголовок Set-Cookie с прошедшей датой).
  • Взаимодействие между вкладками/окнами: Как поведет себя сессия, если пользователь открывает новую вкладку или окно после истечения срока в одной из них.
  • Инструменты: Активное использование вкладки Application (Chrome DevTools) или Storage (Firefox DevTools) для инспекции, модификации и удаления кук вручную во время тестирования.

Резюме для QA

Понимание сроков хранения кук — это ключ к тестированию аутентификации, сессионного управления и безопасности приложения. Недостаточно знать, что кука "хранится 30 дней". Необходимо проверить, как система ведет себя на 31-й день, как сочетаются между собой сессионные и постоянные куки, и защищены ли они от основных векторов атак. Проблемы в этой области часто приводят к уязвимостям сессии, некорректному UX и нарушению регуляторных требований.