COEP kullanan geliştiriciler artık COEP kullanmayan üçüncü taraf iFrame'leri yerleştirebilir.
Kimlik bilgisi gerektirmeyen iframe, Chrome 110 sürümünden itibaren varsayılan olarak etkindir. Cross-Origin-Embedder-Policy (COEP) ile çalışan geliştiricilerin en yaygın şikayetini çözer: COEP'yi ayarlamayan üçüncü taraf iFrame'leri yerleştirme.
COEP'ye neden ihtiyacımız var?
Bazı web API'leri, Spectre gibi yan kanal saldırılarının riskini artırır. Bu riski azaltmak için tarayıcılar, COEP'nin dağıtılmasını gerektiren kökler arası erişime kapalı adlı etkinleştirmeye dayalı bir izole ortam sunar. Kaynaklar arası izolasyon, web sitelerinin SharedArrayBuffer
, performance.measureUserAgentSpecificMemory()
ve daha iyi çözünürlükte 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 HTTP üstbilgilerini göndermesi gerekir:
Cross-Origin-Embedder-Policy: require-corp
Cross-Origin-Opener-Policy: same-origin
require-corp
'ye alternatif olarak COEP:credentialless de kullanılabilir. Daha fazla ayrıntı için dokümanları inceleyin.
COEP'yi etkinleştirmeyle ilgili sorunlar
Kökler arası erişime kapalı web siteleri, web sayfalarına daha iyi güvenlik ve güçlü özellikleri etkinleştirme olanağı sunsa da COEP'yi dağıtmak zor olabilir. En büyük zorluklardan biri, tüm kaynak dışı iframe'lerin COEP ve CORP'u dağıtması gerektiğidir. Bu üstbilgilerin bulunmadığı iframe'ler tarayıcı tarafından yüklenmez.
Kimlik bilgisi gerektirmeyen iframe'ler kurtarıcınız
COEP ayarını yapmayan üçüncü taraf iFrame'leri yerleştirmenize yardımcı olmak için <iframe credentialless>
özelliğini kullanıma sunuyoruz. credentialless
özelliği <iframe>
öğesine eklendiğinde, iFrame farklı ve boş bir bağlamda yüklenir. Özellikle çerez olmadan yüklenir. Bu sayede COEP kısıtlaması kaldırılabilir.
Örnek:
<iframe credentialless src="https://example.com">
Bu iFrame, yeni bir geçici bağlamda oluşturulur ve üst düzey web sitesiyle ilişkili çerezlerden hiçbirine erişemez. Bunun yerine, boş bir çerez kavanozu ile başlar. Benzer şekilde, LocalStorage, CacheStorage, IndexedDB gibi depolama API'leri verileri yeni geçici bölüme yükler ve depolar. Bölünme, hem mevcut üst düzey doküman hem de iFrame'in kaynağına göre kapsamlandırılır. Üst düzey doküman yüklendikten sonra bu depolama alanının tamamı temizlenir.
Kimlik bilgisi içermeyen iframe'ler, COEP yerleşimi kurallarına tabi değildir. Bu veriler yine de güvenlidir: Her seferinde yeni ve boş bir bağlamdan yüklendikleri için saldırganların aradığı kişiselleştirilmiş verileri içermezler. Bir iframe yalnızca herkese açık veriler içeriyorsa saldırgan için değerli değildir.
Demo
Kimlik bilgisi içermeyen bir iframe'in demosunu inceleyebilirsiniz.
SSS
Bu özellik diğer tarayıcılar tarafından da kullanılacak mı?
- Mozilla'nın pozisyon isteği: Beklemede
- Webkit konum isteği: Sinyal yok
- W3C TAG Konum isteği: tatmin edildi
<iframe>
, <iframe credentialless>
içinde yer alıyor mu?
Evet. Bu değer devralınır. Bir iframe kimlik bilgisi olmadan oluşturulduktan sonra, credentialless
özelliği olmasa bile tüm alt ağaçtaki tüm iframe'ler için geçerli olur.
<iframe credentialless>
üzerinden oluşturulan pop-up'lar da kimlik bilgisi olmadan mı oluşturuluyor?
Pop-up'lar noopener
ayarlanmış gibi açılır. Bunlar yeni bir normal üst düzey bağlamda oluşturulur ve kimlik bilgisi içermez. Kimlik bilgisi içermeyen iframe ile iletişim kuramaz.
Dokümanın kimlik bilgisi içermeyen bir iFrame'e yerleştirilip yerleştirilmediğini nasıl anlarım?
window.credentialless
, kimlik bilgisi içermeyen bir iframe içinde doğru, aksi takdirde yanlış değerini alır. <iframe credentialless>
özelliğini desteklemeyen bir web tarayıcısında değeri undefined
olur.
Kaynaklar
- COOP ve COEP'yi kullanarak web sitenizi "kaynaklar arası izole" hale getirme
- Güçlü özellikler için "kökler arası erişime kapalı" özelliğine neden ihtiyacınız var?
- Kaynaklar arası izolasyonu etkinleştirme kılavuzu
- Android Chrome 88 ve masaüstü Chrome 92'de SharedArrayBuffer güncellemeleri
COEP: credentialless
kullanarak kaynakta farklı kaynaklara ait kaynakları CORP üstbilgileri olmadan yükleme- IFrame kimlik bilgisi olmadan - Web güvenliği | MDN