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?
- Konum için Mozilla İsteği: Beklemede
- Konum için Webkit İsteği: Sinyal yok
- W3C ETİKETİ Konum isteği: karşılandı
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
- Web sitenizi "kaynaklar arası erişime kapalı" hale getirme COOP ve COEP kullanarak
- "Kökler arası erişime kapalı" neden gerekiyor?
- Kaynaklar arası izolasyonu etkinleştirme rehberi
- 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- IFrame kimlik bilgisi içermeyen - Web güvenliği | MDN