Defaults.Exposed › Виправлення › Cross-origin isolation headers (COOP / CORP / COEP)
Як виправити Cross-origin isolation headers (COOP / CORP / COEP)
Три необов'язкові інструкції браузера, що контролюють, як іншим сайтам дозволено взаємодіяти з вашим — відкривати його у спливних вікнах, вбудовувати його зображення та скрипти або завантажувати його ресурси на свої сторінки. Це сучасне посилення, а не базовий обов'язок, і за нашою оцінкою вони є інформаційними: їхня відсутність не знижує вашу оцінку. Але два безпечних з них закривають тихий фішинг у спливних вікнах і крадіжку пропускної здатності, і уважна IT-команда покупця помітить, коли вони присутні.
Висновок для вашого бізнесу: Два з цих трьох заголовків зупиняють складний фішинг у спливних вікнах і зупиняють інші сайти від hotlinking ваших зображень і скриптів (що коштує вам пропускної здатності та може витікати дані). Вони безкоштовні, займають у розробника близько 15 хвилин і нічого не зламають. Третій є просунутим і може зламати аналітику, шрифти та вбудовані елементи — більшість компаній повинні залишити його вимкненим. Жоден з них не впливає на вашу оцінку, тому ставтеся до них як до полірування, а не паніки: зробіть два безпечних, пропустіть ризикований, якщо він вам конкретно не потрібен.
Що це може вам коштувати
- Шахрай відкриває ваш справжній сайт у спливному вікні і тримає над ним дистанційний контроль — тихо перенаправляючи вашого клієнта на підроблений логін у момент, коли вони відводять погляд. Безпечний заголовок (COOP) повністю розриває цей контрольний зв'язок.
- Інші сайти вбудовують ваші фотографії продуктів, логотипи та скрипти прямо з вашого сервера (hotlinking) — ви платите за пропускну здатність кожен раз, коли їхні відвідувачі завантажують сторінку, і ваші ресурси з'являються на сайтах, які ви б ніколи не схвалили.
- IT-команда потенційного клієнта запускає сканування заголовків перед підписанням і бачить, що ви додали сучасне міжпохідне посилення — маленький сигнал, але він ставить вас у стовпець 'вони серйозно ставляться до цього' замість 'мінімум'.
- Розробник, намагаючись бути ретельним, вмикає просунутий заголовок ізоляції (COEP) без тестування — і Google Analytics, веб-шрифти та вбудований віджет бронювання перестають працювати за ніч. Знання того, який заголовок є безпечним, а який ризикованим, запобігає самостійно спричиненому збою.
- Контрольний список аудитора згадує міжпохідну ізоляцію; ви б радше показати 'присутнє і правильне' на двох безпечних, ніж пояснювати, чому нічого немає взагалі.
Чому це важливо. Це перспективні заголовки посилення браузера. За нашою методологією всі три є інформаційними — вони зареєстровані з нульовими балами і ніколи не переміщують вашу оцінку — бо вони є просунутими засобами управління, без яких сайт може законно працювати, і один з них може завдати шкоди при неправильному застосуванні. Ми повідомляємо про них, щоб ви бачили, де стоїте. Два безпечних (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 будь-який сайт в інтернеті може вбудовувати ваші фотографії продуктів, логотипи, скрипти та інші файли прямо з вашого сервера — «hotlinking». Кожен відвідувач їхньої сторінки завантажує файл від вас, за вашим рахунком пропускної здатності, з вашим ресурсом, що з’являється в контексті, якого ви ніколи не схвалювали. CORP встановлений на «same-origin» зупиняє зовнішні сайти від вбудовування ваших ресурсів.
-
Тихий шлях витоку даних для просунутих браузерних атак. Те саме міжпохідне вбудовування, що уможливлює hotlinking, також є одним із шляхів, що складні бічно-канальні браузерні атаки (сімейство Spectre) використовують для читання даних, до яких не повинні мати доступу. COOP і CORP разом закривають цей шлях на рівні браузера. Для більшості малих компаній це перестраховка, але це безкоштовна перестраховка.
-
Самостійно спричинений збій через неправильний заголовок. Просунутий, COEP, вимагає, щоб кожен ресурс, що завантажує ваш сайт, явно погодився. Вмикайте його без тестування і ваша аналітика, веб-шрифти, вбудовані карти, віджети бронювання та сторонні скрипти можуть перестати завантажуватися — бо жоден з них не просили погодитися. Це єдиний спосіб, яким ці заголовки можуть справді завдати вам шкоди, і він повністю уникається: не вмикайте COEP без тестування.
-
Пропущений легкий сигнал для обережних покупців. Коли IT-команда потенційного клієнта сканує ваші заголовки перед підписанням, виявлення сучасного міжпохідного посилення на місці — це маленький, але реальний сигнал «ці люди серйозно ставляться до безпеки». Це не виграє угоду саме по собі — але це безкоштовно мати на правильному боці цього балансу.
Що насправді є кожне
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 каже браузерам відмовити у міжпохідному вбудовуванні ваших ресурсів — тому інші сайти не можуть hotlink ваших ресурсів або завантажувати їх на свої сторінки. Ваш власний сайт все одно завантажує свої власні ресурси точно як раніше; блокуються лише зовнішні сайти.
Як виглядає «добре»: Cross-Origin-Resource-Policy: same-origin. (Якщо ви навмисно публікуєте ресурси для вбудовування іншими — публічний логотип, відкритий API — ваш розробник може послабити це для конкретних відповідей.)
COEP — Cross-Origin-Embedder-Policy (просунутий, зазвичай залиште вимкненим)
COEP завершує «міжпохідну ізоляцію»: у поєднанні з COOP він вимагає, щоб кожен ресурс, що завантажує ваша сторінка, явно погодився (через CORS або CORP). Зроблений правильно, це розблоковує певні потужні функції браузера (наприклад, SharedArrayBuffer) і додає ще один шар проти атак класу Spectre. Але оскільки він вимагає погодження від всього, що ви завантажуєте, він легко ламає сторонні інструменти — аналітику, шрифти, вбудовані віджети — які не були побудовані для погодження. Більшість сайтів не потребують функцій, які він розблоковує, і не повинні нести ризик зламу.
Як виглядає «добре»: для рідкісного сайту, якому це потрібно, Cross-Origin-Embedder-Policy: credentialless — безпечніше значення, менш імовірне для зламу зовнішніх ресурсів, ніж require-corp. Для всіх інших відсутність — це нормально, і наш звіт не оштрафує вас за це.
Як це виправити (безкоштовно, ~15 хвилин)
Передайте це вашому IT-фахівцю або веб-розробнику — виправлення безкоштовне. Додавання 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"
Їх безпечно додавати і вони не зламають нормальну функціональність. Після розгортання перезавантажте кілька сторінок і підтвердіть, що сайт поводиться точно як раніше (так і має бути).
Просунутий заголовок (лише якщо він вам конкретно потрібен)
Не вмикайте це без тестування в staging спочатку. COEP може зламати аналітику, шрифти та вбудовані віджети.
Cloudflare: Transform Rules → Set Cross-Origin-Embedder-Policy = credentialless.
Nginx:
add_header Cross-Origin-Embedder-Policy "credentialless" always;
Використовуйте credentialless замість require-corp — він менш імовірний для зламу зовнішніх ресурсів. Ретельно тестуйте в staging; стежте за будь-яким сторонніх скриптом, шрифтом або вбудованим елементом, що перестають завантажуватися. Якщо щось ламається і вам насправді не потрібні функції, що COEP розблоковує, просто видаліть заголовок — штрафу за його відсутність немає.
Примітки по платформі
- Google Workspace / Microsoft 365: вони живлять вашу пошту, а не ваш сайт, тому тут нічого не налаштовується. Ці заголовки належать тому, що розміщує ваш сайт (ваш CDN, хост або сервер).
- Звичайні керовані хости / конструктори сайтів (Wix, Squarespace, Shopify тощо): користувацькі заголовки відповіді можуть бути не налаштовуваними на нижчих тарифних планах. Якщо ви не можете їх додати, це нормально — вони інформаційні і не впливають на вашу оцінку. Розміщення вашого сайту за CDN, як Cloudflare, — це звичайний спосіб отримати контроль над заголовками.
- WordPress на вашому власному хостингу: встановіть їх у конфігурації вашого веб-сервера (Nginx/Apache вище) або через ваш CDN, а не в плагіні де можливо — рівень сервера/CDN є чистішим і застосовується до кожної відповіді.
Поширені помилки
- Вмикання COEP «для ретельності» і зламу сайту. Це найбільша помилка. COEP вимагає погодження від всього, що ви завантажуєте; вмикайте його без тестування і ваша аналітика, шрифти та вбудовані елементи можуть зникнути. Якщо вам не потрібні функції браузера, які він розблоковує, не встановлюйте його.
- Ставлення до них як до термінових через те, що сканер їх згадав. Вони інформаційні. Оцінювані веб-заголовки (HTTPS, HSTS, CSP, захист від clickjacking, захист від MIME-sniffing) мають пріоритет — спочатку виправте їх, перш ніж витрачати тут будь-яку енергію.
- Встановлення CORP занадто суворо, коли ви насправді публікуєте вбудовуваних ресурсів. Якщо ви навмисно обслуговуєте логотип, значок або API для використання іншими сайтами, повний CORP ‘same-origin’ заблокує їх. Послабте його лише для цих конкретних відповідей, а не відмовляйтеся від заголовка скрізь.
- Додавання заголовка на рівні сторінки/застосунку та пропуск деяких відповідей. Встановлюйте їх на рівні сервера або CDN, щоб вони застосовувалися до кожної відповіді (зображення, скрипти, кінцеві точки API), а не лише до HTML-сторінок.
- Плутанина між ними і SSL-замком. HTTPS шифрує з’єднання; ці контролюють міжсайтову взаємодію. Вони не пов’язані, і вам потрібні обидва.
Примітка про оцінку
Щоб бути абсолютно чітким: жодна з цих трьох перевірок не впливає на вашу оцінку. Вони зареєстровані в нашій методології як інформаційні, з нульовими балами, і відсутній ніколи нічого вам не коштує. Ми їх показуємо, бо два безпечних є дешевими, реальними покращеннями і бо бачення повної картини є корисним — а не тому, що є число для захисту. Якщо ви тут нічого не робите, ваша оцінка точно така сама. Якщо ви додаєте COOP і CORP, ви закрили пару реальних (хоч і нішевих) прогалин безкоштовно. Це правильний спосіб думати про цю сторінку: необов’язкове полірування, з однією чітко позначеною пасткою для уникання.
FAQ
Ці не впливають на мою оцінку — навіщо взагалі хвилюватися?
Два з них — так; один — мабуть, ні. COOP і CORP безкоштовні, займають хвилини і не зламають ваш сайт — вони закривають реальні (хоч і нішеві) вектори атаки, тому варті виконання як дешева гігієна. COEP є просунутим і може зламати сторонні інструменти, тому більшість компаній повинні залишити його вимкненим, якщо їм конкретно не потрібні функції браузера, які він розблоковує. Жоден з трьох не змінює вашу оцінку так чи інакше, тому немає терміновості — виконайте два безпечних як наведення порядку наступного разу, коли ваш розробник буде на сайті.
Я не технічний фахівець — це те, що мені потрібно виконати?
Особисто — ні, і не терміново. Оскільки вони є інформаційними, нічого поганого не станеться з вашою оцінкою, якщо ви пропустите їх. Якщо ви хочете додати два безпечних, передайте розділ «Як це виправити» тому, хто керує вашим сайтом або CDN — це пара однорядкових налаштувань і виправлення безкоштовне. Єдине, що слід позначити явно для COEP: скажіть їм не вмикати його без тестування, бо він може зламати аналітику та вбудовані віджети.
Яка різниця між цими і заголовками, що СПРАВДІ впливають на мою оцінку?
Оцінювані заголовки веб-безпеки — перенаправлення HTTPS, HSTS, Content-Security-Policy, захист від clickjacking (X-Frame-Options) і захист від MIME-sniffing — захищають від поширених, широко використовуваних атак, тому їхня відсутність коштує балів. Три на цій сторінці (COOP, CORP, COEP) є новішими, більш спеціалізованими засобами ізоляції браузера. Вони є хорошою практикою, але ще не базовим очікуванням, тому ми повідомляємо про них без оцінювання. Спочатку виконайте оцінювані; ці є поліруванням зверху.
Чи зламає додавання COOP або CORP мій сайт або інтеграції партнерів?
Рекомендовані налаштування (обидва 'same-origin') розроблені для безпечного використання. COOP лише розриває зв'язок з вікнами, які ваш сайт відкриває у спливних вікнах — нормальний перегляд, ваші власні сторінки та звичайні посилання не зачіпаються. CORP лише зупиняє *інші* сайти від вбудовування ваших зображень і скриптів; ваш власний сайт завантажує свої власні ресурси точно як раніше. Якщо ви насправді обслуговуєте ресурси (наприклад, публічний логотип або API), які інші сайти мають вбудовувати, ваш розробник може використовувати більш дозвільне налаштування для конкретних відповідей. Той, що справді ризикує зламом, — COEP — тримайте його вимкненим, якщо він не протестований.
Що насправді коштує мені 'hotlinking'?
Коли інший сайт вбудовує ваше зображення або скрипт прямо з вашого сервера замість розміщення власної копії, кожен відвідувач їхньої сторінки завантажує його від вас — за вашим рахунком пропускної здатності і показуючи ваш ресурс у контексті, якого ви не схвалювали. Для малого бізнесу це рідко буває катастрофічним, але це безкоштовні гроші з дверей, і 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 відсутнім, якщо ви його не протестували.