В Европе cookie-баннеры живут с 2018 года (GDPR), а в России — требование РКН последних лет. Если у вас подключена Яндекс.Метрика или Google Analytics, а баннера нет — это штраф до 300 000 ₽ для ООО по ч. 1 ст. 13.11 КоАП РФ. Разбираем, что такое cookie с точки зрения закона, как правильно сделать баннер и готовый код.
ООО: до 300 000 ₽ · ИП: до 40 000 ₽ · Физлицо: до 8 000 ₽
Статья: ч. 1 ст. 13.11 КоАП РФ.
Почему cookies — это персональные данные
Сами по себе cookies — это просто файлы, которые сайт оставляет в браузере. Но в связке с другими данными (IP, User-Agent, история просмотров) они позволяют идентифицировать конкретного пользователя. Поэтому Роскомнадзор относит их к персональным данным в смысле 152-ФЗ.
Это значит: обработка cookies (в том числе через Яндекс.Метрику, Google Analytics, пиксели VK и Facebook) подпадает под 152-ФЗ — нужны все те же согласия, политика и уведомление РКН.
Какие cookies бывают
- Технические (strictly necessary) — без них сайт не работает. Авторизация, корзина, сохранение языка. Для них согласие не нужно.
- Аналитические — Яндекс.Метрика, Google Analytics. Считают посетителей, источники трафика. Требуют согласия.
- Маркетинговые — пиксели ретаргетинга (VK, Яндекс, myTarget). Отслеживают пользователя между сайтами. Строго с согласия.
- Функциональные — сохранение настроек, темы оформления. Обычно требуют согласия.
Что должен делать правильный cookie-баннер
- Появляться при первом визите. До получения согласия НЕ должны срабатывать аналитика и маркетинговые скрипты.
- Информировать, что сайт использует cookies, и зачем.
- Давать три опции: принять, отклонить, настроить. Минимум — принять и отклонить.
- Иметь ссылку на политику с деталями.
- Запоминать выбор пользователя (обычно в localStorage).
- Позволять изменить решение в любой момент — отдельная кнопка в футере или настройках.
Проверьте свой сайт бесплатно
Введите адрес — за 30 секунд покажем все нарушения и суммы штрафов.
Готовый код cookie-баннера для Next.js / React
Упрощённый пример, совместимый с React 18+. Сохраняет выбор в localStorage и показывается только при первом визите.
"use client";
import { useEffect, useState } from "react";
export function CookieBanner() {
const [visible, setVisible] = useState(false);
useEffect(() => {
if (!localStorage.getItem("cookie_consent")) {
setVisible(true);
}
}, []);
function accept() {
localStorage.setItem("cookie_consent", "accepted");
setVisible(false);
// Тут можно подгружать аналитику/пиксели
}
function decline() {
localStorage.setItem("cookie_consent", "declined");
setVisible(false);
}
if (!visible) return null;
return (
<div className="fixed bottom-0 inset-x-0 bg-white p-4 shadow-lg border-t">
<p>Мы используем cookie для работы сайта. Подробнее в <a href="/privacy">политике</a>.</p>
<button onClick={decline}>Отклонить</button>
<button onClick={accept}>Принять</button>
</div>
);
}Типичные ошибки при внедрении
❌ Баннер есть, но Метрика грузится до согласия
Самая частая ошибка. Скрипт Яндекс.Метрики встроен в layout.tsxили head, а баннер только декоративный. Метрика стартует до того, как пользователь что-то нажал — это обработка ПД без согласия.
❌ Нет кнопки «Отклонить»
Только одна кнопка «ОК» — неравнозначный выбор. РКН трактует как навязывание согласия.
❌ Баннер-модал блокирует сайт
Пользователь не может читать сайт, пока не примет cookies. Согласие «под дулом» — незаконно. Должна оставаться возможность пользоваться сайтом и с отказом.
❌ Баннер показывается только на главной
Если пользователь зашёл сразу на внутреннюю страницу (из поиска) — он не увидит баннер. Должен показываться везде до первого решения.
Политика cookies — отдельный документ или часть общей?
Можно и так, и так. В политике конфиденциальности должен быть раздел про cookies, где перечислены:
- Какие cookies используются
- Цели использования
- Сроки хранения
- Третьи лица (Яндекс, Google)
- Как отключить
Для бо́льшей прозрачности можно вынести в отдельную страницу /cookies-policy.
Как проверить, правильно ли работает ваш баннер
- Откройте сайт в режиме инкогнито
- Откройте DevTools → вкладка Network → фильтр «mc.yandex» или «google-analytics»
- Если запросы к аналитике идут ДО того как вы нажали «Принять» — нарушение
- Закройте баннер кнопкой «Отклонить»
- Перейдите на другую страницу — баннер не должен появляться, а аналитика — не должна грузиться
Или воспользуйтесь нашей автоматической проверкой — в форме ниже введите адрес, и сервис за 30 секунд проверит, есть ли баннер, и правильно ли он работает.