Programiści korzystający z narzędzia COEP mogą teraz umieszczać elementy iframe innych firm, które nie korzystają z tego narzędzia.
Elementy bez danych logowania w elemencie iframe są domyślnie włączone od wersji Chrome 110. Rozwiązuje on najpopularniejsze skargi deweloperów, którzy współpracują z zasadami korzystania z zasad z innych domen (COEP), ponieważ obejmują osadzone elementy iframe innych firm, które nie ustawiają COEP.
Dlaczego potrzebujemy CEP
Niektóre internetowe interfejsy API, takie jak Spectre, zwiększają ryzyko ataków typu side-channel. Aby ograniczyć to ryzyko, przeglądarki oferują izolowane środowisko zwane izolacją zasobów z innych domen, które wymaga wdrożenia COEP. Izolacja zasobów z innych domen umożliwia stronom korzystanie z funkcji uprzywilejowanych, takich jak SharedArrayBuffer
, performance.measureUserAgentSpecificMemory()
i precyzyjne liczniki czasu z lepszą rozdzielczością.
Aby włączyć izolację zasobów z innych domen, strony internetowe muszą wysyłać te nagłówki HTTP:
Cross-Origin-Embedder-Policy: require-corp
Cross-Origin-Opener-Policy: same-origin
Zamiast parametru require-corp
można też używać parametru COEP:credentialless. Więcej informacji znajdziesz w dokumentacji.
Wyzwania związane z włączeniem COEP
Chociaż izolacja zasobów z innych domen zwiększa bezpieczeństwo stron i umożliwia włączenie zaawansowanych funkcji, wdrożenie COEP może być trudne. Jednym z największych wyzwań jest to, że wszystkie elementy iframe z innych domen muszą wdrażać COEP i CORP. Elementy iframe bez tych nagłówków nie będą wczytywane przez przeglądarkę.
Na pomoc przydaje się tag iframe bez danych uwierzytelniających
Wprowadzamy tag <iframe credentialless>
, aby ułatwić umieszczanie zewnętrznych elementów iframe, w których nie ustawiono COEP. Gdy dodasz atrybut credentialless
do elementu <iframe>
, element iframe będzie wczytywany z innego, pustego kontekstu. W szczególności jest ono wczytywane bez plików cookie. Pozwala to usunąć ograniczenie dotyczące COEP.
Przykład:
<iframe credentialless src="https://example.com">
Ten element iframe został utworzony w nowym kontekście tymczasowym i nie ma dostępu do żadnych plików cookie powiązanych z witryną najwyższego poziomu. Zamiast tego zaczyna się od pustego pojemnika na pliki cookie. Podobnie interfejsy API pamięci masowej, takie jak LocalStorage, CacheStorage czy IndexedDB, wczytują i przechowują dane na nowej partycji efemerycznej. Partycja jest ograniczona do bieżącego dokumentu najwyższego poziomu oraz źródła elementu iframe. Cała pamięć jest czyszczona po wyładowaniu dokumentu najwyższego poziomu.
Elementy iframe bez danych logowania nie podlegają regułom umieszczania COEP. Są one wciąż bezpieczne: za każdym razem są ładowane z nowego, pustego kontekstu, więc nie powinny zawierać spersonalizowanych danych, których szukają hakerzy. Jeśli element iframe zawiera tylko dane publiczne, atakujący nie jest wartościowy.
Pokaz
Zobacz prezentację elementu iframe bez danych logowania.
Najczęstsze pytania
Czy ta funkcja zostanie zastosowana przez inne przeglądarki?
- Żądanie Mozilla o pozycję: Oczekujące
- Żądanie Webkit o pozycję: Brak sygnału
- W3C TAG Żądanie dotyczące pozycji: satysfakcjonujące
Czy obiekt <iframe>
jest zagnieżdżony w obiekcie <iframe credentialless>
bez danych logowania?
Tak. Jest dziedziczona. Jeśli element iframe nie ma danych logowania, ma to zastosowanie do wszystkich elementów iframe w całym poddrzewie, nawet bez atrybutu credentialless
.
Czy wyskakujące okienka także <iframe credentialless>
nie wymagają danych logowania?
Wyskakujące okienka są otwierane tak, jakby zasada noopener
była skonfigurowana. Są tworzone w nowym, zwykłym kontekście najwyższego poziomu i nie wymagają danych logowania. Nie mogą komunikować się z elementem iframe bez danych logowania.
Jak wykryć, że dokument został umieszczony w elemencie iframe bez danych logowania?
window.credentialless
ma wartość „true” (prawda) w elemencie iframe bez danych logowania. W przeciwnym razie ma wartość „false” (fałsz). Jego wartość to undefined
w przeglądarce, która nie obsługuje <iframe credentialless>
.
Zasoby
- Odizolowanie witryny od zasobów z innych domen przy użyciu strategii COOP i COEP
- Dlaczego potrzebujesz „izolowanych od zasobów z innych domen”, aby korzystać z zaawansowanych funkcji
- Przewodnik po włączeniu izolacji zasobów z innych domen
- Aktualizacje obiektu SharedSlateBuffer w Chrome 88 na Androidzie i w Chrome 92 na komputerze
- Ładowanie zasobów z innych domen bez nagłówków CORP za pomocą
COEP: credentialless
- IFrame bez danych logowania – Zabezpieczenia internetowe | MDN