Anonim iframe kaynak denemesi: iframe'leri COEP ortamlarına kolayca yerleştirme

Arthur Sonzogni
Arthur Sonzogni

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:

  1. Kaynağınız için jeton isteyin.
  2. 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
  3. 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?

<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