Cookie lifetime
Cookie lifetime (время жизни cookie, срок действия cookie) — это параметр, определяющий период времени, в течение которого файл cookie (небольшой фрагмент данных, сохраняемый веб-браузером на устройстве пользователя) хранится и считается действительным для последующего использования при взаимодействии с веб-сервером. Данный параметр задаётся веб-сервером при установке cookie и может быть как фиксированным (с конкретной датой истечения), так и неопределённым (cookie сессии). Cookie lifetime является одним из ключевых механизмов управления состоянием в протоколе HTTP, который по своей природе не сохраняет информацию о предыдущих запросах пользователя.
История и развитие
Понятие cookie было впервые внедрено в 1994 году сотрудником компании Netscape Communications Лу Монтулли (Lou Montulli) для решения задачи сохранения состояния в интернет-магазинах (например, для хранения содержимого корзины). Изначально cookie не имели строго определённого времени жизни — браузеры хранили их до закрытия окна или до явного удаления пользователем. Однако уже в первых спецификациях Netscape (1994) и последующих документах IETF (RFC 2109, 1997; RFC 2965, 2000) была введена возможность задания атрибута Expires (дата истечения) и Max-Age (максимальный возраст в секундах). Современный стандарт RFC 6265 (2011) уточнил правила обработки cookie lifetime, сделав Max-Age приоритетным над Expires в случае конфликта.
Механизм работы
Cookie lifetime определяется двумя основными атрибутами, которые сервер передаёт в HTTP-заголовке Set-Cookie:
Expires— задаёт конкретную дату и время в формате HTTP (например,Wed, 21 Oct 2025 07:28:00 GMT). После наступления указанного момента браузер автоматически удаляет cookie.Max-Age— задаёт количество секунд, в течение которого cookie считается действительным с момента его установки. Например,Max-Age=3600означает, что cookie будет храниться один час. Если атрибутMax-Ageравен нулю или отрицательному числу, браузер немедленно удаляет cookie.
Если ни один из этих атрибутов не указан, cookie считается сессионным (session cookie) — его lifetime ограничивается временем работы текущего сеанса браузера. Сессионные cookie хранятся в оперативной памяти и удаляются при закрытии браузера (или вкладки, в зависимости от реализации). Некоторые современные браузеры (например, Google Chrome) могут восстанавливать сессионные cookie при повторном открытии, если включена функция восстановления сеанса.
Пример установки cookie с lifetime
`` Set-Cookie: session_id=abc123; Expires=Wed, 21 Oct 2025 07:28:00 GMT; Path=/ Set-Cookie: user_pref=dark_theme; Max-Age=86400; Path=/ ``
Первый cookie (session_id) будет храниться до 21 октября 2025 года, второй (user_pref) — 24 часа (86400 секунд).
Классификация по времени жизни
Cookie можно разделить на три основных типа в зависимости от lifetime:
Сессионные cookie (session cookies)
- Характеристика: не имеют атрибутов
ExpiresилиMax-Age. - Хранение: в оперативной памяти браузера.
- Удаление: при закрытии браузера или вкладки.
- Применение: временные данные, такие как идентификатор сессии, токены аутентификации на время одного сеанса, состояние корзины в интернет-магазине.
Постоянные cookie (persistent cookies)
- Характеристика: имеют атрибут
ExpiresилиMax-Ageс положительным значением. - Хранение: на жёстком диске или в файловой системе браузера.
- Удаление: по истечении заданного срока или при ручном удалении пользователем.
- Применение: долгосрочные настройки пользователя (язык, тема оформления), данные аутентификации с возможностью «запомнить меня», аналитические метки (например, Google Analytics).
Cookie с нулевым lifetime
- Характеристика:
Max-Age=0илиExpiresв прошлом. - Действие: браузер немедленно удаляет cookie (используется для удаления ранее установленных cookie).
Влияние на безопасность и конфиденциальность
Cookie lifetime имеет прямое отношение к безопасности веб-приложений и приватности пользователей. Слишком длительное время жизни постоянных cookie может привести к следующим рискам:
- Утечка сессионных данных: если злоумышленник получит доступ к cookie с длительным lifetime (например, через XSS-атаку или перехват трафика), он сможет использовать его для несанкционированного доступа к учётной записи пользователя в течение длительного времени.
- Отслеживание пользователей: рекламные и аналитические сервисы (например, Google Analytics, Яндекс.Метрика) используют cookie с длительным lifetime (до 2 лет) для создания профиля поведения пользователя. Это вызывает обеспокоенность с точки зрения конфиденциальности, особенно в контексте требований законодательства (например, Федеральный закон «О персональных данных» № 152-ФЗ в РФ, GDPR в ЕС).
- Уязвимость к CSRF-атакам: cookie с длительным lifetime могут быть использованы в межсайтовой подделке запросов (CSRF), если не применяются дополнительные меры защиты (например, SameSite-атрибут).
Для снижения рисков рекомендуется:
- Устанавливать минимально необходимый lifetime (например, для сессионных cookie — без срока, для постоянных — не более нескольких дней или недель).
- Использовать атрибут
Secure(передача только по HTTPS) иHttpOnly(запрет доступа через JavaScript). - Применять атрибут
SameSite(значенияStrictилиLax) для предотвращения CSRF.
Управление lifetime в современных браузерах
Современные браузеры предоставляют пользователям возможность управлять cookie lifetime на уровне настроек. Например:
- Google Chrome: позволяет удалять cookie при закрытии браузера (включение опции «Очищать cookie и данные сайтов при выходе из Chrome»), а также устанавливать ограничения на срок хранения для отдельных сайтов.
- Mozilla Firefox: имеет режим «Усиленная защита от отслеживания», который автоматически ограничивает lifetime cookie от трекеров (до 24 часов).
- Safari: по умолчанию блокирует сторонние cookie и ограничивает lifetime для всех cookie (до 7 дней для cookie, установленных через JavaScript).
- Microsoft Edge: поддерживает аналогичные функции, включая возможность автоматического удаления cookie при закрытии.
Правовые аспекты в Российской Федерации
В Российской Федерации использование cookie регулируется Федеральным законом «О персональных данных» № 152-ФЗ и Федеральным законом «Об информации, информационных технологиях и о защите информации» № 149-ФЗ. Согласно требованиям Роскомнадзора, веб-сайты обязаны:
- Получать согласие пользователя на обработку cookie, если они используются для целей, не связанных с технической необходимостью (например, для аналитики или рекламы).
- Уведомлять пользователя о сроках хранения cookie (lifetime) и возможности их удаления.
- Предоставлять возможность отзыва согласия и удаления cookie.
Нарушение этих требований может повлечь административную ответственность (штрафы до 500 000 рублей для юридических лиц по ст. 13.11 КоАП РФ). В 2023 году Роскомнадзор усилил контроль за соблюдением правил обработки cookie, особенно в отношении иностранных платформ (включая Google LLC — организация признана нежелательной на территории РФ, Meta Platforms Inc. — организация признана экстремистской и запрещена в РФ).
Примеры использования cookie lifetime
| Тип cookie | Типичный lifetime | Пример использования |
|---|---|---|
| Сессионный | До закрытия браузера | Идентификатор сессии в онлайн-банке |
| Постоянный (короткий) | 1 час | Токен для восстановления пароля |
| Постоянный (средний) | 30 дней | Настройки языка интерфейса |
| Постоянный (долгий) | 1 год | Cookie «Запомнить меня» для аутентификации |
| Постоянный (очень долгий) | 2 года | Аналитические cookie Google Analytics |
Критика и ограничения
Несмотря на широкое распространение, механизм cookie lifetime имеет ряд недостатков:
- Зависимость от пользователя: пользователи могут вручную удалять cookie раньше срока, что нарушает работу веб-приложений.
- Несовместимость с мобильными приложениями: cookie не используются в нативных мобильных приложениях (за исключением WebView), что ограничивает их применение.
- Уязвимость к атакам: cookie с длительным lifetime могут быть украдены через уязвимости браузера или перехват трафика (если не используется HTTPS).
- Проблемы синхронизации между устройствами: cookie хранятся локально на одном устройстве и не синхронизируются между разными браузерами или устройствами пользователя.
Альтернативными подходами к управлению состоянием являются:
- Web Storage API (localStorage и sessionStorage) — хранение данных на стороне клиента без автоматической передачи на сервер.
- IndexedDB — база данных на стороне клиента для хранения больших объёмов данных.
- JWT (JSON Web Tokens) — токены аутентификации, хранящиеся в localStorage или в cookie, но с возможностью задания собственного времени жизни на стороне сервера.
Источники
- RFC 6265 — HTTP State Management Mechanism (2011)
- Netscape Cookie Specification (1994)
- Федеральный закон «О персональных данных» № 152-ФЗ (2006)
- Рекомендации Роскомнадзора по обработке cookie (2021)
- Документация браузеров Google Chrome, Mozilla Firefox, Safari, Microsoft Edge по управлению cookie
- Статья «HTTP Cookies» на сайте MDN Web Docs
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →