Pop-up'larla etkileşim kurarken kökler arası erişime kapalı web siteleri ve siteler arası sızıntı koruması elde edin.
Cross-Origin Opener Policy (COOP) için yeni bir değer kullanıma sunuldu: restrict-properties. Güvenlik avantajları sunar ve sitenizin ödeme, kimlik doğrulama veya diğer kullanım alanları için üçüncü taraf pop-up'larıyla etkileşim kurmasına olanak tanırken kaynaklar arası yalıtımı benimsemeyi kolaylaştırır.
restrict-properties ile denemeler yapmaya başlamak için Chrome 116'da başlayacak kaynak denemesine katılın.
restrict-properties neden kullanılmalı?
restrict-properties iki temel kullanım alanına sahiptir:
- Siteler arası sızıntıları bozmadan önleme.
- Sitenizi kökler arası erişime kapalı hale getirme
Siteler arası sızıntıları bozulma olmadan önleme
Varsayılan olarak, herhangi bir web sitesi uygulamanızı pop-up pencerede açabilir ve uygulamaya referans alabilir.
Kötü amaçlı web siteleri, siteler arası sızıntılar gibi saldırılar gerçekleştirmek için bu durumdan yararlanabilir.
Bu riski azaltmak için Cross-Origin-Opener-Policy (COOP) üstbilgisini kullanabilirsiniz.
Şimdiye kadar Cross-Origin-Opener-Policy ile ilgili seçenekleriniz sınırlıydı. Aşağıdaki yöntemlerden birini uygulayabilirsiniz:
- Pop-up'larla kaynaklar arası tüm etkileşimleri engelleyen
same-origin,ayarını yapın. - Sitenizi pop-up'ta açan tüm kaynaklar arası etkileşimleri engelleyen
same-origin-allow-popups'yı ayarlayın. unsafe-nonedeğerini ayarlayın. Bu değer, pop-up'larla kaynaklar arası tüm etkileşimlere izin verir.
Bu durum, pop-up pencerede açılması ve açan pencereyle etkileşimde bulunması gereken web sitelerinin COOP'u zorunlu kılmasını imkansız hale getiriyordu. Bu durum, tek oturum açma ve ödemeler gibi önemli kullanım alanlarının siteler arası sızıntılara karşı korunmamasına neden oldu.
Cross-Origin-Opener-Policy: restrict-properties bu sorunu çözer.
restrict-properties ile çerçeve sayımı ve diğer siteler arası sızıntı saldırıları için kullanılabilecek özellikler kullanılamaz ancak postMessage ve closed aracılığıyla pencereler arasında temel iletişime izin verilir.
Bu, temel kullanım alanlarını korurken sitenin güvenliğini artırır. Örneğin:
- Pop-up pencerede hizmet sunuyorsanız
Cross-Origin-Opener-Policy: restrict-propertiesayarını yaparak kendinizi çeşitli siteler arası sızıntı saldırılarına karşı koruyabilirsiniz. Daha önce açabildiğiniz tüm sayfaları açmaya devam edebilirsiniz. - Kaynaklar arası bir pop-up'a erişmeniz gerekiyorsa
Cross-Origin-Opener-Policy: restrict-propertiesayarı, sitenizi iframe sayımından benzer şekilde korur. Bugün açabildiğiniz pop-up'ları açmaya devam edebilirsiniz. - Hem açan hem de açılan, başlığı ayarlarsa ve sayfalar kaynaklar arasıysa bu durum, başlığı ayarlayanlardan birinin davranışına benzer. Aynı kaynaklıysa tam erişim verilir.
Sitenizi kökler arası erişime kapalı hale getirme
Neden kökler arası erişime kapalı olmamız gerekiyor?
Bazı web API'leri, Spectre gibi yan kanal saldırısı riskini artırır. Bu riski azaltmak için tarayıcılar, kökler arası erişimin kapatılması adı verilen, etkinleştirme tabanlı bir yalıtılmış ortam sunar. Kökler arası erişime kapalı durumda web sayfası, SharedArrayBuffer, performance.measureUserAgentSpecificMemory() ve yüksek hassasiyetli zamanlayıcılar gibi ayrıcalıklı özellikleri daha iyi çözünürlükle kullanabilir. Ayrıca, kaynak açıkça izin verilmediği sürece diğerlerinden izole edilir.
Şimdiye kadar bu API'leri kullanmak için Cross-Origin-Opener-Policy:
same-origin ayarlamanız gerekiyordu. Ancak bu durumda, tek oturum açma ve ödemeler gibi ihtiyacınız olabilecek tüm kaynaklar arası pop-up akışları bozulur.
Kökler arası izolasyonu etkinleştirmek için artık Cross-Origin-Opener-Policy: same-origin yerine Cross-Origin-Opener-Policy: restrict-properties kullanılabilir.
Açıcı ilişkisini kesmek yerine, yalnızca window.postMessage() ve window.closed'nin minimum iletişim alt kümesiyle kısıtlar.
Aşağıdaki iki başlığı kullanarak kaynaklar arası yalıtımı etkinleştirebilirsiniz:
Cross-Origin-Opener-Policy: restrict-properties
Cross-Origin-Embedder-Policy: require-corp
veya
Cross-Origin-Opener-Policy: restrict-properties
Cross-Origin-Embedder-Policy: credentialless
credentialless hakkında daha fazla bilgi edinmek için COEP: credentialless kullanarak CORP üstbilgileri olmadan kaynaklar arası kaynakları yükleme başlıklı makaleyi inceleyin.
Demo
Bu kaynaklar arası izolasyon demosunda çeşitli başlık seçeneklerini deneyin.
Kaynak denemesiyle denemeler yapın
Cross-Origin-Opener-Policy: restrict-properties ile deneme yapmak için kaynak denemesine kaydolun.
Tarayıcı desteği
Cross-Origin-Opener-Policy: restrict-properties şu anda yalnızca Chrome'da desteklenmektedir. Diğer tarayıcılar, standartlaştırma tartışmasına aktif olarak katılmaktadır.
SSS
Web sitemin aynı kaynaklı pop-up'larla iletişim kurması gerekiyor. Kökler arası erişimi kapatmak için COOP: restrict-properties kullanmalı mıyım?
Hem pop-up'ta hem de ana sayfanızda COOP: restrict-properties ayarını belirlemek kısıtlamalara neden olmaz. Bu ayarı yalnızca pop-up'ta veya yalnızca ana sayfada ayarlamak, aynı kaynaklı olsalar bile açıcıdaki postMessage ve closed dışındaki mülklere erişimi engeller.
İzin verilen özellikler grubu sabit mi?
Şu ana kadar alınan geri bildirimlere göre, iş akışlarının büyük çoğunluğu için window.postMessage ve window.closed yeterli olacak gibi görünüyor ancak bu özelliği diğer mülklere de açmayı değerlendirmeye devam ediyoruz. Yalnızca postMessage ve closed kullanılarak çözülemeyen bir kullanım alanınız varsa geri bildiriminizi Deneme Yapma Amacı başlıklı ileti dizisinde paylaşın.
Kaynaklar
- COOP ve COEP kullanarak web sitenizi "kökler arası erişime kapalı" hale getirme
- Güçlü özellikler için neden "kökler arası erişime kapalı" bağlamına ihtiyacınız var?
- Kaynaklar arası izolasyonu etkinleştirme kılavuzu
- Android Chrome 88 ve masaüstü Chrome 92'deki SharedArrayBuffer güncellemeleri
- Load cross-origin resources without CORP headers using
COEP: credentialless- Chrome Developers - Anonymous iframe origin trial: Easily embed iframes in COEP environments - Chrome Developers