Cookie: что это и как управлять
Cookie (куки) — небольшие файлы данных, сохраняемые браузером. Используются для авторизации, аналитики и персонализации. GDPR требует согласия на аналитические куки.
Что такое Cookie
Cookie (куки, HTTP cookie) — небольшой фрагмент данных, который веб-сервер отправляет браузеру, а браузер сохраняет и отправляет обратно при следующих запросах к тому же серверу.
Cookie позволяют серверу «запоминать» информацию между запросами: сессию авторизации, настройки пользователя, данные корзины.
Как работают Cookie
1. Пользователь авторизуется на сайте
2. Сервер отправляет:
Set-Cookie: session_id=abc123; HttpOnly; Secure; SameSite=Strict
3. Браузер сохраняет cookie
4. При следующем запросе:
Cookie: session_id=abc123
5. Сервер идентифицирует пользователя
Типы Cookie
По назначению
| Тип | Назначение | Согласие GDPR | |-----|-----------|--------------| | Необходимые | Авторизация, корзина, безопасность | Не требуется | | Аналитические | Google Analytics, Яндекс.Метрика | Требуется | | Рекламные | Ретаргетинг, AdSense | Требуется | | Функциональные | Настройки языка, темы | Часто не требуется |
По сроку жизни
- Session cookies — удаляются при закрытии браузера
- Persistent cookies — хранятся до истечения Max-Age/Expires
Атрибуты безопасности Cookie
Set-Cookie: session=abc123;
HttpOnly; /* недоступен через JavaScript */
Secure; /* только через HTTPS */
SameSite=Strict; /* не отправляется с других сайтов */
Max-Age=3600; /* срок жизни 1 час */
Path=/; /* доступен для всех путей */
Domain=example.com /* доступен для домена и поддоменов */
SameSite атрибут
| Значение | Поведение |
|---------|---------|
| Strict | Cookie не отправляется с других сайтов |
| Lax | Отправляется при навигации, не в fetch/XHR |
| None | Всегда отправляется (требует Secure) |
GDPR и Закон о Cookie
Согласно GDPR (Европа) и ФЗ-152 (Россия), для аналитических и рекламных cookie требуется явное согласие пользователя:
<!-- Consent Banner (упрощённый пример) -->
<div id="cookie-banner">
Мы используем cookie для аналитики.
<button onclick="acceptCookies()">Принять</button>
<button onclick="rejectAnalytics()">Только необходимые</button>
</div>
function acceptCookies() {
localStorage.setItem('cookie-consent', 'all');
initGoogleAnalytics(); // загружаем аналитику только после согласия
document.getElementById('cookie-banner').remove();
}
Cookie и безопасность
Основные угрозы:
- XSS (Cross-Site Scripting) — кража cookie через вредоносный JS → защита:
HttpOnly - CSRF (Cross-Site Request Forgery) — подделка запросов → защита:
SameSite=Strict+ CSRF-токены - Перехват трафика — кража cookie по HTTP → защита:
Secure+ HTTPS
Third-party cookies и их упразднение
Google Chrome поэтапно отказывается от третьесторонних cookie (сторонних трекеров). Safari и Firefox уже блокируют их. Это меняет подходы к:
- Аналитике (переход на first-party данные)
- Ретаргетингу (новые механизмы)
- Аутентификации (OIDC, OAuth)
Проверка Cookie на reChecker
Используйте Анализатор Cookie для анализа cookie вашего сайта. Инструмент покажет:
- Все установленные cookie
- Их атрибуты (HttpOnly, Secure, SameSite)
- Срок жизни каждого cookie
- Потенциальные проблемы безопасности
FAQ
Cookie влияют на производительность сайта? Незначительно. Cookie добавляются к каждому HTTP-запросу к домену. Хранение аналитических данных в cookie увеличивает размер заголовков. Для большой аналитики лучше localStorage или IndexedDB.
Cookie и localStorage — в чём разница? Cookie отправляется серверу при каждом запросе, доступен с сервера. localStorage — только в браузере, не передаётся серверу. Для авторизации — cookie (сервер проверяет). Для клиентских настроек — localStorage.
Нужен ли cookie-баннер если сайт использует только Google Analytics? Да, по GDPR. Google Analytics использует аналитические cookie требующие согласия. Исключение: если используется Google Analytics 4 в режиме конфиденциальности (без cookie) с согласованным режимом.
Попробуйте инструмент
Проверьте cookie на вашем сайте с помощью бесплатного инструмента.
Анализатор Cookie →