Deweloperzy korzystający z interfejsu COEP mogą teraz umieszczać elementy iframe innych firm, które nie używają tego interfejsu.
Bezpieczeństwo bez poświadczeń w przypadku ramek iframe jest domyślnie włączone od wersji 110 przeglądarki Chrome. Rozwiązanie to eliminuje najczęstszy problem, z którym spotykają się deweloperzy pracujący z zasadami dotyczącymi umieszczania elementów iframe z innych źródeł (Cross-Origin-Embedder-Policy, COEP): umieszczanie elementów iframe z innych źródeł, które nie mają ustawionej opcji 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
Izolacja zasobów z innych domen zwiększa bezpieczeństwo stron internetowych i umożliwia stosowanie zaawansowanych funkcji, ale jej wdrożenie może być trudne. Jednym z największych wyzwań jest to, że wszystkie elementy iframe w wielu domenach muszą stosować nagłówki COEP i CORP. Przeglądarka nie wczyta elementów 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 załadowanie ramki iframe 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 z COEP. Nadal są one bezpieczne: ponieważ są wczytywane z nowego pustego kontekstu za każdym razem, 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 pozycji w WebKit: 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 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 elementach 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
- Uzyskiwanie przez witrynę „izoliowania źródeł” za pomocą zasad COOP i COEP
- Dlaczego potrzebujesz „kontekstu izolowanego 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
- Ładowanie zasobów z innych domen bez nagłówków CORP za pomocą
COEP: credentialless
- IFrame bez poświadczeń – bezpieczeństwo w internecie | MDN