iFrame kimlik bilgisi yok: iframe'leri COEP ortamlarına kolayca yerleştirin

Arthur Sonzogni
Arthur Sonzogni

COEP kullanan geliştiriciler artık COEP kullanmayan üçüncü taraf iframe'leri yerleştirebilir.

iFrame kimlik bilgisisiz, Chrome sürüm 110'dan varsayılan olarak etkindir. Cross-Origin-Embedder-Policy (COEP) ile çalışan geliştiricilerin, COEP'yi ayarlamayan üçüncü taraf iframe'leri yerleştirmesi konusunda en yaygın şikayetlerini çözer.

COEP'e neden ihtiyacımız var?

Bazı web API'leri, Spectre gibi yan kanal saldırısı riskini artırır. Tarayıcılar bu riski azaltmak için çapraz kaynak izolasyonu adı verilen ve COEP dağıtımını gerektiren etkinleştirmeye dayalı izole bir ortam sunar. Kaynaklar arası izolasyon, web sitelerinin SharedArrayBuffer, performance.measureUserAgentSpecificMemory() ve daha iyi çözünürlüklü yüksek hassasiyetli zamanlayıcılar gibi ayrıcalıklı özellikleri kullanmasına olanak tanır.

Kökler arası izolasyonu etkinleştirmek için web sitelerinin aşağıdaki HTTP üstbilgilerini göndermesi gerekir:

Cross-Origin-Embedder-Policy: require-corp
Cross-Origin-Opener-Policy: same-origin

COEP:credentialless, require-corp öğesine alternatif olarak da kullanılabilir. Daha fazla ayrıntı için belgeleri inceleyin.

COEP'i etkinleştirmeyle ilgili zorluklar

Kökler arası izolasyon, web sayfalarını daha güvenli hale getirir ve güçlü özellikleri etkinleştirme olanağı sağlar. Ancak COEP dağıtımı zor olabilir. En büyük zorluklardan biri, tüm çapraz kaynak iframe'lerin COEP ve CORP dağıtması gerekmesidir. Bu başlıklara sahip olmayan iframe'ler tarayıcı tarafından yüklenmez.

iframe'in kurtarabileceği kimlik bilgisi yok

COEP ayarı yapılmayan üçüncü taraf iframe'lerin yerleştirilmesine yardımcı olmak için <iframe credentialless> özelliğini kullanıma sunuyoruz. <iframe> öğesine credentialless özelliği eklendiğinde, iframe farklı ve boş bir bağlamdan yüklenir. Özellikle, çerezler olmadan yüklenir. Bu, COEP kısıtlamasının kaldırılmasına olanak tanır.

Örnek:

<iframe credentialless src="https://example.com">

Bu iframe yeni bir geçici bağlamda oluşturulmuş ve üst düzey web sitesiyle ilişkilendirilmiş çerezlerin hiçbirine erişimi yoktur. Bunun yerine boş bir çerez kavanozuyla başlar. Benzer şekilde LocalStorage, CacheStorage, IndexedDB ve benzeri depolama API'leri, verileri yeni geçici bölümde yükleyip depolar. Bölüm, hem mevcut üst düzey dokümanı hem de iframe'in kaynağını kapsar. Üst düzey doküman kaldırıldığında bu depolama alanının tamamı temizlenir.

Kimlik bilgisiz iframe'ler COEP yerleştirme kurallarına tabi değildir. Hâlâ güvendedirler: Her seferinde yeni bir boş bağlamdan yüklendiklerinden, saldırganların peşinde olan kişiselleştirilmiş veriler içermemeleri gerekir. Bir iFrame yalnızca herkese açık veriler içeriyorsa saldırganlar için değerli değildir.

Demo

Kimlik bilgisisiz iframe'in demosuna göz atabilirsiniz.

SSS

Bu özellik diğer tarayıcılar tarafından da benimsenecek mi?

Bir <iframe credentialless> içine iç içe yerleştirilmiş <iframe>, kimlik bilgileri içermiyor mu?

Evet. Devralındı. Bir iframe'in kimlik bilgisisiz hale gelmesi, credentialless özelliği olmasa bile alt ağacın tamamındaki tüm iframe'ler için geçerli olur.

<iframe credentialless> ürününden oluşturulan pop-up'ların kimlik bilgileri de eksik mi?

Pop-up'lar, noopener ayarlanmış gibi açılır. Yeni bir normal üst düzey bağlamda oluşturulur ve kimlik bilgisi içermez. Kimlik bilgisi olmayan iframe ile iletişim kuramazlar.

Belgenin kimlik bilgisi olmayan bir iframe'e yerleştirildiği nasıl belirlenir?

window.credentialless, kimlik bilgisi içermeyen bir iframe'in içinde doğru, aksi takdirde false (yanlış) değerini alır. Bunun değeri, <iframe credentialless> özelliğini desteklemeyen bir web tarayıcısında undefined.

Kaynaklar