COEP kullanan geliştiriciler artık COEP kullanmayan üçüncü taraf iframe'leri yerleştirebilir.
COEP'ye neden ihtiyaç duyarız?
Bazı web API'leri, Spectre gibi yan kanal saldırıları riskini artırır. Tarayıcılar bu riski azaltmak için kaynaklar arası izolasyon adı verilen, tercihe dayalı yalıtılmış bir ortam sunar. Bu ortam, diğer şeylerin yanı sıra COEP'nin dağıtılmasını gerektirir. Bu, web sitelerinin
SharedArrayBuffer
,
performance.measureUserAgentSpecificMemory()
ve
daha iyi çözünürlüğe sahip yüksek hassasiyetli zamanlayıcılar
gibi ayrıcalıklı özellikleri kullanmasına olanak tanır.
Kaynaklar arası izolasyonu etkinleştirmek için web sitelerinin aşağıdaki iki HTTP üst bilgisini göndermesi gerekir:
Cross-Origin-Embedder-Policy: require-corp
Cross-Origin-Opener-Policy: same-origin
COEP'yi etkinleştirmeyle ilgili zorluklar
Kökler arası erişime kapalı web sayfalarının güvenliği ve güçlü özellikleri etkinleştirme olanağı sağlasa da COEP'nin dağıtılması zor olabilir. En büyük zorluklardan biri, tüm kaynaklar arası iframe'lerin aynı zamanda COEP ve CORP'yi dağıtması gerektiğidir. Bu başlıkları içermeyen iframe'ler tarayıcı tarafından yüklenmez.
iframe'ler genellikle COEP'yi dağıtmak kolay olmayabileceği bir üçüncü tarafça sunulur.
Kurtarma için anonim iframe
Bu noktada anonim iframe devreye girer. <iframe>
öğesine anonymous
özelliği eklendiğinde iframe farklı bir geçici depolama bölümünden yüklenir ve artık COEP kısıtlamalarına tabi olmaz.
Örnek:
<iframe anonymous src="https://example.com">
iFrame yeni bir geçici bağlamda oluşturulur ve üst düzey web sitesiyle ilişkilendirilmiş çerezlerin hiçbirine erişemez. Boş bir kurabiye kavanozundan
başlar. Benzer şekilde LocalStorage
, CacheStorage
ve IndexedDB
gibi depolama API'leri de yeni geçici bölümde veri yüklüyor ve depoluyor. Bölümlendirme, iframe'in geçerli üst düzey dokümanına ve kaynağına göre belirlenir. Üst düzey belge kaldırıldıktan sonra depolama alanı temizlenir.
Anonim iframe'ler COEP yerleştirme kurallarına tabi değildir. Bu etiketler her seferinde yeni bir boş bağlamdan yüklendiğinden yine de güvenlidir. Bunlar, verileri kişiselleştirilmeden yüklenir. Yalnızca herkese açık veriler içerirler, bu da saldırganlar için değerli değildir.
Demo
Anonim bir iframe'i şu adresten kontrol edebilirsiniz: https://anonymous-iframe.glitch.me/
Kaynak denemesine kaydolma
Anonim iframe'lerin, geliştiricilerin çapraz kaynak izolasyonunu benimsemesine yardımcı olduğundan emin olmak için bunları Chrome'da kaynak denemesi olarak 106-108 sürümleri arasında kullanıma sunuyoruz.
Web sitenizin Anonim iframe'ler kullanmasını sağlamak için kaynak denemesine kaydolun:
- Kaynağınız için jeton isteyin.
- Jetonu aşağıdaki yöntemlerden biriyle kullanın:
- HTML'nizde:
html <meta http-equiv="Origin-Trial" content="TOKEN_GOES_HERE">
- JavaScript'inizde:
js const meta = document.createElement('meta'); meta.httpEquiv = 'Origin-Trial'; meta.content = 'TOKEN_GOES_HERE'; document.head.append(meta);
- HTTP üstbilgilerinde:
text Origin-Trial: TOKEN_GOES_HERE
- HTML'nizde:
- Sayfanıza anonim bir iframe ekleyin:
html <iframe anonymous src="https://example.com">
Bu özellikle ilgili geri bildiriminiz varsa GitHub deposunda sorun kaydı oluşturun.
Üçüncü taraf kaynak denemesi
Kaynak denemesi üçüncü taraf komut dosyaları için de kullanılabilir. Bu, sayfanın sayfaya yerleştirilmiş komut dosyaları tarafından etkinleştirilebileceği anlamına gelir.
Leran, üçüncü taraf kaynak denemesine kaydolma hakkında daha fazla bilgi edinebilir.
SSS
Bu özellik diğer tarayıcılar tarafından da benimsenecek mi?
- Mozilla Konum için İsteği: Beklemede
- Konum için Webkit İsteği: Sinyal yok
- W3C ETİKETİ Konum isteği: memnun edildi
<iframe anonymous>
içine iç içe yerleştirilmiş iframe'ler anonim midir?
Evet. Devralınır. iframe anonim hale getirildiğinde, anonymous
özelliği olmasa bile alt ağacın tamamındaki tüm iframe'ler için geçerli olur.
<iframe anonymous>
kaynağından oluşturulan pop-up'lar da anonim midir?
Pop-up'lar, noopener
ayarlanmış gibi açılır. Bunlar, yeni bir normal üst düzey bağlamdan oluşturulur ve anonim değildir. Anonim iframe ile
iletişim kuramazlar.
Kaynaklar
- COOP ve COEP kullanarak web sitenizi "kökenler arası erişime kapalı" hale getirme
- Güçlü özellikler için neden "kaynaklar arası erişime" ihtiyacınız var?
- Çapraz kaynak izolasyonunu etkinleştirme kılavuzu
- Android Chrome 88 ve masaüstü Chrome 92'de SharedArrayBuffer güncellemeleri
COEP: credentialless
kullanarak CORP başlıkları olmayan kaynaklar arası kaynakları yükleme