Defaults.Exposed

Defaults.ExposedИсправления › Заголовки изоляции между сайтами (COOP / CORP / COEP)

Как исправить Заголовки изоляции между сайтами (COOP / CORP / COEP)

Три необязательные инструкции браузеру, которые управляют тем, как другим сайтам разрешено взаимодействовать с вашим — открывать его во всплывающих окнах, встраивать его изображения и скрипты или тянуть его ресурсы в свои страницы. Это современное усиление, а не базовая обязательность, и по нашей оценке они информационные: их отсутствие не понижает оценку. Но два безопасных закрывают тихую дыру для фишинга и кражи трафика, а ИТ-отдел внимательного покупателя заметит их наличие.

Главное для вашего бизнеса: Два из этих трёх заголовков перекрывают изощрённый фишинг через всплывающие окна и не дают другим сайтам тянуть («хотлинкать») ваши изображения и скрипты (что стоит вам трафика и может приводить к утечке данных). Они бесплатны, занимают у разработчика около 15 минут и ничего не ломают. Третий продвинутый и может сломать аналитику, шрифты и встраивания — большинству бизнесов стоит оставить его выключенным. Ни один не влияет на оценку, так что относитесь к ним как к шлифовке, а не панике: сделайте два безопасных, пропустите рискованный, если он специально не нужен.

Во что это может вам обойтись

Почему это важно. Это заглядывающие в будущее заголовки усиления браузера. По нашей методологии все три информационные — зарегистрированы с нулём баллов и никогда не двигают оценку, — потому что это продвинутые механизмы, без которых сайт может законно работать, а один из них при неверном применении может навредить. Мы сообщаем о них, чтобы вы видели своё положение. Два безопасных (COOP и CORP) действительно стоит добавить: бесплатно, быстро, и они закрывают реальные дыры фишинга через всплывающие окна и кражи ресурсов, ничего не ломая.

Что это, простыми словами

Когда кто-то заходит на ваш сайт, его браузер не просто загружает ваши страницы изолированно — он также решает, как другим сайтам разрешено взаимодействовать с вашим. Может ли другой сайт открыть ваш во всплывающем окне и удержать его? Может ли другой сайт дотянуться и встроить ваши изображения и скрипты в свои страницы? Может ли ваш сайт безопасно использовать определённые мощные, закрытые возможности браузера?

Эти три заголовка — короткие невидимые инструкции, которые ваш сайт отправляет браузеру каждого посетителя, чтобы ответить ровно на эти вопросы. Их знают по инициалам:

Два из них (COOP и CORP) безопасно добавить и они действительно полезны. Третий (COEP) продвинутый и может что-то сломать, если включить небрежно.

Самое важное, что нужно знать сразу: по нашей оценке все три информационные. Они не влияют на вашу оценку. Отсутствие любого не стоит ничего. Мы сообщаем о них, чтобы вы видели своё положение и подобрали лёгкие победы, а не чтобы вы паниковали из-за цифры.

Во что это может вам обойтись

Это нишевые риски, не первополосные — но они реальны, а исправления бесплатны.

Что именно каждый из них делает

COOP — Cross-Origin-Opener-Policy (безопасный, рекомендуется)

Когда другой сайт открывает ваш через всплывающее окно или window.open, два окна обычно могут удерживать ссылку друг на друга. Этой связью можно злоупотребить: открывающий может манипулировать вашим окном или перенаправлять его, читать фрагменты его URL и устраивать убедительный фишинг, используя ваш настоящий домен. COOP: same-origin рвёт эту связь — ваше окно становится изолированным от всего, что открыло его из другого источника. Обычный сёрфинг, ваши внутренние ссылки и обычная навигация совершенно не затрагиваются.

Как выглядит «хорошо»: Cross-Origin-Opener-Policy: same-origin.

CORP — Cross-Origin-Resource-Policy (безопасный, рекомендуется)

По умолчанию ваши изображения, скрипты и другие файлы может встроить любой сайт где угодно. CORP: same-origin велит браузерам отказывать в межсайтовом встраивании ваших ресурсов — чтобы другие сайты не могли хотлинкать ваши материалы или тянуть их в свои страницы. Ваш сайт по-прежнему загружает свои ресурсы ровно как раньше; блокируются только внешние сайты.

Как выглядит «хорошо»: Cross-Origin-Resource-Policy: same-origin. (Если вы намеренно публикуете материалы для встраивания другими — публичный логотип, открытое API, — разработчик может ослабить это на этих конкретных ответах.)

COEP — Cross-Origin-Embedder-Policy (продвинутый, обычно оставлять выключенным)

COEP завершает «изоляцию cross-origin»: в сочетании с COOP он требует, чтобы каждый ресурс, который загружает ваша страница, явно согласился (через CORS или CORP). Сделанный правильно, он разблокирует определённые мощные возможности браузера (вроде SharedArrayBuffer) и добавляет ещё один слой против атак класса Spectre. Но поскольку он требует согласия от всего, что вы загружаете, он легко ломает сторонние инструменты — аналитику, шрифты, встроенные виджеты, — которые не были построены для согласия. Большинству сайтов разблокируемые им возможности не нужны, и им не стоит нести риск поломки.

Как выглядит «хорошо»: для редкого сайта, которому он нужен, — Cross-Origin-Embedder-Policy: credentialless — более безопасное значение, с меньшей вероятностью ломающее внешние ресурсы, чем require-corp. Для всех остальных отсутствие — это нормально, и наш отчёт за это не штрафует.

Как это исправить (бесплатно, ~15 минут)

Передайте это вашему ИТ-специалисту или веб-разработчику — исправление бесплатно. Добавление COOP и CORP — пара однострочных настроек на сервере или CDN; нет ни лицензии, ни постоянных затрат. Единственная инструкция для владельца: сделайте два безопасных и не включайте COEP без тестирования.

