Uzyskaj ochronę przed wyciekami danych w przypadku interakcji z wyskakującymi okienkami.
Dostępna jest nowa wartość zasady dotyczącej otwierającego z innej domeny (COOP): restrict-properties
. Zapewnia on korzyści w zakresie bezpieczeństwa i ułatwia stosowanie izolacji od zasobów z innych domen, a jednocześnie umożliwia witrynie interakcję z wyskakującymi okienkami innych firm na potrzeby płatności, uwierzytelniania i innych zastosowań.
Aby zacząć eksperymentować z restrict-properties
, weź udział w wersji próbnej origin, która jest dostępna od wersji Chrome 116.
Dlaczego warto używać restrict-properties
restrict-properties
ma 2 główne zastosowania:
- Zapobieganie wyciekom informacji w wielu witrynach bez naruszania zasad.
- Ustaw witrynę jako izolowaną od zasobów z innych domen.
Zapobieganie wyciekom informacji w wielu witrynach bez naruszania bezpieczeństwa
Domyślnie każda witryna może otworzyć Twoją aplikację w wyskakującym okienku i uzyskać do niej odwołanie.
Szkodliwa witryna może wykorzystać tę funkcję do przeprowadzania ataków, takich jak przecieki między witrynami.
Aby ograniczyć to ryzyko, możesz użyć nagłówka Cross-Origin-Opener-Policy
(COOP).
Do tej pory możliwości dotyczące domeny Cross-Origin-Opener-Policy
były ograniczone. Możesz:
- Ustaw
same-origin,
, który blokuje wszystkie interakcje z wyskakującymi okienkami w różnych domenach. - Ustaw
same-origin-allow-popups
, aby zablokować wszystkie interakcje między domenami, które otwierają Twoją witrynę w wyskakującym okienku. - Ustaw
unsafe-none
, aby zezwolić na wszystkie interakcje z wyskakującymi okienkami między domenami.
W związku z tym witryny, które muszą być otwierane w wyskakującym okienku i które mogą wchodzić w interakcję z otwarciem, nie mogły stosować zasad COOP. W efekcie kluczowe przypadki użycia, takie jak logowanie jednokrotne i płatności, były narażone na wycieki danych między witrynami.
Funkcja 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 między witrynami, są niedostępne, ale dozwolona jest podstawowa komunikacja między oknami za pomocą postMessage
i closed
.
Dzięki temu zwiększysz bezpieczeństwo witryny, zachowując przy tym kluczowe przypadki użycia. Na przykład:
- Jeśli udostępniasz usługę w oknie wyskakującym, ustawienie
Cross-Origin-Opener-Policy: restrict-properties
ochroni Cię przed różnymi atakami polegającymi na wycieku danych z wielu witryn. Nadal możesz otwierać wszystkie wcześniej dostępne strony. - Jeśli potrzebujesz dostępu do wyskakującego okienka z innego źródła, ustawienie
Cross-Origin-Opener-Policy: restrict-properties
również ochroni Twoją witrynę przed zliczaniem iframe. Będziesz mieć dostęp do tych samych wyskakujących okienek, które możesz otworzyć dzisiaj. - Jeśli zarówno strona otwierająca, jak i otwarta, mają ustawiony nagłówek, a strony pochodzą z różnych domen, działa to podobnie do sytuacji, gdy nagłówek jest ustawiony tylko w jednej z nich. Jeśli mają ten sam origin, mają 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 typu side-channel, takich jak Spectre. Aby zmniejszyć to ryzyko, przeglądarki udostępniają oparte na akceptowaniu izolowane środowisko nazywane izolacją zasobów z innych domen. W stanie odizolowania od zasobów z innych domen strona internetowa może korzystać z funkcji uprzywilejowanych, takich jak SharedArrayBuffer, performance.measureUserAgentSpecificMemory() i precyzyjne zegary o lepszej rozdzielczości, przy jednoczesnym odizolowaniu pochodzenia od innych zasobów, chyba że te ostatnie zostały włączone.
Do tej pory, aby można było korzystać z tych interfejsów API, trzeba było skonfigurować Cross-Origin-Opener-Policy:
same-origin
. Spowoduje to jednak przerwanie działania okna wyskakującego z wielu usług, które mogą być potrzebne, np. logowania jednokrotnego czy płatności.
Aby włączyć izolację witryn z innych domen, możesz teraz używać obiektu Cross-Origin-Opener-Policy: restrict-properties
zamiast obiektu Cross-Origin-Opener-Policy: same-origin
.
Zamiast zerwać relację z otwarciem, ogranicza ją tylko do minimalnego zbioru komunikatów window.postMessage()
i window.closed
.
Możesz włączyć izolację między domenami 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
w Ładowaniu zasobów z innych źródeł bez nagłówków CORP za pomocą COEP: credentialless
.
Prezentacja
Wypróbuj różne opcje nagłówka w tym demo izolacji między domenami.
Eksperymentuj z testowaniem origin
Aby eksperymentować z Cross-Origin-Opener-Policy: restrict-properties
, weź udział w próbnym okresie użytkowania Origin.
Obsługa przeglądarek
Obecnie format Cross-Origin-Opener-Policy: restrict-properties
jest obsługiwany tylko w Chrome. Inne przeglądarki aktywnie uczestniczą w dyskusji na temat ujednolicania standardów.
Najczęstsze pytania
Moja witryna musi komunikować się z wyskakującymi okienkami z tego samego źródła. Czy muszę używać COOP: restrict-properties
, aby włączyć izolację zasobów z różnych źródeł?
Ustawienie COOP: restrict-properties
zarówno w wyskakującym okienku, jak i na stronie głównej nie spowoduje żadnych ograniczeń. Ustawienie go tylko w oknie wyskakującym lub tylko na stronie głównej uniemożliwi dostęp do usług innych niż postMessage
i closed
w otwarcie, nawet jeśli mają one ten sam pierwotny adres,
Czy zestaw dozwolonych właściwości jest ustalony?
Na podstawie dotychczasowych opinii uważamy, że window.postMessage
i window.closed
wystarczą w przypadku większości procesów, ale nadal rozważamy udostępnienie ich innym usługom. Jeśli masz przypadek użycia, którego nie da się rozwiązać przy użyciu tylko metod postMessage
i closed
, prześlij opinię w wątku dotyczącym intencji to eksperyment.
Zasoby
- Wyizolowanie witryny za pomocą zasad COOP i COEP
- Dlaczego potrzebujesz „izolacji od zasobów z innych domen” do korzystania z zaawansowanych funkcji
- Przewodnik po włączaniu izolacji zasobów z innych domen
- Aktualizacje SharedArrayBuffer w Chrome 88 na Androida i Chrome 92 na komputer
- Wczytywanie zasobów z innych domen bez nagłówków CORP przy użyciu
COEP: credentialless
– deweloperzy Chrome - Anonimowe testowanie pochodzenia iframe: łatwe umieszczanie elementów iframe w środowiskach COEP – program dla deweloperów Chrome