Deweloperzy korzystający z COEP mogą teraz umieszczać elementy iframe innych firm, które same nie korzystają z COEP.
Elementy bez danych logowania iframe są domyślnie włączone od Chrome w wersji 110. To rozwiązanie rozwiązuje najczęstsze problemy deweloperów, którzy współpracują z zasadami dotyczącymi cross-Origin-Embedder-Policy (COEP), polegają na umieszczaniu elementów iframe innych firm, które nie określają COEP.
Dlaczego potrzebujemy właściciela konta
Niektóre internetowe interfejsy API, takie jak Spectre, zwiększają ryzyko ataków z udziałem dodatkowych kanałów. Aby zmniejszyć to ryzyko, przeglądarki udostępniają oparte na akceptacji środowisko nazywane izolacją od zasobów z innych domen, które wymaga wdrożenia kosztu własnego sprzedaży. Izolacja zasobów z innych domen umożliwia witrynom korzystanie z funkcji uprzywilejowanych, takich jak SharedArrayBuffer
, performance.measureUserAgentSpecificMemory()
oraz precyzyjne liczniki czasu o lepszej rozdzielczości.
Aby można było 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
Jako alternatywy dla require-corp
można też używać atrybutu COEP:credentialless. Więcej informacji znajdziesz w dokumentacji.
Wyzwania związane z włączeniem kosztu własnego sprzedaży
Izolacja zasobów z innych domen zapewnia większe bezpieczeństwo stron internetowych i umożliwia korzystanie z zaawansowanych funkcji, ale wdrożenie kosztu własnego sprzedaży może być trudne. Jednym z największych wyzwań jest to, że wszystkie elementy iframe z innych domen muszą wdrożyć CoEP i CORP. Przeglądarka nie będzie wczytywać elementów iframe bez tych nagłówków.
Na ratunek bez danych logowania iframe
Wprowadzamy <iframe credentialless>
, aby pomóc w umieszczaniu elementów iframe innych firm, które nie ustawiają kosztu własnego przechowywania. Dodanie atrybutu credentialless
do elementu <iframe>
powoduje ładowanie elementu iframe z innego, pustego kontekstu. W szczególności bez plików cookie. Umożliwia to usunięcie ograniczenia dotyczącego licencji na koszt własny sprzedaży.
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 kontenera plików cookie. Podobnie interfejsy API pamięci masowej, takie jak LocalStorage, CacheStorage czy IndexedDB, wczytują i przechowują dane na nowej partycji efemerycznej. Partycja jest ograniczona zarówno do bieżącego dokumentu najwyższego poziomu, jak i do źródła elementu iframe. Cała ta pamięć jest usuwana po wyładowaniu dokumentu najwyższego poziomu.
Elementy iframe bez danych logowania nie podlegają regułom umieszczania plików cookie COEP. Są one nadal bezpieczne: ponieważ są za każdym razem wczytywane z nowego pustego kontekstu, nie powinny zawierać spersonalizowanych danych – tego właśnie oczekują osoby przeprowadzające ataki. Jeśli element iframe zawiera tylko dane publiczne, nie jest wartościowy dla atakującego.
Prezentacja
Możesz zobaczyć wersję demonstracyjną elementu iframe bez danych logowania.
Najczęstsze pytania
Czy z tej funkcji będą korzystać inne przeglądarki?
- Żądanie do programu Mozilla: oczekująca
- Żądanie Webkit dotyczące pozycji: brak sygnału
- W3C TAG Żądanie pozycji: spełnione
Czy obiekt <iframe>
jest zagnieżdżony w elemencie <iframe credentialless>
bez danych logowania?
Tak. Jest dziedziczona. Bez danych logowania w elemencie iframe dotyczy to wszystkich elementów iframe w całym poddrzewie, nawet jeśli nie ma atrybutu credentialless
.
Czy wyskakujące okienka są też tworzone za pomocą danych logowania <iframe credentialless>
?
Wyskakujące okienka są otwierane tak, jakby skonfigurowano ustawienie noopener
. Są one tworzone w nowym, zwykłym kontekście najwyższego poziomu i nie są pozbawione danych logowania. Nie mogą one komunikować się z elementem iframe bez danych logowania.
Jak sprawdzić, czy dokument został umieszczony w elemencie iframe bez danych logowania?
window.credentialless
ma wartość „prawda” w elemencie iframe bez danych logowania, a w przeciwnym razie ma wartość „fałsz”. Jego wartość to undefined
w przeglądarce, która nie obsługuje <iframe credentialless>
.
Zasoby
- Ustawianie witryny jako izolowanej od zasobów z innych domen korzystając z COOP i COEP
- Dlaczego potrzebne jest określenie „izolowane od zasobów z innych domen” aby uzyskać dostęp do zaawansowanych funkcji
- Przewodnik dotyczący włączania izolacji zasobów z innych domen
- Aktualizacje SharedTrackBuffer w Chrome 88 na Androidzie i Chrome 92 na komputery
- Wczytywanie zasobów z innych domen bez nagłówków CORP za pomocą
COEP: credentialless
- IFrame bez danych logowania – zabezpieczenia sieciowe | MDN