Zapewnia izolację między źródłami i ochronę przed wyciekami danych między witrynami podczas interakcji z wyskakującymi okienkami.
Dostępna jest nowa wartość zasady dotyczącej otwierającego z innej domeny (COOP): restrict-properties. Zapewnia to korzyści związane z bezpieczeństwem i ułatwia wdrożenie izolacji między źródłami, a jednocześnie umożliwia witrynie interakcję z wyskakującymi okienkami innych firm w przypadku płatności, uwierzytelniania i innych zastosowań.
Aby rozpocząć eksperymentowanie z restrict-properties, weź udział w wersji próbnej origin, która rozpocznie się w Chrome 116.
Dlaczego warto korzystać z restrict-properties
restrict-properties ma 2 główne zastosowania:
- Zapobieganie wyciekom informacji z wielu witryn bez powodowania problemów.
- Spraw, aby Twoja witryna była izolowana od zasobów z innych domen.
Zapobieganie wyciekom informacji z różnych witryn bez powodowania problemów
Domyślnie każda witryna może otworzyć Twoją aplikację w wyskakującym okienku i uzyskać do niej odwołanie.
Złośliwa witryna może wykorzystać to na swoją korzyść, aby przeprowadzać ataki, takie jak wycieki danych z różnych witryn.
Aby zmniejszyć to ryzyko, możesz użyć nagłówka Cross-Origin-Opener-Policy (COOP).
Do tej pory opcje Cross-Origin-Opener-Policy były ograniczone. Możesz:
- Ustaw wartość
same-origin,, która blokuje wszystkie interakcje z wyskakującymi okienkami pochodzącymi z innych domen. - Ustaw wartość
same-origin-allow-popups, która blokuje wszystkie interakcje między domenami, które otwierają Twoją witrynę w wyskakującym okienku. - Ustaw wartość
unsafe-none, która zezwala na wszystkie interakcje między źródłami z wyskakującymi okienkami.
Uniemożliwiało to witrynom, które muszą być otwierane w wyskakującym okienku i wchodzić w interakcję ze stroną, która je otworzyła, wymuszanie COOP. W efekcie kluczowe przypadki użycia, takie jak logowanie jednokrotne i płatności, nie były chronione przed wyciekami danych z wielu witryn.
Cross-Origin-Opener-Policy: restrict-properties rozwiązuje ten problem.
W przypadku restrict-properties właściwości, które można wykorzystać do zliczania klatek i innych ataków polegających na wycieku danych z różnych witryn, są niedostępne, ale podstawowa komunikacja między oknami za pomocą postMessage i closed jest dozwolona.
Zwiększa to bezpieczeństwo witryny przy jednoczesnym zachowaniu kluczowych przypadków użycia. Na przykład:
- Jeśli świadczysz usługę w wyskakującym okienku, ustawienie
Cross-Origin-Opener-Policy: restrict-propertiesochroni Cię przed różnymi atakami polegającymi na wycieku danych z różnych witryn. Nadal możesz otwierać wszystkie strony, które były wcześniej dostępne. - Jeśli musisz uzyskać dostęp do wyskakującego okienka z innej domeny, ustawienie
Cross-Origin-Opener-Policy: restrict-propertiesw podobny sposób ochroni Twoją witrynę przed zliczaniem elementów iframe. Będziesz mieć możliwość otwierania tych samych wyskakujących okien, co obecnie. - Jeśli zarówno strona otwierająca, jak i otwierana ustawią nagłówek, a strony są z różnych źródeł, zachowanie jest podobne do sytuacji, w której nagłówek ustawiła tylko jedna z nich. Jeśli pochodzą z tej samej domeny, przyznawany jest pełny dostęp.
Izolowanie witryny od zasobów z innych domen
Dlaczego potrzebujemy izolacji od zasobów z innych domen
Niektóre interfejsy API zwiększają ryzyko ataków z użyciem kanału bocznego, takich jak Spectre. Aby ograniczyć to ryzyko, przeglądarki oferują środowisko izolowane oparte na zasadzie rezygnacji, zwane izolacją od zasobów z innych domen. W stanie izolacji od zasobów z innych domen strona może korzystać z funkcji uprzywilejowanych, takich jak SharedArrayBuffer, performance.measureUserAgentSpecificMemory() i liczniki o wysokiej precyzji o lepszej rozdzielczości, a jednocześnie izolować pochodzenie od innych, chyba że te inne wyrażą na to zgodę.
Do tej pory, aby korzystać z tych interfejsów API, trzeba było ustawić Cross-Origin-Opener-Policy:
same-origin. Spowoduje to jednak przerwanie wszystkich przepływów wyskakujących okienek z różnych domen, które mogą być potrzebne, np. logowania jednokrotnego i płatności.
Aby włączyć izolację od zasobów z innych domen, zamiast Cross-Origin-Opener-Policy: same-origin możesz teraz używać Cross-Origin-Opener-Policy: restrict-properties.
Zamiast zrywać relację otwierającą, ogranicza ją do minimalnego podzbioru komunikacji window.postMessage() i window.closed.
Izolację między źródłami możesz włączyć za pomocą tych 2 nagłówków:
Cross-Origin-Opener-Policy: restrict-properties
Cross-Origin-Embedder-Policy: require-corp
lub
Cross-Origin-Opener-Policy: restrict-properties
Cross-Origin-Embedder-Policy: credentialless
Dowiedz się więcej o credentialless na stronie
Wczytywanie zasobów z innych domen bez nagłówków CORP za pomocą COEP: credentialless.
Prezentacja
Wypróbuj różne opcje nagłówków w tej wersji demonstracyjnej izolacji z różnych domen.
Eksperymentowanie z testowaniem origin
Aby eksperymentować z Cross-Origin-Opener-Policy: restrict-properties, weź udział w testowaniu origin.
Obsługa przeglądarek
Cross-Origin-Opener-Policy: restrict-properties jest obecnie obsługiwana tylko w Chrome. Inne przeglądarki aktywnie uczestniczą w dyskusji na temat standaryzacji.
Najczęstsze pytania
Moja witryna musi komunikować się z wyskakującymi okienkami z tej samej domeny. Czy powinienem użyć COOP: restrict-properties, aby włączyć witrynę izolowaną od zasobów z innych domen?
Ustawienie COOP: restrict-properties zarówno w wyskakującym okienku, jak i na stronie głównej nie spowoduje ograniczeń. Ustawienie tej zasady tylko w wyskakującym okienku lub tylko na stronie głównej uniemożliwi dostęp do innych usług niż postMessage i closed w otwierającym okienku, nawet jeśli pochodzą z tego samego źródła.
Czy zestaw dozwolonych właściwości jest stały?
Na podstawie dotychczasowych opinii podejrzewamy, że window.postMessage i window.closed wystarczą w przypadku większości procesów, ale nadal rozważamy udostępnienie tej funkcji w przypadku innych usług. Jeśli masz przypadek użycia, którego nie można rozwiązać za pomocą tylko postMessage i closed, zostaw opinię w wątku dotyczącym zamiaru przeprowadzenia eksperymentu.
Zasoby
- Izolowanie witryny od innych domen za pomocą COOP i COEP
- Dlaczego zaawansowane funkcje wymagają witryny izolowanej od zasobów z innych domen
- Przewodnik po włączaniu izolacji zasobów z innych domen
- Aktualizacje SharedArrayBuffer w Chrome na Androida w wersji 88 i Chrome na komputery w wersji 92
- Wczytywanie zasobów z innych domen bez nagłówków CORP za pomocą
COEP: credentialless– Chrome Developers - Anonymous iframe origin trial: Easily embed iframes in COEP environments - Chrome Developers