Куки (файлы cookie) — технология хранения данных в браузере¶
Куки (англ. cookies, от англ. «печенюшки») — это небольшие фрагменты данных, которые веб-сайт сохраняет на устройстве пользователя через браузер при посещении страницы. При каждом последующем обращении к тому же сайту браузер автоматически отправляет сохранённые данные обратно серверу, что позволяет сайту «узнавать» пользователя и сохранять состояние между посещениями. Технология была предложена в 1994 году программистом Лу Монтилло из Netscape и с тех пор стала стандартным механизмом веб-разработки, применяемым практически всеми сайтами.
¶Происхождение и история
Технология cookie появилась в 1994 году, когда Лу Монтилло, сотрудник компании Netscape Communications, разработал механизм для решения конкретной задачи: интернет-магазин Netscape Shopping Cart должен был помнить содержимое корзины покупателя при переходе между страницами. HTTP — основной протокол передачи данных в интернете — является протоколом без состояния (stateless): каждый запрос обрабатывается сервером независимо от предыдущих, поэтому сервер изначально не имеет способа отличить одного пользователя от другого при переходах между страницами.
Идея заключалась в том, чтобы сервер при отправке ответа включал в него небольшой фрагмент данных, который браузер сохранял локально, а затем автоматически передавал обратно при каждом обращении к тому же сайту. Название «cookie» (печенье) было предложено как отсылка к «fortune cookies» — печенью с предсказанием, которое содержит скрытое сообщение.
Первая реализация была встроена в браузер Netscape Navigator версии 1.0, выпущенный в 1994 году. В 1995 году стандарт cookie был формализован в документе RFC 2109, а в 2000 году обновлён в RFC 2965. В 2011 году вышел стандарт RFC 6265, который описывает современный механизм работы файлов cookie.
¶Устройство и принцип работы
Работа cookie основана на механизме HTTP-заголовков. Когда пользователь запрашивает страницу сайта, сервер может добавить к ответу заголовок Set-Cookie, содержащий имя и значение фрагмента данных, а также дополнительные параметры. Браузер сохраняет эти данные и при следующем запросе к тому же сайту автоматически добавляет к нему заголовок Cookie с сохранёнными парами «имя-значение».
Пример структуры cookie:
| Параметр | Назначение |
|---|---|
| Имя и значение | Собственно данные (строка символов) |
| Domain | Домен, для которого действует cookie |
| Path | Путь на сайте, к которому относится |
| Expires / Max-Age | Срок действия (дата или время в секундах) |
| Secure | Передавать только по HTTPS |
| HttpOnly | Запретить доступ из JavaScript (защита от XSS) |
| SameSite | Ограничение передачи при переходах с других сайтов |
Объём одного cookie ограничен примерно 4 КБ, а общее количество cookie на один домен — около 50 штук. Эти ограничения установлены браузерами.
¶Виды cookie
По сроку хранения различают:
- Сессионные cookie — хранятся только во время работы браузера и удаляются после его закрытия. Используются, например, для поддержания состояния авторизации.
- Постоянные (постоянного хранения) — содержат дату истечения срока действия и сохраняются на диске устройства после закрытия браузера. Могут действовать от нескольких дней до нескольких лет.
По назначению:
- Технические (строго необходимые) — обеспечивают базовую работу сайта: авторизацию, сохранение содержимого корзины, балансировку нагрузки. Без них сайт не может функционировать.
- Аналитические — собирают статистику о посещениях: какие страницы просматриваются, сколько времени пользователь проводит на сайте. Примеры — счётчики Яндекс.Метрики и Google Analytics.
- Рекламные (поведенческие) — используются для показа персонализированной рекламы и отслеживания интересов пользователя на разных сайтах.
- Функциональные — сохраняют пользовательские настройки: язык интерфейса, регион, тему оформления.
¶Применение
Основные сценарии использования cookie включают:
- Аутентификация — после ввода логина и пароля сервер создаёт cookie с идентификатором сессии, который подтверждает, что пользователь авторизован.
- Персонализация — запоминание настроек интерфейса, языка, валюты, региона доставки.
- Интернет-магазины — сохранение содержимого корзины между посещениями.
- Аналитика — сбор обезличенной статистики о поведении посетителей для улучшения сайтов.
- Реклама — отслеживание интересов пользователя для показа релевантных объявлений.
¶Cookie и законодательство
Использование cookie регулируется законодательством многих стран. В России порядок работы с файлами cookie определён Федеральным законом от 27.07.2006 № 152-ФЗ «О персональных данных» и Федеральным законом от 13.03.2006 № 38-ФЗ «О рекламе»: пользователь должен быть уведомлен об использовании cookie, а аналитические и рекламные файлы — только с его согласия. В Евросоюзе действует Общий регламент по защите данных (GDPR), а также ePrivacy Directive, требующие информирования пользователей и получения согласия на нестрого необходимые cookie.
¶Безопасность и ограничения
Cookie могут быть уязвимы к нескольким типам атак. Кража cookie (session hijacking) позволяет злоумышленнику перехватить идентификатор сессии и получить доступ к аккаунту пользователя. Для защиты от этого используется флаг HttpOnly, запрещающий доступ к cookie из JavaScript, и флаг Secure, ограничивающий передачу по незащищённому HTTP.
Атака cross-site request forgery (CSRF) использует автоматическую отправку cookie браузером при запросах к сайту. Механизм защиты — флаг SameSite, ограничивающий отправку cookie при переходах с других сайтов.
Пользователь может управлять cookie через настройки браузера: просматривать сохранённые файлы, удалять их, блокировать сторонние cookie или запрещать их полностью. Полная блокировка cookie, как правило, ломает функциональность большинства сайтов, поэтому рекомендуется ограничивать блокировку сторонними (third-party) cookie, которые устанавливаются не посещаемым сайтом, а встроенными в него сторонними сервисами — рекламными сетями, виджетами соцсетей.
Источники:
- RFC 6265 — HTTP State Management Mechanism
- RFC 2109 — HTTP State Management Mechanism
- Федеральный закон от 27.07.2006 № 152-ФЗ «О персональных данных»
- Федеральный закон от 13.03.2006 № 38-ФЗ «О рекламе»
- Документация W3C по механизмам управления состоянием HTTP
- Крупиков А. Веб-разработка: технологии и стандарты
