Содержание11
- Что такое файлы cookie
- Зачем сайту cookie?
- Какие бывают cookie?
- Что хранит cookie и какие у неё ограничения
- Как настроить безопасность cookie
- Cookie и 152-ФЗ: когда это персональные данные
- Нужно ли предупреждать о cookie на сайте?
- Что написать в уведомлении и политике о cookie
- Как посмотреть, какие cookie ставит ваш сайт
- Частые вопросы
- Источники
Файлы cookie — небольшие записи, которые сервер сайта просит браузер сохранить и присылать обратно с каждым запросом. Благодаря им сайт помнит вход в кабинет, корзину и настройки, а счётчики аналитики отличают одного посетителя от другого. Отдельного закона о cookie в России нет, но если по ним можно определить человека, на них распространяется 152-ФЗ.
Что такое файлы cookie
Cookie — это небольшой фрагмент данных, который сервер отправляет в браузер пользователя. Браузер хранит его и при следующих запросах к тому же сайту отправляет обратно. Так сервер узнаёт, что запросы пришли от одного и того же браузера.
Зачем такая сложность? Протокол HTTP, по которому работают сайты, сам по себе не хранит состояние: каждый запрос для сервера новый, как будто человек пришёл впервые. Без cookie нельзя было бы войти в личный кабинет и перейти на соседнюю страницу, не вводя пароль заново.
Технически всё выглядит так. Сервер добавляет в ответ заголовок Set-Cookie с именем и значением, например session_id=a3fwa. Браузер запоминает пару, а в следующих запросах присылает её в заголовке Cookie. Значение обычно ничего не говорит само по себе — это идентификатор, по которому сервер находит нужные данные у себя.
Русские названия — «куки», «временные файлы», «файлы cookie» — обозначают одно и то же. Это не программы и не вирусы: cookie не умеют ничего запускать, они только хранят строку текста.
Cookie — не программа, а строка текста, которую сайт просит браузер хранить и возвращать, чтобы узнавать посетителя между запросами.
Зачем сайту cookie?
Справочник MDN называет три основные задачи cookie:
- Управление сессией — сайт помнит, что человек вошёл в кабинет, что лежит у него в корзине, на каком шаге он остановился в оформлении заказа.
- Персонализация — выбранный язык, город доставки, тёмная тема, валюта.
- Отслеживание — счётчики аналитики и рекламные системы записывают, как человек ведёт себя на сайте и с какой рекламы пришёл.
Первые две задачи нужны самому посетителю: без них сайт неудобен или вовсе не работает. Третья нужна владельцу сайта и рекламным площадкам. Именно она вызывает вопросы о приватности и законе.
Раньше в cookie хранили и просто данные, но сейчас для этого есть локальное хранилище браузера. У cookie есть цена: они отправляются с каждым запросом и могут замедлять работу сайта, особенно на медленном мобильном интернете. Поэтому чем меньше и короче cookie, тем лучше для скорости.
Какие бывают cookie?
Cookie делят по трём признакам: сколько живут, кто их ставит и зачем. От этого зависит, нужно ли о них сообщать и можно ли без них обойтись.
| Признак | Вид | Пример |
|---|---|---|
| Срок жизни | сессионные | удаляются, когда заканчивается сессия браузера |
| Срок жизни | постоянные | живут до даты из атрибута Expires или Max-Age |
| Кто ставит | собственные | cookie вашего домена: вход, корзина, язык |
| Кто ставит | сторонние | cookie чужого домена: виджет, рекламная сеть |
| Назначение | технические | без них не работает вход и корзина |
| Назначение | аналитические | счётчик считает посетителей и визиты |
| Назначение | рекламные | ретаргетинг, подсчёт показов и кликов |
Сессионные cookie без срока действия удаляются, когда заканчивается текущая сессия браузера. Постоянные хранятся до заданной даты. Например, Яндекс Метрика для учёта посетителей использует анонимные идентификаторы браузеров, которые сохраняются в cookie, а её основная cookie _ym_uid живёт 1 год.
Сторонние cookie постепенно уходят: по данным MDN, браузеры начали блокировать их по умолчанию или планируют это сделать. Для рекламы и сквозной аналитики это значит, что часть данных будет теряться независимо от настроек сайта.
Что хранит cookie и какие у неё ограничения
Каждая cookie — это имя, значение и набор атрибутов, которые говорят браузеру, когда и куда её отправлять:
- Expires или Max-Age — когда cookie удалить. Без них cookie сессионная.
- Domain — на какой домен и поддомены её отправлять.
- Path — для какого раздела сайта она действует.
- Secure — отправлять только по защищённому соединению.
- HttpOnly — не давать доступ скриптам на странице.
- SameSite — отправлять ли её при переходах с других сайтов.
Размер cookie ограничен. Стандарт RFC 6265 требует от браузеров хранить не меньше 4096 байт на одну cookie и не меньше 50 cookie на домен. На практике это значит, что в cookie не кладут крупные данные: только короткий идентификатор, а всё остальное хранится на сервере.
Хранить в cookie пароли, номера карт и другие чувствительные данные нельзя. По умолчанию значение видно и доступно для изменения самому пользователю, а при ошибках настройки — и посторонним.
Факт. Стандарт RFC 6265 гарантирует сайту не меньше 50 cookie на домен и не меньше 4096 байт на каждую, поэтому в cookie держат короткие идентификаторы, а не данные.
Как настроить безопасность cookie
Безопасность cookie решают три атрибута, и их выставляет разработчик на стороне сервера. Ошибка здесь дороже, чем кажется: укравший cookie сессии получает доступ к кабинету клиента без пароля.
Secure. Cookie с этим атрибутом отправляется на сервер только по зашифрованному протоколу HTTPS. Без сертификата такую cookie сайт поставить не сможет, поэтому сначала нужен HTTPS — порядок перехода описан в статье как установить SSL-сертификат.
HttpOnly. Такая cookie недоступна JavaScript на странице. Если злоумышленник внедрит вредоносный скрипт, он не сможет прочитать cookie сессии. Для cookie входа этот атрибут обязателен.
SameSite. Управляет отправкой cookie при запросах с чужих сайтов. Значение Strict — только со своего сайта, Lax — ещё и при переходе по ссылке извне, None — всегда, но тогда обязателен Secure. Без атрибута SameSite cookie по умолчанию считается Lax.
Минимальный набор для cookie авторизации выглядит так:
Set-Cookie: session_id=a3fwa; Secure; HttpOnly; SameSite=Lax; Path=/
Остальные проверки безопасности сайта, от админки до обновлений CMS, собраны в материале проверка сайта на безопасность.
Cookie входа без Secure и HttpOnly — открытая дверь в кабинет клиента: её можно перехватить или прочитать скриптом.
Cookie и 152-ФЗ: когда это персональные данные
Закон «О персональных данных» не называет cookie отдельно. Работает общее определение из статьи 3: персональные данные — любая информация, относящаяся к прямо или косвенно определённому или определяемому физическому лицу.
Отсюда практический вывод. Cookie с идентификатором языка или содержимым корзины гостя сами по себе человека не определяют. Но если идентификатор из cookie связан с аккаунтом, телефоном из заявки или email из рассылки, по нему можно определить конкретного человека. Тогда данные подпадают под закон со всеми обязанностями оператора.
Аналитика и реклама — серая зона. Счётчик Метрики собирает обезличенную статистику, но идентификатор браузера, IP-адрес и поведение вместе с данными из формы заявки уже позволяют связать визиты с человеком. Поэтому счётчики и рекламные cookie разумно описывать в политике обработки данных наравне с формами.
Из закона прямо следуют две обязанности. Оператор, который собирает данные через сайт, обязан опубликовать политику обработки персональных данных на страницах этого сайта. А согласие, если оно требуется, должно быть конкретным, предметным, информированным, сознательным и однозначным и оформляться отдельно от других документов. Остальные требования и ответственность за нарушения разобраны в статье про защиту персональных данных на сайте.
Нужно ли предупреждать о cookie на сайте?
Прямой нормы «повесьте баннер о cookie» в российском законе нет. Предупреждение нужно как часть исполнения 152-ФЗ: если cookie вместе с другими данными позволяют определить человека, посетитель должен знать, что и зачем вы собираете, а политика должна быть опубликована.
Для сайтов с посетителями из Европы требования строже. MDN перечисляет среди требований европейских правил уведомление пользователей о том, что сайт использует cookie, возможность отказаться от части или всех cookie и возможность пользоваться основной частью сервиса без них.
Как поступить на практике:
- Только технические cookie — вход, корзина, язык. Уведомление полезно для прозрачности, но без счётчиков и рекламы риски минимальны.
- Метрика, рекламные пиксели, ретаргетинг — нужны баннер со ссылкой на политику и описание счётчиков в самой политике.
- Посетители из ЕС — нужен баннер с выбором: принять все, отклонить необязательные, настроить по категориям.
Мнение. Если на сайте стоит Метрика или рекламный пиксель и есть форма заявки, показывайте баннер со ссылкой на политику. Фраза «продолжая пользоваться сайтом, вы соглашаетесь» плохо сочетается с требованием, чтобы согласие было однозначным, поэтому кнопка «Принять» честнее.
Что написать в уведомлении и политике о cookie
Уведомление — короткая плашка внизу или вверху экрана. Его задача — сказать, что сайт использует cookie, зачем, и дать ссылку на подробности. Пример текста: «Мы используем файлы cookie, чтобы сайт работал, и счётчики аналитики, чтобы его улучшать. Подробнее — в политике обработки данных» и кнопка «Принять».
Подробности живут на отдельной странице — политике cookie или в разделе политики обработки персональных данных. Что в ней указать:
Пример такой страницы можно посмотреть у нас: политика использования cookie. Её стоит обновлять при каждом новом счётчике или виджете, иначе описание быстро разойдётся с реальностью.
Как посмотреть, какие cookie ставит ваш сайт
Начинать стоит с инвентаризации: часто владельцы не знают, сколько счётчиков и виджетов накопилось за годы. Проверка занимает несколько минут и не требует программиста.
Откройте сайт в браузере в режиме инкогнито и нажмите F12. По подсказке MDN, cookie видны во вкладке Storage в инструментах разработчика Firefox и во вкладке Application в Chrome. В списке будут имя, домен, срок жизни и флаги Secure, HttpOnly и SameSite у каждой cookie.
Обратите внимание на три вещи. Первое — чужие домены: это сторонние сервисы, их надо перечислить в политике. Второе — cookie входа без Secure и HttpOnly: это задача разработчику. Третье — cookie, которые ставятся до нажатия кнопки в баннере: если вы обещаете не включать аналитику без согласия, так быть не должно.
Если проверка показала хаос — десятки cookie от забытых виджетов, счётчики, которых никто не смотрит, — наведите порядок перед тем, как писать политику. Такую чистку и настройку баннера мы делаем в рамках поддержки сайта.
Источники
- Using HTTP cookies — MDN Web Docs, Mozilla
- RFC 6265. HTTP State Management Mechanism — IETF
- Временные файлы (cookie), устанавливаемые Яндекс Метрикой — Яндекс
- Статья 3 Федерального закона № 152-ФЗ «О персональных данных» — Гарант
- Статья 9 Федерального закона № 152-ФЗ «О персональных данных» — Гарант
- Статья 18.1 Федерального закона № 152-ФЗ «О персональных данных» — Гарант