Üçüncü tarafların sunduğu kaynaklar arası kaynaklar genellikle yeterli CORP başlıkları içermez. Kimlik bilgileri olmadan istenebiliyorlarsa artık kökler arası erişimi bu şekilde işaretleyerek etkinleştirebilirsiniz.
Yeni Kaynaklar Arası Yerleştirme Politikası (COEP) değerini kullanıma sunduk
credentialless
. Bu, tarayıcının kaynaklar arası kaynakları yüklemesine olanak tanır.
olmadan istek göndererek, Çapraz Kaynak Politikası'nı (CORP) kullanma
kimlik bilgileri (ör. çerezler) kullanma. Bu, geliştiricilerin çapraz kaynak benimsemelerine
bu sayede izolasyonu daha kolay hale getirebilirsiniz.
Kökler arası erişime neden ihtiyaç duyuyoruz.
Bazı web API'leri,
Spectre. Alıcı:
tarayıcılar, Google Analytics 4'te tarama odaklı
kaynaklar arası erişime kapalı URL'ler. Çapraz kökenli
yalıtılmış durumda, web sayfası aşağıdaki gibi ayrıcalıklı özellikleri kullanabilir:
SharedArrayBuffer
performance.measureUserAgentSpecificMemory()
ve daha iyi çözünürlüklü yüksek hassasiyetli zamanlayıcılar
ve etkinleştirmedikleri sürece kaynağı diğer kullanıcılardan ayırır.
Kaynaklar arası izolasyonun etkinleştirilmesi için web sayfasının iki HTTP üstbilgisi göndermesi gerekir:
Cross-Origin-Embedder-Policy: require-corp
Cross-Origin-Opener-Policy: same-origin
Kökler arası erişime kapalı durumda tüm kökler arası kaynakların sunulması gerekir
veya yüklenecek bir Cross-Origin-Resource-Policy
başlığı ayarlayın.
Kökler arası erişime kapalı web sitelerinin etkinleştirilmesiyle ilgili zorluklar
Kökler arası izolasyon, web sayfalarının güvenliğini artırırken web sayfalarını güçlü özellikleri etkinleştirin. zor olarak nitelendirilir. En büyük zorluklar, tüm çapraz kaynaklar için CORS veya CORP'nin etkinleştirilmesinin kaynaklar. Bu başlıklara sahip olmayan kaynaklar, şurada tarayıcı tarafından yüklenmeyecek: kökler arası erişime kapalı bir sayfadır.
Bu çapraz kökenli kaynaklar, genellikle söz konusu kaynakları kullanan üçüncü taraflar gerekli başlıkların eklenmesi kolay olmayabilir.
Peki kaynağın yüklenmek için yeterince güvenli olduğunu biliyorsak ne olur? Aslında kimlik bilgileri ile talep edilen kaynaklardır. Çünkü bunlar saldırganın kendi hesabına yükleyemeyeceği hassas bilgileri içerme olasılığı bulunan sahip olmalıdır. Bu, kimlik bilgileri olmadan istenebilecek kaynakların herkese açık olduğu anlamına gelir. kullanılabilir ve güvenli bir şekilde yüklenebilir.
credentialless
kurtarıldı
İşte COEP: credentialless
burada devreye giriyor. credentialless
yeni bir değerdir
Cross-Origin-Embedder-Policy
üstbilgisi için. require-corp
gibi,
kökler arası izolasyonu etkinleştir, ancak CORP:cross-origin
gerektirmek yerine
kaynaklar arası istekler olmadan gönderilir. Bunlar,
kimlik bilgileri (örneğin, çerezler).
Alternatif olarak şu iki başlığı görüyorsunuz:
Cross-Origin-Embedder-Policy: credentialless
Cross-Origin-Opener-Policy: same-origin
Bu durumda, istenen çapraz kaynak sunucusu istekte bulunan kişi de her zaman için yanıtın yalnızca hassas bir herkese açık bilgiler içerir.
Bu, aynı zamanda tarayıcı üçüncü taraf çerezlerini kullanımdan kaldırma planına geçin.
Demo
Bu demodaki çeşitli başlık seçeneklerini deneyebilirsiniz: https://cross-origin-isolation.glitch.me
SSS
credentialless
ortamı altında kimlik bilgisi içeren bir istek gönderebilir miyim?
Elbette isteğin modunu CORS kontrolü gerektirecek şekilde değiştirmek pahasına.
önemli olabilir. <audio>
, <img>
, <link>
, <script>
ve
ve <video>
, bildirmek için crossorigin="use-credentials"
açıkça ekleyin
kimlik bilgisi içeren istekler göndermek için tarayıcıya.
Örneğin, https://www.example.com
üzerindeki bir dokümanda
Cross-Origin-Embedder-Policy: credentialless
üstbilgisi, <img
src="https://images.example.com/avatar.png" crossorigin="use-credentials">
şunu yapacak:
kimlik bilgisi içeren bir istek gönderin.
fetch()
API için request.mode = 'cors'
kullanılabilir.
COEP: credentialless
sağlanıyorsa COEP: require-corp
, web sitem için nasıl bir fayda sağlar?
COEP: require-corp
, istek modunu manuel olarak
Kaynaklar arası bazı alt kaynaklar için çerez gerekiyorsa CORS
Kaynaklar arası iframe'leri, credentialless
ortamı altında özel başlıklar olmadan da yükleyebilir miyim?
Hayır. credentialless
ortamı altında kaynaklar arası iframe'ler yüklemek için require-corp
ile aynı koşulların sağlanması gerekir. iframe dokümanlarının iki başlıkla sunulması gerekir:
Cross-Origin-Embedder-Policy: credentialless
(veyarequire-corp
)Cross-Origin-Resource-Policy: cross-origin
İyi haber ise iframe'lere crossorigin="anonymous"
vererek bu başlıklar olmadan kaynaklar arası iframe'lerin yüklenmesine izin verme konusunda devam eden bir tartışma var.
Bu, kaynaklar arası iframe'lerin başlık olmadan ancak olmadan yüklenmesine izin verir
kimlik bilgileri.
Bu özellik diğer tarayıcılar tarafından da benimsenecek mi?
- Firefox izleme sorunu
- Konum için Webkit İsteği: Sinyal yok
- W3C TAG Konum isteği: Beklemede
Sırada ne var?
Konuyla ilgili diğer zorlukları azaltmak amacıyla iki ek güncelleme yapılacak: kökler arası erişime kapalıdır:
Politika ihlali nedeniyle SharedArrayBuffer değişikliğini uzatmak üzere Chrome kaynak denemesine yukarıdaki engeller projenin ne zaman sonlandırılacağını merak ediyor olabilir. Başlangıçta Chrome 96 sürümünde kapatılacağını duyurduk, ancak bunu Chrome 106'ya erteleyin.
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
Fotoğraf: Martin Adams açık Lansmanı kaldır