frame-ancestors — отдельная директива в составе CSP. Для неё нет подстановки default-src; общая политика запрета загрузок не даёт автоматически запрет внешнего встраивания.
Почему это важно
Разрешённый непосредственный контейнер ещё не подтверждает допустимость внешнего контейнера. При интеграции портала и вложенных интерфейсов нужно проверять всю цепочку и способ доставки политики.
Что подтверждено
frame-ancestors ограничивает, кто может встроить защищаемый ресурс через frame, iframe, object или embed. Она не выбирает, какие дочерние страницы этот ресурс сам может загружать: это другое направление ограничения.
Граница применимости: Проект CSP Level 3 от 13 августа 2026 года, 6.4.2 и 6.1.5. Директива защищаемого ответа сопоставляется с его предками; допустимость самих сетевых ответов оценивается отдельно.
При проверке встраивания алгоритм frame-ancestors проходит по источникам всех документов-предков. Несоответствие хотя бы одного из них даёт результат «запрещено»: совпадения только непосредственного родителя недостаточно. Встраивание при этом блокируется в политике с блокирующим режимом, а политика только для отчётов о том же нарушении сообщает.
Граница применимости: Проект CSP Level 3 от 13 августа 2026 года, 6.4.2.1. Результат проверки для вложенного документа с обычным сетевым адресом; блокирующий эффект зависит от режима политики.
frame-ancestors не наследует значение default-src. Поэтому одна директива default-src со значением none не запрещает другим страницам встраивать этот ресурс.
Граница применимости: Проект CSP Level 3 от 13 августа 2026 года, 6.4.2. Оценивается именно эта политика; отдельный X-Frame-Options или другая политика могут дать собственное ограничение.
Клиент обязан игнорировать frame-ancestors, если она объявлена через элемент meta. Чтобы эта директива ограничивала встраивание по описанному механизму, её доставляют в политике HTTP-ответа, а не только внутри HTML.
Граница применимости: Проект CSP Level 3 от 13 августа 2026 года, 6.4.2. Требование игнорировать относится к этой директиве в meta, а не ко всем возможным директивам CSP.
Значения 'none' и 'self' у frame-ancestors примерно соответствуют X-Frame-Options DENY и SAMEORIGIN. Если ответ содержит frame-ancestors в блокирующей политике, модель CSP 3 и HTML требует игнорировать X-Frame-Options; политика только для отчётов не удовлетворяет этому условию.
Граница применимости: Проект CSP Level 3 от 13 августа 2026 года, 6.4.2.2. Сопоставление режимов в модели документа, а не измерение поддержки конкретных версий браузера. Примерное соответствие не объявлено полной эквивалентностью всех реализаций.
Не путать
Ограничение предков решает, допустимо ли встраивание. Различие источников и ограничения доступа к данным документов не являются тем же решением.
Что проверить
- Определите защищаемый ответ и направление встраивания.
- Проверьте доставку директивы в HTTP-политике.
- Различайте блокирующий режим и режим отчётов.
- Перечислите все источники предков, а не только родителя.
- Не подставляйте default-src вместо отсутствующего frame-ancestors.
- Проверьте совместную доставку X-Frame-Options.
- Испытайте нужные версии клиентов отдельно от чтения проекта стандарта.
Первоисточники
Content Security Policy Level 3
World Wide Web Consortium · W3C Working Draft, 13 August 2026
Прочитана сохранённая локальная HTML-копия. Алгоритмы разделов 6–7 отделены от ненормативных примеров раздела 8; редакция проекта не означает проверку поддержки каждого браузера.
Открыть первоисточникContent Security Policy Level 3
World Wide Web Consortium · W3C Working Draft, 5 May 2026
Определяет CSP directives, source lists, nonce-source и browser enforcement для загрузки и исполнения content.
Открыть первоисточникThe Web Origin Concept
Internet Engineering Task Force · RFC 6454, December 2011
Определяет origin как scheme, host и port и описывает origin-based browser isolation model.
Открыть первоисточник