Сайт по испанским правилам: юридические страницы, реестр обработки и журнал согласий
Малому бизнесу в Испании нужны юридическая информация, политика конфиденциальности, политика cookie, реестр обработки данных и доказательство каждого выбора посетителя. Мы встраиваем всё это в сам сайт, чтобы документы совпадали с тем, что сайт делает на самом деле.
Задача
Любой сайт компании в Испании подчиняется сразу трём законам: GDPR, испанскому закону о защите данных (LOPDGDD) и закону об электронной торговле (LSSI-CE). На практике это значит: страница с юридической информацией, где указаны официальное имя владельца, его налоговый номер и адрес; политика конфиденциальности; политика cookie; баннер, который спрашивает разрешения до любой аналитики; доказательство выбора каждого посетителя. А за кулисами нужен реестр операций по обработке данных, который может запросить проверка.
Большинство небольших сайтов закрывают этот вопрос текстом из генератора политик. Такие тексты обычно описывают чужой бизнес: не те подрядчики, не те сроки хранения, а веб-студия представлена так, будто это она отвечает перед посетителем. Если же сайт загружает Google Analytics или карту Google ещё до того, как посетитель что-то нажал, баннер становится просто украшением.
Мы хотели, чтобы у каждого нашего сайта были документы, которые описывают именно его, и код, который делает то, что обещают документы. Сейчас этот подход работает на сайте сервиса мелкого ремонта, на сайте компании по прокату автомобилей и на сайте барбершопа на Коста-Бланке.
Юридические страницы из одного источника
Все три документа - юридическая информация, политика конфиденциальности и политика cookie - берут данные из одного файла в коде сайта. В нём описаны две стороны и их роли:
- Клиент выступает ответственным за обработку: он решает, зачем собираются заявки, и именно к нему посетитель обращается со своими правами. Его официальное имя или название компании, налоговый номер, адрес, контакты, а для компании ещё и регистрационные данные записаны один раз и появляются везде, где они нужны документу.
- Yatoday выступает обработчиком: мы делаем и размещаем сайт и обслуживаем платформу, которая принимает заявки и хранит записи о согласиях. Делаем мы это только по поручению клиента, по договору об обработке данных (ст. 28 GDPR). Документы говорят об этом прямо и ссылаются на нашу собственную юридическую информацию и политику конфиденциальности, а не повторяют наши реквизиты.
Раз данные хранятся в одном месте, три страницы не могут противоречить друг другу. На сайте сервиса ремонта тот же адрес ещё и разложен на улицу, индекс и город для разметки местного бизнеса, которую читает Google. Поэтому в юридической информации и в данных для поисковиков адрес всегда один и тот же.
Когда мы создаём новый сайт из нашего шаблона, все обязательные поля в этом файле сначала заполнены строкой “PENDIENTE DE COMPLETAR” (“заполнить”). Она нарочно бросается в глаза: если налоговый номер не внесён, это видно прямо на странице, а не скрыто за выдуманным номером.
Документы пишутся под каждый бизнес, а не заполняются по шаблонному тексту. Политика компании проката объясняет договор аренды и реестр путешественников, который прокатные компании по закону передают в Министерство внутренних дел. В ней же сказано, что на сайте нет форм, поэтому обработчик работает только с журналом согласий на cookie. Политика сервиса ремонта шаг за шагом описывает форму заявки: куда уходит заявка, как она проверяется на спам, в какую CRM попадает и кто её видит. Каждая политика перечисляет подрядчиков, которые действительно имеют доступ к данным: хостинг, CDN, отправку писем, карты. Для каждого указано, где он находится и на каком основании данные передаются за пределы ЕС. Сайт сервиса ремонта публикует юридические страницы на испанском, английском и русском и указывает, что юридическую силу имеет испанская версия.
Реестр обработки, который не отстаёт
Статья 30 GDPR требует вести реестр операций по обработке данных, в Испании его называют RAT. Его не публикуют, но именно его проверка запрашивает первым и именно в нём первым делом находит расхождения.
У каждого сайта реестр лежит в том же репозитории, что и юридические страницы. В нём перечислены все операции: обработка заявок на расчёт, выполнение работ и выставление счетов, защита от спама, журнал согласий на cookie, веб-аналитика, карта зоны обслуживания и ответы на запросы о правах. Для каждой указаны цель, правовое основание, чьи данные и какие именно, получатели и срок хранения. Там же записаны рассуждения, которые будет искать проверяющий. Например, журнал согласий опирается на юридическую обязанность доказать согласие, а не на само согласие. Иначе отзыв согласия заставил бы удалить доказательство того, что оно вообще было дано.
В первых строках реестра сказано, что он должен совпадать с опубликованной политикой конфиденциальности. На практике смена подрядчика или срока хранения вносится в реестр и во все три юридические страницы одним коммитом.
Небольшой скрипт превращает текстовый реестр в свёрстанный PDF с нумерацией страниц, готовый к подписи или отправке. Он использует уже установленный движок браузера. PDF всегда собирается из текста и никогда не правится вручную, поэтому две версии не могут разойтись.
Баннер cookie, который работает всерьёз
Баннер входит в нашу библиотеку компонентов и общий для всех сайтов.
Google Consent Mode v2 переводится в режим “запрещено” для аналитики и всех трёх рекламных сигналов до загрузки чего-либо, то есть раньше, чем может запуститься любой тег Google.
Но и сам Google не загружается, пока посетитель не согласится. С одним только Consent Mode Google Tag Manager всё равно скачивался бы, и оставалось бы надеяться, что Google соблюдает запрет. Наш загрузчик вообще не обращается к нему, пока посетитель не нажмёт “Принять все”, поэтому тот, кто отказался, не передаёт Google даже свой IP-адрес. Это видно в ролике выше: до нажатия к Google не уходит ни одного запроса. После нажатия загружается Tag Manager, и Analytics получает первое событие: аналитика разрешена, реклама запрещена.
Каждый сайт указывает, для чего на самом деле использует cookie, и разрешить можно только заявленное. Сайт, который только считает посещения, не может передать Google согласие на рекламу даже после “Принять все”. При единственной цели, по руководству испанского регулятора по cookie, достаточно баннера с двумя кнопками: принять или отклонить.
Каждый выбор оставляет доказательство. Баннер создаёт случайный идентификатор согласия и отправляет выбор на нашу платформу вместе с категориями, версией политики, страницей, языком и браузером. Если посетитель передумает, новый выбор добавляется в историю того же идентификатора. Круглая кнопка в углу показывает посетителю дату и идентификатор его согласия и позволяет его изменить.
Карты без cookie
Встроенная карта Google ставит cookie Google ещё до того, как посетитель что-либо выбрал. На сайтах сервиса ремонта и проката автомобилей мы заменили её картой OpenStreetMap, которая ничего не сохраняет на устройстве посетителя. IP-адрес посетителя при этом всё равно виден фонду OpenStreetMap, поэтому политика конфиденциальности и реестр называют его получателем данных. Согласие для такой карты не требуется, потому что на устройстве ничего не сохраняется. На сайте проката карта загружает изображения, только когда доходит до экрана.
Технологии
- Сайты: Astro (статическая сборка), Tailwind CSS 4, @yatoday/astro-ui
- Юридические страницы: MDX, читающий один типизированный файл данных на сайт
- Реестр обработки: текст в репозитории → PDF через Chrome без интерфейса (CDP)
- Согласие: CookieConsent из astro-ui, Google Consent Mode v2, загрузка GTM только после согласия
- Журнал и история согласий: API платформы Yatoday (Laravel)
- Карты: Leaflet + OpenStreetMapРезультат
Каждый сайт выходит с юридической информацией, политикой конфиденциальности и политикой cookie, которые описывают именно этот бизнес и его настоящих подрядчиков: клиент назван ответственным за обработку, Yatoday - обработчиком. Реестр обработки лежит рядом, в том же репозитории, и превращается в PDF одной командой. Баннер cookie не пускает Google на страницу, пока посетитель не согласится, держит рекламные сигналы выключенными, когда сайт только считает посещения, и сохраняет датированную запись о каждом выборе.




