Реализация уведомления о cookie с соблюдением законодательства

уведомления о cookie Верстка
Согласно требованиям GDPR и российского закона №152-ФЗ, сайты обязаны информировать пользователей о сборе данных через cookie. Разберемся для чего и как это сделать.

Правовые основы

GDPR (Общий регламент по защите данных)

  • Обязательное согласие пользователей при обработке данных, включая cookie, если сайт ориентирован на аудиторию ЕС.
  • Необходимо предоставить информацию о целях сбора данных и ссылку на политику конфиденциальности.

Российский закон №152-ФЗ

  • Статья 18 пункт 4 освобождает от необходимости получения явного согласия, если сайт разместил уведомление о сборе данных.
  • Рекомендуется всё же получать согласие пользователя для минимизации юридических рисков.

Техническая реализация

HTML-структура

<!-- START Cookie-Alert -->
<div id="cookie_note">
    <p>Продолжая пользоваться сайтом, вы соглашаетесь на обработку файлов cookie и других пользовательских данных в соответствии с <a href="/policy.html" target="_blank">политикой конфиденциальности</a>. Заблокировать использование cookies сайтом можно в настройках браузера.</p>
    <button class="button cookie_accept btn btn-primary btn-sm">Понятно</button>
</div>
<!-- END Cookie-Alert -->

CSS-стили

#cookie_note {
    display: none;
    position: fixed;
    z-index: 100;
    bottom: 15px;
    left: 50%;
    max-width: 90%;
    transform: translateX(-50%);
    padding: 20px;
    background-color: white;
    border-radius: 4px;
    box-shadow: 2px 3px 10px rgba(0, 0, 0, 0.4);
}

#cookie_note p {
    margin: 0;
    font-size: 0.7rem;
    text-align: left;
    color: black;
}

#cookie_note .btn-sm {
    display: block;
    margin: 0 auto;
}

.cookie_accept {
    width: 20%;
}

#cookie_note.show {
    display: flex;
}

Примечание. Некоторые скрывают всплывающее окно на мобильном, если вы один из них, тогда замените последние правила CSS:

#cookie_note.show {
    display: flex;
}

на

@media (min-width: 576px) {
    #cookie_note.show {
        display: flex;
    }
}

@media (max-width: 575px) {
    #cookie_note.show {
        display: none; /* Скрыть уведомление на мобильных */
    }
}

JavaScript-логика

<script>
    // Установка cookie с возможностью указания срока
    function setCookie(name, value, days) {
        let expires = "";
        if (days) {
            let date = new Date();
            date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
            expires = "; expires=" + date.toUTCString();
        }
        document.cookie = name + "=" + (value || "") + expires + "; path=/";
    }

    // Получение значения cookie по имени
    function getCookie(name) {
        let matches = document.cookie.match(new RegExp(
            "(?:^|; )" + name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + "=([^;]*)"
        ));
        return matches ? decodeURIComponent(matches[1]) : undefined;
    }

    // Основная функция проверки наличия cookie
    function checkCookies() {
        const cookieNote = document.getElementById('cookie_note');
        const cookieBtnAccept = cookieNote?.querySelector('.cookie_accept');

        // Проверка наличия cookie
        if (!getCookie('cookies_policy') && cookieNote && cookieBtnAccept) {
            cookieNote.classList.add('show');
            
            // Обработчик клика на кнопку согласия
            cookieBtnAccept.addEventListener('click', function () {
                setCookie('cookies_policy', 'true', 90); // Срок хранения 3 месяца (90 дней)
                cookieNote.classList.remove('show');
            });
        }
    }

    // Инициализация
    document.addEventListener('DOMContentLoaded', checkCookies);
</script>

Как установить на сайт

  1. Вставьте HTML-блок в конец <body> шаблона сайта
  2. Добавьте CSS в файл стилей или тег <style> в <head>
  3. Подключите JavaScript-скрипт в <script> перед закрытием </body>
  4. Создайте страницу политики конфиденциальности (/policy.html) с подробной информацией о сборе данных

Возможные доработки

  • Поддержка темного режима . Добавьте класс dark-theme и соответствующие стили.
  • Кнопка закрытия . Реализуйте крестик для принудительного скрытия уведомления.
  • Анализ геолокации . Показывать уведомление только пользователям из ЕС/РФ.
  • Логирование согласий . Отправка данных о согласии в систему аналитики.

Заключение

Представленное решение соответствует требованиям законодательства и обеспечивает баланс между юридической безопасностью и удобством пользователей. Изменение срока хранения cookie на 3 месяца демонстрирует приверженность принципам минимального сбора данных и повышает доверие аудитории.

Поделиться с друзьями
Алексей

Веб-дизайнер и SEO оптимизатор. Занимаюсь созданием сайтов с 2010 года и их продвижение с 2012 года!

Оцените автора
( Пока оценок нет )
Web-Revenue.ru
Добавить комментарий