Куки (cookie) — файлы данных веб-браузера¶
Куки (англ. cookie, буквально «печенье») — небольшие фрагменты данных, которые веб-сайты сохраняют в памяти браузера пользователя при посещении страниц. Куки используются для идентификации пользователей, хранения настроек, поддержания состояния сеанса и сбора статистики. Технически куки представляют собой текстовые файлы или записи в памяти браузера, содержащие пару «имя-значение» и служебные метаданные (домен, срок действия, флаги безопасности).
¶История
Термин «cookie» и сама технология были предложены в 1994 году инженером Мэтом Куттоу (Matt Cutts) и Лу Монтульи (Lou Montulli) из компании Netscape. Первоначальная задача заключалась в том, чтобы веб-магазин мог «помнить» содержимое корзины пользователя при переходе между страницами. Название отсылает к понятию «magic cookie» из компьютерных сетей 1970-х годов — небольшого пакета данных, передаваемого между программами.
Вскоре куки стали стандартом де-факто для веб-разработки. В 1995 году компания Lotus разработала механизм, позволявший отслеживать пользователей через рекламные баннеры, что вызвало волну критики и первые дискуссии о приватности в интернете. В 2002 году Европейский союз принял директиву 2002/58/EC, обязывающую сайты получать согласие пользователей на установку необязательных куки. В России порядок работы с куки регулируется Федеральным законом № 152-ФЗ «О персональных данных» и требованиями Роскомнадзора о согласии на обработку данных.
¶Устройство и принцип работы
Когда пользователь открывает веб-страницу, браузер отправляет на сервер HTTP-запрос. Сервер в ответ может добавить заголовок Set-Cookie, указывающий, что нужно сохранить определённые данные. Браузер записывает их в своё хранилище и при последующих запросах к тому же домену автоматически подставляет их в заголовок Cookie.
Пример содержимого куки:
`` session_id=abc123; Path=/; Domain=example.com; Expires=Fri, 31 Dec 2025 23:59:59 GMT; Secure; HttpOnly; SameSite=Lax ``
Типичные атрибуты куки:
- Name — имя переменной;
- Value — сохраняемое значение;
- Domain и Path — область действия (каким доменам и путям куки передаётся);
- Expires / Max-Age — срок жизни;
- Secure — передавать только по HTTPS;
- HttpOnly — запретить доступ из JavaScript (защита от XSS);
- SameSite — ограничение передачи при межсайтовых запросах (защита от CSRF).
¶Виды куки
| Вид | Назначение | Время жизни |
|---|---|---|
| Сессионные | Хранят состояние вкладки (корзина, авторизация) | Удаляются при закрытии браузера |
| Постоянные | Запоминают настройки, логины | Заданный срок (дни, месяцы, годы) |
| Привязанные к домену | Доступны для всех страниц одного сайта | Любое |
| Сторонние (third-party) | Устанавливаются рекламными и аналитическими сервисами, встроенными на сайт | Любое |
| Технические | Обеспечивают работу сайта (балансировка, безопасность) | Как правило, сессионные |
| Аналитические | Собирают статистику посещений | Постоянные |
¶Применение
Основные сценарии использования куки:
- Авторизация — хранение идентификатора сессии, чтобы пользователь не вводил логин и пароль на каждой странице.
- Персонализация — язык интерфейса, тема оформления, региональные настройки.
- Корзина интернет-магазина — сохранение выбранных товаров между переходами.
- Реклама и аналитика — построение профилей интересов, ретаргетинг, подсчёт посещаемости. Именно этот сценарий вызывает основные претензии к технологии.
- Безопасность — защита от межсайтовой подделки запросов (CSRF), ограничение числа попыток входа.
¶Приватность и регулирование
Сторонние куки позволяют рекламным сетям отслеживать пользователя на множестве сайтов, формируя единый профиль поведения. Это стало причиной ужесточения регулирования: директива ЕС ePrivacy, общий регламент по защите данных (GDPR) требуют явного согласия на нестрого необходимые куки. В России аналогичное требование закреплено в ст. 9 152-ФЗ: операторы обязаны получать согласие субъекта персональных данных, если куки содержат идентифицирующую информацию.
В ответ на правовые и общественные запросы браузеры начали ограничивать сторонние куки: Safari (WebKit) блокирует их по умолчанию с 2020 года, Firefox — с 2019 года. Google объявил о постепенном отказе от сторонних куки в Chrome, однако сроки переносились несколько раз; в 2024 году компания отказалась от планов полного удаления в пользу подхода «Privacy Sandbox», где вместо индивидуального отслеживания используются групповые интересы.
¶Управление куки
Пользователь может просматривать и удалять куки через настройки браузера (раздел «Конфиденциальность» или «Данные сайтов»). Дополнительно доступны расширения, блокирующие отдельные категории куки, и режимы инкогнито, в которых куки не сохраняются после закрытия окна. Полное отключение куки ломает значительную часть сайтов: выпадает авторизация, не работает корзина, некорректно отображается интерфейс.
¶Куки и JavaScript
Помимо HTTP-заголовков, куки доступны через свойство document.cookie в JavaScript. Разработчики используют это для клиентских настроек, но вместе с тем возникают риски: если сайт уязвим к атаке XSS, злоумышленник может украсть идентификатор сессии. Атрибут HttpOnly закрывает эту уязвимость, скрывая куки от скриптов.
Источники:
- RFC 6265 — HTTP State Management Mechanism
- Lou Montulli. The State of Cookie Technology (1998)
- Федеральный закон № 152-ФЗ «О персональных данных»
- Директива ЕС 2002/58/EC и GDPR (Регламент 2016/679)
- Документация Mozilla Developer Network по HTTP cookies
