Defaults.Exposed › Исправления › Заголовки изоляции между сайтами (COOP / CORP / COEP)
Как исправить Заголовки изоляции между сайтами (COOP / CORP / COEP)
Три необязательные инструкции браузеру, которые управляют тем, как другим сайтам разрешено взаимодействовать с вашим — открывать его во всплывающих окнах, встраивать его изображения и скрипты или тянуть его ресурсы в свои страницы. Это современное усиление, а не базовая обязательность, и по нашей оценке они информационные: их отсутствие не понижает оценку. Но два безопасных закрывают тихую дыру для фишинга и кражи трафика, а ИТ-отдел внимательного покупателя заметит их наличие.
Главное для вашего бизнеса: Два из этих трёх заголовков перекрывают изощрённый фишинг через всплывающие окна и не дают другим сайтам тянуть («хотлинкать») ваши изображения и скрипты (что стоит вам трафика и может приводить к утечке данных). Они бесплатны, занимают у разработчика около 15 минут и ничего не ломают. Третий продвинутый и может сломать аналитику, шрифты и встраивания — большинству бизнесов стоит оставить его выключенным. Ни один не влияет на оценку, так что относитесь к ним как к шлифовке, а не панике: сделайте два безопасных, пропустите рискованный, если он специально не нужен.
Во что это может вам обойтись
- Мошенник открывает ваш настоящий сайт во всплывающем окне и сохраняет над ним удалённый контроль — тихо перенаправляя вашего клиента на фальшивый вход в момент, когда тот отвлёкся. Безопасный заголовок (COOP) полностью обрывает эту связь управления.
- Другие сайты встраивают ваши фото товаров, логотипы и скрипты прямо с вашего сервера (хотлинкинг) — вы платите за трафик каждый раз, когда их посетители загружают страницу, а ваши материалы появляются на сайтах, которые вы бы никогда не одобрили.
- Служба безопасности потенциального клиента перед подписанием прогоняет скан заголовков и видит, что вы добавили современное усиление cross-origin — небольшой сигнал, но он помещает вас в колонку «относятся к этому серьёзно», а не «по минимуму».
- Разработчик, стараясь быть дотошным, включает продвинутый заголовок изоляции (COEP) без тестирования — и за ночь ломает вашу Google Analytics, веб-шрифты и встроенный виджет бронирования. Знание, какой заголовок безопасен, а какой рискован, позволяет избежать самонанесённого простоя.
- В чек-листе аудитора упомянута изоляция cross-origin; вы предпочли бы показать «есть и корректно» по двум безопасным, чем объяснять, почему там вообще ничего нет.
Почему это важно. Это заглядывающие в будущее заголовки усиления браузера. По нашей методологии все три информационные — зарегистрированы с нулём баллов и никогда не двигают оценку, — потому что это продвинутые механизмы, без которых сайт может законно работать, а один из них при неверном применении может навредить. Мы сообщаем о них, чтобы вы видели своё положение. Два безопасных (COOP и CORP) действительно стоит добавить: бесплатно, быстро, и они закрывают реальные дыры фишинга через всплывающие окна и кражи ресурсов, ничего не ломая.
Что это, простыми словами
Когда кто-то заходит на ваш сайт, его браузер не просто загружает ваши страницы изолированно — он также решает, как другим сайтам разрешено взаимодействовать с вашим. Может ли другой сайт открыть ваш во всплывающем окне и удержать его? Может ли другой сайт дотянуться и встроить ваши изображения и скрипты в свои страницы? Может ли ваш сайт безопасно использовать определённые мощные, закрытые возможности браузера?
Эти три заголовка — короткие невидимые инструкции, которые ваш сайт отправляет браузеру каждого посетителя, чтобы ответить ровно на эти вопросы. Их знают по инициалам:
- COOP — Cross-Origin-Opener-Policy. Управляет тем, может ли другой сайт, открывший ваш во всплывающем окне, сохранять над ним удалённый контроль.
- CORP — Cross-Origin-Resource-Policy. Управляет тем, разрешено ли другим сайтам встраивать ваши изображения, скрипты и другие файлы в свои страницы.
- COEP — Cross-Origin-Embedder-Policy. Продвинутый механизм, который в сочетании с COOP «изолирует» вашу страницу, чтобы она могла безопасно использовать определённые мощные возможности браузера.
Два из них (COOP и CORP) безопасно добавить и они действительно полезны. Третий (COEP) продвинутый и может что-то сломать, если включить небрежно.
Самое важное, что нужно знать сразу: по нашей оценке все три информационные. Они не влияют на вашу оценку. Отсутствие любого не стоит ничего. Мы сообщаем о них, чтобы вы видели своё положение и подобрали лёгкие победы, а не чтобы вы паниковали из-за цифры.
Во что это может вам обойтись
Это нишевые риски, не первополосные — но они реальны, а исправления бесплатны.
-
Фишинг через всплывающее окно, сохраняющий удалённый контроль над вашим настоящим сайтом. Без COOP страница мошенника может открыть ваш настоящий сайт во всплывающем окне и удерживать живую ссылку на него. Пока внимание клиента на странице мошенника, злоумышленник может перенаправить это всплывающее окно — с вашим настоящим доменом в адресной строке — на фальшивый экран входа или оплаты ровно в момент, когда клиент к нему вернётся. COOP со значением «same-origin» обрывает эту связь управления, чтобы всплывающим окном нельзя было манипулировать.
-
Другие сайты, крадущие ваш трафик (и размещающие ваши материалы там, где вы не хотите). Без CORP любой сайт в интернете может встроить ваши фото товаров, логотипы, скрипты и другие файлы прямо с вашего сервера — «хотлинкинг». Каждый посетитель их страницы скачивает файл у вас, на вашем счёте за трафик, с вашим материалом в неодобренном вами контексте. CORP со значением «same-origin» останавливает встраивание ваших ресурсов внешними сайтами.
-
Тихий путь утечки данных для продвинутых атак браузера. То же межсайтовое встраивание, что делает возможным хотлинкинг, — это и один из путей, которые изощрённые атаки браузера по сторонним каналам (семейство Spectre) используют, чтобы читать данные, которые им не положены. COOP и CORP вместе перекрывают этот путь на уровне браузера. Для большинства малых бизнесов это «защита с запасом», но защита бесплатная.
-
Самонанесённый простой из-за неверного заголовка. Продвинутый COEP требует, чтобы каждый ресурс, который загружает ваш сайт, явно согласился участвовать. Включите его без тестирования — и ваша аналитика, веб-шрифты, встроенные карты, виджеты бронирования и сторонние скрипты могут перестать загружаться, потому что никого из них об участии не спросили. Это единственный способ, которым эти заголовки реально могут вам навредить, и он полностью предотвратим: не включайте COEP без тестирования.
-
Упущенный лёгкий сигнал внимательным покупателям. Когда ИТ-отдел потенциального клиента перед подписанием сканирует ваши заголовки, наличие современного усиления cross-origin — небольшой, но реальный сигнал «эти люди относятся к безопасности серьёзно». Сделку он сам по себе не выиграет — но бесплатно оказаться на правильной стороне этого реестра приятно.
Что именно каждый из них делает
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:
Cross-Origin-Opener-Policy=same-originCross-Origin-Resource-Policy=same-origin
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, вам на самом деле не нужны, просто удалите заголовок — штрафа за его отсутствие нет.
Заметки по платформам
- Google Workspace / Microsoft 365: они обслуживают вашу почту, а не сайт, поэтому здесь ничего настраивать. Эти заголовки относятся к тому, что хостит ваш сайт (ваш CDN, хост или сервер).
- Распространённые управляемые хосты / конструкторы (Wix, Squarespace, Shopify и т. д.): пользовательские заголовки ответа могут быть недоступны на тарифах поскромнее. Если добавить нельзя — это нормально: они информационные и не влияют на оценку. Поставить сайт за CDN вроде Cloudflare — обычный способ получить контроль над заголовками.
- WordPress на собственном хостинге: задавайте их в конфиге веб-сервера (Nginx/Apache выше) или через CDN, по возможности не в плагине — уровень сервера/CDN чище и применяется к каждому ответу.
Частые ошибки
- Включение COEP «для дотошности» и поломка сайта. Это главное. COEP требует согласия от всего, что вы загружаете; включите его без тестирования — и ваша аналитика, шрифты и встраивания могут исчезнуть. Если вам не нужны разблокируемые им возможности браузера, не ставьте его.
- Восприятие их как срочных, потому что их упомянул сканер. Они информационные. Оценочные веб-заголовки (HTTPS, HSTS, CSP, кликджекинг, MIME-угадывание) идут первыми — исправьте их, прежде чем тратить силы здесь.
- Слишком строгая CORP, когда вы на самом деле публикуете встраиваемые материалы. Если вы намеренно отдаёте логотип, значок или API для использования другими сайтами, сплошная
same-originCORP их заблокирует. Ослабьте её только на этих ответах, а не отказывайтесь от заголовка везде. - Добавление заголовка на уровне страницы/приложения с пропуском части ответов. Ставьте их на уровне сервера или CDN, чтобы они применялись к каждому ответу (изображения, скрипты, API-эндпоинты), а не только к HTML-страницам.
- Путаница с замочком SSL. HTTPS шифрует соединение; эти управляют межсайтовым взаимодействием. Они не связаны, и нужны оба.
Заметка об оценке
Чтобы было предельно ясно: ни одна из этих трёх проверок не влияет на вашу оценку. Они зарегистрированы в нашей методологии как информационные, с нулём баллов, и отсутствие любой никогда вам ничего не стоит. Мы выводим их, потому что два безопасных — это дешёвые, настоящие улучшения, и потому что видеть полную картину полезно, — а не потому что есть цифра, которую надо защищать. Если вы ничего здесь не сделаете, ваша оценка останется ровно той же. Если добавите 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 отсутствующим, пока не протестировали.