Сколько хранится куки?
Комментарии (1)
Ответ сгенерирован нейросетью и может содержать ошибки
Сроки хранения Cookie (куки)
Куки (Cookie) — это небольшие фрагменты данных, которые веб-сервер отправляет браузеру пользователя для хранения и последующей отправки обратно с каждым запросом. Срок их хранения — фундаментальный атрибут, напрямую влияющий на безопасность, функциональность и UX. Как QA-инженер, я подхожу к этому вопросу с точки зрения тестирования, валидации поведения приложения и защиты пользовательских данных.
Классификация по сроку жизни
С технической точки зрения, куки делятся на два основных типа, определяемых атрибутом Max-Age или Expires:
- Сессионные куки (Session Cookies)
* **Хранятся:** Только в течение текущей сессии браузера.
* **Срок жизни:** Не имеют явного атрибута `Expires` или `Max-Age`. Удаляются автоматически при закрытии вкладки/браузера.
* **Назначение:** Временное хранение состояния (например, ID сессии, содержимое корзины покупок в течение одного визита).
* **Тестирование:** Важно проверять, что критичные данные (токены аутентификации) не хранятся в таких куках, если требуется "запомнить пользователя". Также необходимо валидировать корректность очистки при logout и закрытии браузера.
- Постоянные куки (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 и нарушению регуляторных требований.