Это заголовки ответа, задаваемые там, где формируются ответы вашего сайта, — проще всего на CDN (например, Cloudflare), если он есть, иначе в конфиге веб-сервера.

Два безопасных заголовка (рекомендуются всем)

Cloudflare — Rules → Transform Rules → Modify Response Headers → Set:

Nginx:

add_header Cross-Origin-Opener-Policy   "same-origin" always;
add_header Cross-Origin-Resource-Policy "same-origin" always;

Apache:

Header always set Cross-Origin-Opener-Policy   "same-origin"
Header always set Cross-Origin-Resource-Policy "same-origin"

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

Продвинутый заголовок (только если он вам специально нужен)

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

Cloudflare: Transform Rules → Set Cross-Origin-Embedder-Policy = credentialless.

Nginx:

add_header Cross-Origin-Embedder-Policy "credentialless" always;

Используйте credentialless, а не require-corp — он с меньшей вероятностью сломает внешние ресурсы. Тщательно протестируйте на стенде; следите за любым сторонним скриптом, шрифтом или встраиванием, которое перестаёт загружаться. Если что-то ломается, а возможности, разблокируемые COEP, вам на самом деле не нужны, просто удалите заголовок — штрафа за его отсутствие нет.

Заметки по платформам

Частые ошибки

Заметка об оценке

Чтобы было предельно ясно: ни одна из этих трёх проверок не влияет на вашу оценку. Они зарегистрированы в нашей методологии как информационные, с нулём баллов, и отсутствие любой никогда вам ничего не стоит. Мы выводим их, потому что два безопасных — это дешёвые, настоящие улучшения, и потому что видеть полную картину полезно, — а не потому что есть цифра, которую надо защищать. Если вы ничего здесь не сделаете, ваша оценка останется ровно той же. Если добавите COOP и CORP, вы бесплатно закроете пару реальных (пусть и нишевых) пробелов. Вот правильный способ думать об этой странице: необязательная шлифовка с одной чётко помеченной ловушкой, которую стоит избегать.

Частые вопросы

Они не влияют на мою оценку — стоит ли вообще?

Два — да; один — вероятно, нет. COOP и CORP бесплатны, занимают минуты и не сломают ваш сайт — они закрывают реальные (пусть и нишевые) пути атаки, так что их стоит сделать как дешёвую гигиену. COEP продвинутый и может сломать сторонние инструменты, поэтому большинству бизнесов стоит оставить его выключенным, если им специально не нужны разблокируемые им возможности браузера. Ни один из трёх не меняет вашу оценку, так что срочности нет — относитесь к двум безопасным как к уборке, когда разработчик в следующий раз будет в коде сайта.

Я не технарь — это что-то, что я обязан сделать?

Не лично и не срочно. Поскольку они информационные, с вашей оценкой ничего плохого не случится, если вы их пропустите. Если хотите добавить два безопасных, передайте раздел «Как это исправить» тому, кто управляет вашим сайтом или CDN, — это пара однострочных настроек, и исправление бесплатно. Единственное, о чём стоит явно предупредить, — COEP: скажите им не включать его без тестирования, потому что он может сломать аналитику и встроенные виджеты.

Чем эти отличаются от заголовков, которые ВЛИЯЮТ на мою оценку?

Оценочные заголовки веб-безопасности — перенаправление на HTTPS, HSTS, Content-Security-Policy, защита от кликджекинга (X-Frame-Options) и защита от MIME-угадывания — защищают от распространённых, широко используемых атак, поэтому их отсутствие стоит баллов. Три на этой странице (COOP, CORP, COEP) — более новые, специализированные механизмы изоляции браузера. Это хорошая практика, но пока не базовое ожидание, поэтому мы сообщаем о них, не оценивая. Сначала сделайте оценочные; эти — шлифовка сверху.

Не сломает ли добавление COOP или CORP мой сайт или интеграции партнёров?

Рекомендуемые настройки (оба «same-origin») задуманы безопасными. COOP лишь обрывает связь с окнами, которые ваш сайт открывает во всплывающих окнах — обычный сёрфинг, ваши страницы и обычные ссылки не затрагиваются. CORP лишь не даёт *другим* сайтам встраивать ваши изображения и скрипты; ваш сайт загружает свои ресурсы ровно как раньше. Если вы действительно отдаёте материалы (например, публичный логотип или API), которые должны встраивать другие сайты, разработчик может задать более разрешительную настройку на этих конкретных ответах. По-настоящему рискует поломкой COEP — держите его выключенным, пока не протестировано.

Во что мне реально обходится хотлинкинг?

Когда другой сайт встраивает ваше изображение или скрипт прямо с вашего сервера вместо собственной копии, каждый посетитель его страницы скачивает это у вас — на вашем счёте за трафик и показывая ваш материал в неодобренном вами контексте. Для малого бизнеса это редко катастрофа, но это деньги, уходящие в трубу, и CORP («same-origin») останавливает это на уровне браузера. Он также закрывает тонкий путь утечки данных, на который опираются продвинутые (класса Spectre) атаки браузера.

Как выглядит «хорошо» для каждого из них?

COOP: заголовок Cross-Origin-Opener-Policy со значением «same-origin». CORP: заголовок Cross-Origin-Resource-Policy со значением «same-origin». COEP: заголовок Cross-Origin-Embedder-Policy — и если вы его вообще ставите, «credentialless» — более безопасное значение, чем «require-corp». Наш отчёт просто отмечает, присутствует ли каждый и во что задан; он никогда не штрафует за отсутствие. Стремитесь к наличию COOP и CORP; оставьте COEP отсутствующим, пока не протестировали.