Перейти к содержанию

Сторонний browser-код и privacy

Требования этого документа применяются к сторонним scripts, SDK, widgets, tag manager и связанным cookies или browser storage в frontend-приложении. Целостность источника дополнительно регулируется FE-SEC-006, а телеметрия — FE-OBS-007. Уровни обязательности определены в корневом README.md.

FE-EXT-001. Реестр и изменение стороннего кода

Уровень: MUST

Применяется к: каждому стороннему browser-компоненту

Проект должен иметь версионируемый закрытый реестр с владельцем, назначением, источником и версией кода, условиями загрузки, читаемыми и записываемыми категориями данных, сетевыми назначениями и способом отключения компонента. Фактические CSP, allowlist и browser-запросы должны соответствовать реестру.

Tag manager не должен позволять публиковать отсутствующий в реестре код. Изменение его container, rule или template должно проходить тот же review и сопоставляться с release либо отдельным аудируемым изменением.

Обоснование

Сторонний код выполняется с полномочиями страницы, а изменение tag manager вне репозитория способно обойти review приложения.

Проверка

  • сопоставление реестра с bundle, DOM, CSP и сетевыми запросами;
  • тест публикации незарегистрированного tag;
  • review владельца, версии и истории изменения.

Исключения

Browser-возможность, полностью реализованная кодом проекта без внешней загрузки и независимого получателя данных, не является сторонним компонентом.

Уровень: MUST

Применяется к: сторонней обработке, для которой политика требует consent

До положительного consent приложение не должно загружать соответствующий код, отправлять ему запрос, создавать его cookie или запись browser storage. Отсутствующее решение и отказ должны отличаться от согласия. Consent должен быть связан с закрытыми назначениями и категориями данных, а не разрешать неограниченную будущую обработку.

После отзыва приложение должно прекратить новые загрузки и передачу, удалить контролируемые им локальные identifiers и применить опубликованный механизм отзыва получателя, если он предусмотрен контрактом. Обязательное техническое storage должно быть отделено от необязательного и не должно повторно использоваться для другой цели.

Обоснование

Блокировка только прикладного события после загрузки SDK не прекращает его собственные cookies, запросы и автоматический сбор.

Проверка

  • network- и storage-тест до решения, после allow, deny и revoke;
  • тест независимого consent для разных назначений;
  • проверка удаления локальных identifiers и вызова механизма отзыва.

Исключения

Обработка без consent допустима только для закрытого назначения и данных, которые разрешены принятой политикой на другом основании.

FE-EXT-003. Ограниченное влияние и отключение

Уровень: MUST

Применяется к: загрузке и выполнению стороннего browser-компонента

Загрузка, очередь вызовов и retry должны иметь конечные границы. Недоступность, медленный ответ или исключение стороннего компонента не должны блокировать сценарий, объявленный проектом критичным, отменять его результат или создавать неограниченное потребление ресурсов.

Production-конфигурация должна позволять отключить компонент без изменения прикладного контракта и без предоставления ему новых данных. Отключение не должно обходить cleanup, требуемый FE-EXT-002, или оставлять приложение в неопределённом состоянии.

Обоснование

Сторонний runtime находится вне контроля проекта и не должен становиться обязательной синхронной зависимостью основного сценария.

Проверка

  • тест timeout, исключения, блокировки и переполнения очереди;
  • e2e-тест каждого объявленного критичного сценария при недоступном и отключённом компоненте;
  • проверка прекращения сетевых запросов после отключения.

Исключения

Сторонняя identity или payment-граница MAY быть обязательной для отдельного сценария, если отказ имеет конечный пользовательский результат и не блокирует остальное приложение.