Deweloperzy korzystający z interfejsu COEP mogą teraz umieszczać elementy iframe innych firm, które nie używają tego interfejsu.
Bezpieczeństwo bez hasła w przypadku ramek iframe jest domyślnie włączone od wersji 110 przeglądarki Chrome. Rozwiązanie to eliminuje najczęstszą przyczynę skarg deweloperów pracujących z zasadami osadzania z innych źródeł (COEP): umieszczanie elementów iframe innych firm, które nie mają ustawionej wartości COEP.
Dlaczego potrzebujemy COEP
Niektóre interfejsy API zwiększają ryzyko ataków typu side-channel, takich jak Spectre. Aby ograniczyć to ryzyko, przeglądarki oferują środowisko izolowane oparte na opcjonalnym włączeniu, zwane izolacją zasobów z innych domen, które wymaga wdrożenia COEP. Izolacja między domenami umożliwia witrynom korzystanie z funkcji uprzywilejowanych, takich jak SharedArrayBuffer
, performance.measureUserAgentSpecificMemory()
i precyzyjne zegary z lepszą rozdzielczością.
Aby umożliwić izolację między domenami, witryny muszą wysyłać te nagłówki HTTP:
Cross-Origin-Embedder-Policy: require-corp
Cross-Origin-Opener-Policy: same-origin
COEP:credentialless może też służyć jako alternatywa dla require-corp
. Aby dowiedzieć się więcej, zapoznaj się z dokumentacją.
Problemy z włączeniem COEP
Chociaż izolacja między domenami zwiększa bezpieczeństwo stron internetowych i umożliwia stosowanie zaawansowanych funkcji, wdrożenie tej technologii może być trudne. Jednym z największych wyzwań jest to, że wszystkie iframe między domenami muszą stosować nagłówki COEP i CORP. Przeglądarka nie wczyta iframe bez tych nagłówków.
Tag iframe bez danych logowania na ratunek
Wprowadzamy tag <iframe credentialless>
, aby ułatwić umieszczanie ramek iframe innych firm, które nie mają ustawionego parametru COEP. Dodanie atrybutu credentialless
do elementu <iframe>
powoduje, że iframe jest ładowany z innego, pustego kontekstu. W szczególności jest on wczytywany bez plików cookie. Pozwala to usunąć ograniczenie COEP.
Przykład:
<iframe credentialless src="https://example.com">
Ten iframe jest tworzony w nowym kontekście efemerycznym i nie ma dostępu do żadnych plików cookie powiązanych z witryną najwyższego poziomu. Zamiast tego zaczyna się od pustego pliku cookie. Podobnie interfejsy API pamięci, takie jak LocalStorage, CacheStorage, IndexedDB itp., wczytują i przechowują dane w nowej partycji tymczasowej. Partycja jest ograniczona do bieżącego dokumentu najwyższego poziomu i źródła elementu iframe. Po zwolnieniu dokumentu najwyższego poziomu całe to miejsce na dane zostaje zwolnione.
Elementy iframe bez danych logowania nie podlegają zasadom umieszczania treści COEP. Nadal są one bezpieczne: ponieważ są wczytywane za każdym razem z nowego pustego kontekstu, nie powinny zawierać danych spersonalizowanych, których szukają hakerzy. Jeśli iframe zawiera tylko dane publiczne, nie jest wartościowy dla atakującego.
Prezentacja
Możesz obejrzeć prezentację iframe bez danych logowania.
Najczęstsze pytania
Czy inne przeglądarki będą mogły korzystać z tej funkcji?
- Mozilla Request for position: oczekuje
- Żądanie Webkit dotyczące pozycji: brak sygnału
- TAG W3C Prośba o pozycję: zaakceptowano
Czy <iframe>
jest zagnieżdżony w <iframe credentialless>
bez hasła?
Tak. Jest dziedziczona. Gdy iframe nie wymaga poświadczeń, dotyczy to wszystkich takich ramek w całym poddrzewie, nawet bez atrybutu credentialless
.
Czy wyskakujące okienka są tworzone także bez danych logowania <iframe credentialless>
?
Wyskakujące okienka są otwierane tak, jakby było ustawione noopener
. Są one tworzone w nowym zwykłym kontekście najwyższego poziomu i nie są bez hasła. Nie mogą one komunikować się z ramką iframe bez danych logowania.
Jak wykryć, że dokument został umieszczony w elemencie iframe bez danych logowania?
window.credentialless
ma wartość true (prawda) w przypadku 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
- Wyizolowanie witryny za pomocą zasad COOP i COEP
- Dlaczego potrzebujesz „izolacji od zasobów z innych domen” do obsługi zaawansowanych funkcji
- Przewodnik po włączaniu izolacji zasobów z innych domen
- Aktualizacje SharedArrayBuffer w Chrome 88 na Androida i Chrome 92 na komputer
- Ładowanie zasobów z innych źródeł bez nagłówków CORP za pomocą
COEP: credentialless
- IFrame bez poświadczeń – bezpieczeństwo w internecie | MDN