Куки (файлы cookie) на сайтах¶
Куки (cookie, от англ. cookie — «печенье») — это небольшие фрагменты данных, которые веб-сайт сохраняет в браузере посетителя для последующего считывания. Технически куки представляют собой текстовые файлы или записи в памяти браузера, содержащие пары «имя — значение». Механизм был предложен программистом Марком Лоуландом (Lou Montulli) в 1994 году для компании Netscape и с тех пор стал стандартным способом хранения состояния веб-сессий.
¶Зачем сайту куки
Протокол HTTP, на котором работает Веб, по своей природе «без состояния» (stateless): каждый запрос браузера к серверу обрабатывается независимо, и сервер не помнит предыдущих действий пользователя. Куки решают эту задачу — они позволяют сайту «узнавать» повторного посетителя и сохранять между запросами необходимую информацию.
Основные функции куки:
- Авторизация. После ввода логина и пароля сервер создаёт сессионный идентификатор и передаёт его браузеру в виде куки. При последующих переходах браузер автоматически отправляет этот идентификатор серверу, и пользователь не вводит пароль на каждой странице.
- Сохранение настроек. Язык интерфейса, выбранный регион, размер шрифта, тёмная или светлая тема — всё это может храниться в куки.
- Корзина интернет-магазина. Товары, добавленные в корзину, сохраняются в куки или в серверной сессии, связанной с куки-идентификатором.
- Аналитика. Куки позволяют подсчитывать уникальных посетителей, отслеживать просмотренные страницы и глубину просмотра.
- Реклама. Куки используются для формирования профиля интересов пользователя и показа релевантной рекламы, а также для ограничения частоты показов.
¶Как это работает
Механизм взаимодействия браузера и сервера с куки выглядит следующим образом:
- Пользователь открывает страницу, браузер отправляет HTTP-запрос на сервер.
- Сервер в ответном заголовке
Set-Cookieпередаёт данные, которые нужно сохранить (например,session_id=abc123). - Браузер сохраняет эти данные в своём хранилище и привязывает их к домену сайта.
- При каждом последующем запросе к тому же домену браузер автоматически добавляет заголовок
Cookieс сохранёнными парами «имя — значение». - Сервер считывает нужные значения и восстанавливает контекст: авторизацию, настройки, содержимое корзины.
Куки могут содержать только текстовые данные. Их объём жёстко ограничен — как правило, до 4 КБ на одну запись, а суммарное количество куки на домен не должно превышать 50 штук.
¶Виды куки
| Тип | Время хранения | Назначение |
|---|---|---|
| Сессионные | До закрытия браузера | Хранят состояние текущей сессии (например, идентификатор авторизации) |
| Постоянные | Заданный срок (от минут до лет) | Запоминают настройки, предпочтения, идентификаторы аналитики |
| Сторонние (third-party) | Заданный срок | Устанавливаются доменами, отличными от открытого сайта (чаще всего рекламными и аналитическими сетями) |
| Обязательные (strictly necessary) | Сессионные или постоянные | Без них сайт не может функционировать (авторизация, безопасность, корзина) |
Сторонние куки считаются наиболее проблемными с точки зрения приватности: они позволяют рекламным и аналитическим компаниям отслеживать поведение пользователя на разных сайтах, формируя единый профиль.
¶Куки и приватность
Использование куки для отслеживания пользователей вызывает обсуждения о защите персональных данных. В ряде юрисдикций приняты законы, обязывающие сайты уведомлять посетителей об использовании куки и получать согласие на необязательные категории.
В России порядок работы с куки регулируется Федеральным законом «О персональных данных» от 27 июля 2006 года № 152-ФЗ. С 1 марта 2021 года вступили в силу поправки, обязывающие российские сайты хранить и обрабатывать персональные данных граждан РФ на территории России. Роскомнадзор неоднократно направлял предписания крупным интернет-сервисам о необходимости получения согласия пользователей на использование куки.
В Евросоюзе аналогичные требования закреплены в Общем регламенте по защите данных (GDPR), а в США — в отдельных законах штатов, прежде всего CCPA (Калифорния).
¶Управление куки в браузере
Практически все современные браузеры позволяют пользователю контролировать куки:
- просматривать список сохранённых куки и удалять их вручную;
- блокировать сторонние куки целиком;
- автоматически удалять куки при закрытии браузера;
- настраивать правила для отдельных сайтов (разрешать, блокировать, ограничивать по времени).
Полная блокировка всех куки возможна, но приводит к деградации функциональности многих сайтов: без куки не работает авторизация, сохранение настроек и корзина.
¶Куки и JavaScript
Помимо серверных куки, устанавливаемых через заголовок Set-Cookie, существуют куки, доступные из JavaScript через свойство document.cookie. Такие куки применяются для клиентской аналитики и хранения состояния интерфейса. Разработчики могут ограничивать доступ к куки с помощью атрибутов HttpOnly (недоступны из JavaScript, повышают защиту от кражи сессии) и Secure (передаются только по HTTPS).
¶Альтернативы
В связи с постепенным отказом браузеров от сторонних куки (Chrome, Firefox и Safari ограничили их использование) разрабатываются альтернативные механизмы идентификации пользователей: Privacy Sandbox от Google, серверные идентификаторы, хранящиеся на стороне издателя, и другие технологии.
¶Интересные факты
- Название «cookie» происходит от термина «magic cookie» из UNIX-программирования — пакета данных, передаваемого между программами без изменения его содержимого.
- Первоначально куки планировались как временный механизм хранения «корзины покупок» в электронном магазине Netscape.
- В 2001 году куки стали объектом судебного разбирательства в США: компания DoubleClick была обвинена в объединении данных из сторонних куки с личной информацией, что привело к ужесточению отраслевых стандартов.
¶Источники
- RFC 6265 — HTTP State Management Mechanism
- Федеральный закон от 27.07.2006 № 152-ФЗ «О персональных данных»
- Lou Montulli. The State of Cookie Usage, 1995
- Роскомнадзор. Методические рекомендации по обработке персональных данных
