COEP kullanan geliştiriciler artık COEP kullanmayan üçüncü taraf iframe'leri yerleştirebilir.
iFrame kimlik bilgisi yok özelliği Chrome sürüm 110'da varsayılan olarak etkinleştirilir. Cross-Origin-Embedder-Policy (COEP) ile çalışan, COEP'yi ayarlamayan üçüncü taraf iframe'ler yerleştirme ile ilgili en yaygın şikayet geliştiricilerine çözüm.
COEP'ye neden ihtiyaç duyarız?
Bazı web API'leri, Spectre gibi yan kanal saldırıları riskini artırır. Bu riski azaltmak amacıyla tarayıcılar, kaynaklar arası izolasyon adı verilen ve COEP dağıtımı gerektiren isteğe bağlı yalıtılmış bir ortam sunar. Kaynaklar arası izolasyon, 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.
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
parametresine alternatif olarak kullanılabilir. Daha fazla ayrıntı için dokümanlara bakın.
COEP'yi etkinleştirmeyle ilgili zorluklar
Kökler arası erişime kapalı web sayfalarının güvenliği ve güçlü özelliklerin etkinleştirilmesi sağlasa da COEP'nin dağıtılması zor olabilir. En büyük zorluklardan biri, tüm kaynaklar arası iframe'lerin COEP ve CORP'yi dağıtması gerektiğidir. Bu başlıkları içermeyen iframe'ler, tarayıcı tarafından yüklenmez.
iFrame kimlik bilgisi yok
COEP'in ayarlanmadığı üçü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. Böylece COEP kısıtlamasını kaldırabilirsiniz.
Örnek:
<iframe credentialless src="https://example.com">
Bu iframe, yeni bir geçici bağlamda oluşturulmuştur ve üst düzey web sitesiyle ilişkilendirilmiş çerezlerin hiçbirine erişemez. Bunun yerine boş bir kurabiye kavanozuyla başlar. Benzer şekilde LocalStorage, CacheStorage, IndexedDB ve benzeri depolama API'leri, verileri yeni geçici bölümde yükler ve depolar. Bölüm hem geçerli üst düzey dokümana hem de iframe'in kaynağına ayarlıdır. Üst düzey doküman kaldırıldığında bu depolama alanının tamamı temizlenir.
Kimlik bilgisi olmayan iframe'ler, COEP yerleştirme kurallarına tabi değildir. Bu veriler hâlâ güvendedir: Her seferinde yeni bir boş bağlamdan yüklendiklerinden, kişiselleştirilmiş veriler içermemeleri gerekir. Saldırganlar bunun peşindedir. Bir iframe yalnızca herkese açık veriler içeriyorsa saldırgan için değerli değildir.
Demografi
Kimlik bilgisi içermeyen iframe demosuna göz atabilirsiniz.
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>
, <iframe credentialless>
kimlik bilgisi içermeyen bir öğenin içine mi yerleştirilmiş?
Evet. Devralınır. Bir iframe'in kimlik bilgisi olmadığında bu, credentialless
özelliği olmasa bile alt ağacın tamamındaki tüm iframe'ler için geçerli olur.
<iframe credentialless>
kaynağından oluşturulan pop-up'lar da kimlik bilgisi içermez mi?
Pop-up'lar, noopener
ayarlanmış gibi açılır. Bunlar, yeni ve düzenli bir üst düzey bağlamda oluşturulur ve kimlik bilgisi içermez. Kimlik bilgisi bulunmayan iframe ile iletişim kuramazlar.
Dokümanın kimlik bilgisi içermeyen bir iframe'e yerleştirilmiş olduğu nasıl anlaşılır?
window.credentialless
, kimlik bilgisi içermeyen bir iframe içinde true (doğru), aksi durumda false (yanlış) değerini alır. Değeri, <iframe credentialless>
öğesini desteklemeyen bir web tarayıcısında undefined
olarak belirlendi.
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- IFrame kimlik bilgisi yok - Web güvenliği | MDN