Коротко. Проверка сайта на соответствие 152-ФЗ занимает десять минут и не требует юриста. Нужен браузер и готовность честно посмотреть на свой сайт. Ниже список из шести пунктов, по которому я проверил собственный сайт и нашёл пять нарушений. Притом что на этом же сайте продаю приведение чужих сайтов к 152-ФЗ.
Проверка сайта на 152-ФЗ: шесть пунктов
Сначала сам список, чтобы не листать. Разбор каждого пункта на моих ошибках идёт дальше.
- Прочитайте свою политику конфиденциальности целиком. Не глазами автора, а глазами проверяющего: каждое утверждение — правда ли это сегодня?
- Посчитайте все места, где сайт принимает что-то от посетителя: формы, обратный звонок, подписка, чат, калькулятор, квиз. Каждое описано в политике?
- Откройте инструменты разработчика (F12), вкладку сетевых запросов, и загрузите свою главную. Уходят ли запросы к аналитике до того, как вы нажали кнопку в баннере?
- Найдите на баннере кнопку отказа. Нет — нарушение.
- Найдите способ отозвать согласие. Нет — тоже.
- Посмотрите дату самой старой записи с персональными данными в базе. Сравните со сроком хранения из политики.
Шестой пункт самый показательный: сроки пишут все, исполняет почти никто. У меня по этому списку не прошло пять пунктов из шести.
Первые пять пунктов можно не проверять руками: бесплатная проверка сайта обходит до 15 страниц и показывает, среди прочего, риски по 152-ФЗ — нет политики, формы без согласия. Шестой пункт она не увидит: в вашу базу у неё доступа нет, туда придётся заглянуть самому.
С чего началось
Роскомнадзор внёс меня в реестр операторов персональных данных. Уведомление я подал 1 сентября, запись появилась через неделю. Формально — всё, обязанность исполнена.
Перед тем как включать Яндекс Метрику, я решил перечитать свою же политику конфиденциальности. Не из осторожности, а по делу: в политике было написано, что аналитики на сайте нет, и этот абзац предстояло переписать.
Переписыванием одного абзаца дело не кончилось.
Что нашлось
Политика описывала сайт-визитку: «Форм на сайте нет. Контакт — через Telegram или почту». Дальше, в разделе о том, что сайт не собирает: «Имя, телефон и другие персональные данные через сайт не запрашиваются и не сохраняются».
На сайте при этом работал чат-помощник. Он сохранял переписку в базу вместе с IP-адресом и адресом страницы, клал идентификатор сессии в браузер при первой же загрузке и умел показывать форму «оставьте имя и контакт». Каждое сообщение уходило в языковую модель стороннего провайдера.
Пять расхождений между текстом и кодом:
- «форм нет» — форма была;
- «данные не сохраняются» — сохранялись, в том числе IP;
- «сайт не использует cookie» — в браузере лежали три ключа;
- «сведения не передаются» — переписка уходила в чужую модель;
- «трансграничной передачи нет» — уведомление о контакте уходило в мессенджер с юрлицом в ОАЭ.
Почему я этого не видел
Политику я писал в августе, когда сайт действительно был визиткой. Чат-помощник появился позже. Между этими двумя событиями не было момента, в который кто-то сказал бы «а теперь перечитай документ».
Механизм тут простой. Документ пишется под состояние сайта на конкретный день и с этого дня начинает устаревать. Код меняется каждую неделю, политика не меняется никогда. Через полгода они описывают разные сайты.
Отдельно неприятное. В шапке чата у меня было написано: «Не оставляйте в чате телефон, почту и имя, я их не сохраняю. Переписка хранится обезличенно». Я это писал как заботу о посетителе. Код сохранял сообщения дословно, вместе с IP. Обещание, которое опровергается одной строкой кода, при проверке хуже, чем отсутствие обещания. Первое это недостоверные сведения, второе просто пробел.
Самое частое нарушение: баннер про cookie
У меня стоял такой баннер: текст про cookie, кнопка «Понятно» и фраза «Продолжая пользоваться сайтом, вы соглашаетесь с этим».
В описании услуги на моём же сайте написано дословно: «Формулировка про „продолжая пользоваться сайтом“ согласием не считается. Ставлю чекбоксы в формах и баннер, где отказ работает». Я продавал исправление ровно той ошибки, которая висела у меня внизу экрана.
Почему это не согласие. Согласие по закону — активное действие. Прокрутка страницы действием не является: человек не выбирал, он просто читал. Кнопка «Понятно» тоже не выбор: она одна, отказаться нечем.
Второе, более серьёзное. Скрипт аналитики у меня стоял в общем шаблоне страницы и грузился всегда, а баннер просто рисовался поверх. То есть cookie ставились до того, как посетитель что-либо нажал. Даже идеальный текст на баннере этого не исправляет: к моменту показа данные уже собраны.
Как выглядит правильный баннер
- две кнопки — «Принять» и «Отклонить», одинакового размера и заметности;
- счётчик не загружается, пока не нажали «Принять»;
- выбор запоминается, на каждой странице не переспрашивает;
- отозвать согласие можно так же просто, как дать — ссылкой в подвале.
Последний пункт пропускают чаще всего. Согласие даётся одной кнопкой, а отзывается письмом на почту и десятью рабочими днями ожидания. По закону отзыв не может быть сложнее.
Сроки хранения, которые никто не исполняет
В моей политике был срок: переписка хранится не дольше трёх лет. Красивая строчка. Механизма удаления в коде не было, и таблицы росли вечно: единственная уборка чистила счётчики антифлуда.
Это отдельный класс проблем: обещание в документе без кода, который его исполняет. Проверяется элементарно: открыть базу и посмотреть дату самой старой записи. Если она старше заявленного срока, документ врёт.
Второе, что вскрылось рядом. Человек имеет право потребовать удалить свои данные. У меня не было способа их найти: в таблице контактов лежал идентификатор сессии, а человек знает свой телефон, но не знает никакого идентификатора. Пришлось бы искать руками через базу. Теперь поиск идёт по контакту, и вместе с контактом удаляется переписка, из которой он пришёл.
Ещё одно: политика была закрыта от поиска
У страницы с политикой стоял запрет на индексацию. Логика была SEO-гигиеническая: служебная страница, нечего разбавлять индекс.
Закон требует обеспечить неограниченный доступ к политике. Ссылка в подвале формально доступ даёт, но страница, которую нельзя найти поиском, этому требованию противоречит. Смешнее всего, что в самом тексте политики было написано: «Актуальная редакция всегда доступна без ограничений». Под метатегом, запрещающим её показывать.
Что я сделал
Порядок был такой: сначала остановить сбор без основания, потом привести документ, потом всё остальное.
- галочка согласия в форме контакта, кнопка заблокирована, пока её нет;
- сервер отклоняет контакт без согласия — форма может быть обойдена, запрос приходит напрямую;
- в базу пишется факт согласия: когда и под каким текстом. Тексты меняются, а доказывать придётся то, что видел конкретный человек;
- удаление по срокам раз в сутки, автоматически;
- баннер с двумя кнопками, аналитика грузится только после «Принять»;
- политика переписана под то, что делает код, с перечнем данных и сроков;
- запрет индексации снят.
Запись вебвизора я оставил выключенной. Он пишет содержимое полей, а на сайте есть форма контакта — то, что человек печатает, попадёт в запись до того, как он нажмёт «отправить». Для задачи «понять, какие страницы читают» это лишнее.
Что из этого следует
Совет «наймите юриста» тут помогает слабо. Юрист напишет документ, и через полгода вы окажетесь там же, где был я: документ описывает сайт на день написания, а сайт живёт дальше.
Помогает привязать документ к коду. Срок хранения в политике и срок в настройках должны быть одним числом, а не двумя независимыми. Список собираемых данных обновляется тогда же, когда на сайте появляется новая форма. У меня теперь в коде висит комментарий: сроки обязаны совпадать с политикой, расхождение и есть то, что спрашивают при проверке.
Правило простое. Добавили на сайт что-то, что принимает данные от посетителя, в тот же день откройте политику. Не через месяц.
Если возиться с этим некогда, я привожу сайты к 152-ФЗ: политика под реальный код, баннер с рабочим отказом, журнал согласий, сроки хранения, которые исполняются сами. Свой сайт я привёл в порядок последним из всех, и горжусь тут явно не этим.
Как согласие, журнал и сроки хранения выглядят в работающем коде — в разборе чат-виджета.