Куки (файлы cookie)¶
Куки (cookie, файлы cookie, по-русски часто «печенье») — небольшие фрагменты данных, которые веб-сервер или веб-страница отправляет браузеру пользователя, а браузер сохраняет на устройстве и передаёт обратно при каждом последующем обращении к тому же сайту. Куки являются основным механизмом хранения состояния в протоколе HTTP, который сам по себе является протоколом без состояния (stateless).
¶История
Технология куки была предложена в 1994 году инженером компании Netscape Марком Андрисенем (в некоторых источниках — Лу Монтульи, работавшим над первым браузером Mosaic). Идея заключалась в необходимости сохранять содержимое «корзины покупок» в интернет-магазине: сервер должен был как-то узнавать повторного посетителя. Термин «cookie» происходит от терминологии программирования — «magic cookie», обозначающей пакет данных, который передаётся без изменений. Первым браузером с поддержкой куки стал Netscape Navigator 1.0 (1994). Вскоре аналогичная функциональность появилась в Internet Explorer, и куки стали де-факто стандартом Всемирной паутины.
¶Принцип работы
Механизм куки основан на HTTP-заголовках. Когда браузер запрашивает страницу, сервер может в ответном HTTP-заголовке указать директиву Set-Cookie с данными и параметрами хранения. Браузер сохраняет эти данные и в последующих запросах к тому же домену автоматически добавляет заголовок Cookie с соответствующими значениями.
Основные параметры куки:
- Имя и значение — собственно данные (строки длиной обычно до 4 КБ).
- Домен — определяет, к каким сайтам куки будет отправляться.
- Путь — часть URL, к которой относится куки.
- Срок действия (Expires / Max-Age) — дата или интервал, после которого куки удаляется.
- Флаг Secure — отправлять только по HTTPS.
- Флаг HttpOnly — запретить доступ к куки через JavaScript (защита от XSS).
- SameSite — ограничение отправки куки при переходах с других сайтов (защита от CSRF).
¶Виды куки
¶По способу хранения
- Сессионные (временные) — удаляются при закрытии браузера.
- Постоянные (persistent) — хранятся на диске до истечения срока действия.
¶По источнику
- Собственные (first-party) — устанавливаются самим сайтом, который посещает пользователь.
- Сторонние (third-party) — устанавливаются доменом, отличным от посещаемого. Обычно используются рекламными и аналитическими сервисами для отслеживания пользователя между разными сайтами. Именно сторонние куки являются основным объектом критики технологии.
¶Применение
Куки выполняют множество функций:
- Аутентификация — хранение сессий после входа в учётную запись.
- Сохранение настроек — язык интерфейса, тема оформления, региональные параметры.
- Корзина покупок — содержимое корзины в интернет-магазинах.
- Аналитика — сбор статистики посещений (Google Analytics и аналоги).
- Реклама и ретаргетинг — показ рекламы с учётом интересов пользователя.
- Безопасность — хранение одноразовых токенов, защита от CSRF.
¶Приватность и регулирование
Сторонние куки позволяют отслеживать пользователя между десятками сайтов, формируя профиль интересов и поведения. Это вызывает серьёзные опасения в отношении приватности. В Евросоюзе обработка персональных данных, включая идентификаторы в куки, регулируется обобщённым регламентом по защите данных (GDPR, 2018), а также директивой о электронной коммерции: использование необязательных куки требует явного согласия пользователя.
В России сбор персональных данных, которые могут передаваться через куки, регулируется Федеральным законом № 152-ФЗ «О персональных данных». Популярные сайты, работающие в РФ, обязаны уведомлять Роскомнадзор о намерении обрабатывать персональные данные.
В США действуют отдельные законы в штатах Калифорния (CCPA) и Виргиния (VCDPA), требующие от сайтов информирования пользователей и предоставления возможности отказаться от отслеживания.
¶Отказ от сторонних куки
С 2020-х годов крупные производители браузеров постепенно отказываются от сторонних куки:
- Safari (Apple) — ограничение сторонних куки внедрено в 2017–2020 годах (Intelligent Tracking Prevention).
- Firefox (Mozilla) — сторонние куки заблокированы по умолчанию с 2022 года.
- Google Chrome — объявил о планах отказа от сторонних куки, однако сроки неоднократно переносились; в 2024 году компания объявила об отказе от планов полного удаления в пользу подхода, позволяющего пользователю управлять настройками.
Вместо сторонних куки разрабатываются альтернативы: Google Topics API, Privacy Sandbox, а также технологии на основе серверных идентификаторов.
¶Технические ограничения
Браузеры ограничивают количество куки на домен (обычно 50 штук) и общий объём (около 4 КБ на куки и 40 КБ на домен). При превышении лимитов старые куки удаляются. Также существуют ограничения на глубину вложенных поддоменов — куки не может быть установлен для TLD вроде .ru или .com.
¶Альтернативы
Помимо куки, для хранения состояния в браузерах используются:
- localStorage и sessionStorage — Web Storage API, хранение данных на стороне браузера без отправки на сервер.
- IndexedDB — полноценное клиентское хранилище структурированных данных.
- Токены JWT — часто передаются в заголовке Authorization вместо куки.
Однако Web Storage не отправляется автоматически на сервер, поэтому куки остаются основным механизмом серверной аутентификации и отслеживания.
Источники:
- RFC 6265 — HTTP State Management Mechanism
- Документация MDN Web Docs по HTTP cookies
- История Netscape Navigator и веб-браузеров
- GDPR (Regulation (EU) 2016/679)
- Федеральный закон РФ № 152-ФЗ «О персональных данных»
