SharedArrayBuffer
, performance.measureUserAgentSpecificMemory()
ve yüksek çözünürlüklü zamanlayıcı gibi güçlü özellikleri daha yüksek hassasiyetle kullanmak için kökler arası erişime kapalı web sitelerinin neden gerekli olduğunu öğrenin.
Giriş
Web sitenizi "kökler arası erişime kapalı" yapma konusunda COOP ile COEP'le birlikte "çapraz kaynak"ın benimsenmesini izole" durumu COOP ve COEP kullanarak oluşturabilirsiniz. Bu makale, Yeşil Ofis'in Tarayıcıda güçlü özellikleri etkinleştirmek için çapraz kaynak izolasyonunun neden gerekli olduğu.
Arka plan
Web, aynı kaynak temelinde kurulmuştur
politika: kullanıcıların uygulamanızı veya oyununuzu
Dokümanlar ve komut dosyalarının başka bir kaynaktaki kaynaklarla nasıl etkileşim kurduğunu gösterir. Bu
ilkesi, web sitelerinin kaynaklar arası kaynaklara erişim yollarını kısıtlar. Örneğin,
örneğin, https://a.example
sitesindeki bir dokümanın verilere erişmesi engellendi
https://b.example
adresinde barındırılıyor.
Ancak, aynı kaynak politikasında geçmişteki bazı istisnalar söz konusudur. Her web sitesi:
- Kaynaklar arası iframe'leri yerleştirme
- Resimler veya komut dosyaları gibi çapraz kaynak kaynakları dahil et
- DOM referansıyla kaynaklar arası pop-up pencereleri aç
Web sıfırdan tasarlanabilseydi, bu istisnalar mevcut olmazdı. Ne yazık ki, web topluluğu bir kampanyanın temel avantajlarını aynı kaynak politikasına tabiyseniz web zaten bu istisnalara güveniyordu.
Böyle bir lax aynı kaynaklı politikanın güvenlikle ilgili yan etkileri iki
yolları. Bunun bir yolu, Cross Ads Programı'nın
Kaynak Kaynak Paylaşımı (CORS)
Amacı, sunucunun başka bir kullanıcıyla kaynak paylaşımına izin
kaynak gösterilir. Diğer bir yol da
kaynaklar arasında geçiş yaparak geriye dönük uyumluluğu korumanıza yardımcı olabilir. Böyle
kökler arası kaynaklara "opak" denir kaynaklar. Örneğin, müşterilere
Bir çapraz kaynak resmin piksellerini CanvasRenderingContext2D
aracılığıyla değiştirme
resme CORS uygulanmadığı sürece başarısız olur.
Tüm bu politika kararları, içeriklere göz atan bir bağlam grubu içinde gerçekleşir.
Uzun bir süre boyunca, CORS ile opak kaynakların birlikte kullanımı, güvenli değildir. Bazen uç durumlar (ör. JSON) güvenlik açıkları) tespit edildi ve yama uygulanması gerekti, ancak genel olarak kaynaklar arası kaynakların ham baytlarına doğrudan okuma erişimi sağlamak, işidir.
Tüm bu değişiklikler
Spectre,
kodunuzla aynı tarama içerik grubuna yüklenen veriler oluşturur
somut olarak ortaya koyar. Saldırganlar, belirli işlemlerin süresini ölçerek
CPU önbelleklerinin içeriğini ve bu bilgiler aracılığıyla
işlem' hafızada bulabilirsiniz. Bu tür zamanlama saldırıları, düşük ayrıntı düzeyine sahip zamanlayıcılarla mümkündür
yüksek ayrıntı düzeyine sahip zamanlayıcılarla hızlandırılabilen
hem açık (performance.now()
gibi) hem de kapalı (ör.
SharedArrayBuffer
sn.) evil.com
, kaynaklar arası resim yerleştirirse
Hayalet saldırısı, piksel verilerini okur. Bu da korumaların
"opaklık" etkisiz.
İdeal olarak, tüm kaynaklar arası istekler sunucu tarafından açıkça incelenmelidir. sahip olan kişidir. İnceleme süreci Google tarafından bir kaynak sahibi sunucuyu devre dışı bırakırsanız veriler hiçbir zaman içerik grubu oluşturur ve dolayısıyla hiçbir Spectre'ın erişemeyeceği bir yerde saldırıya uğrayan çeşitli yöntemlerdir. Kökler arası izole bir eyalet diyoruz. COOP+COEP tam olarak bu anlama geliyor.
Kökler arası erişime kapalı bir durumda, istekte bulunan site daha az olarak değerlendirilir
Bu da SharedArrayBuffer
gibi güçlü özelliklerin kilidini açar.
performance.measureUserAgentSpecificMemory()
ve yüksek çözünürlük
daha iyi doğrulukta zamanlayıcılar kullanabilirsiniz.
Spectre benzeri saldırılar için kullanılamaz. Aynı zamanda,
document.domain
Çapraz Kaynak Yerleştirme Politikası
Çapraz Kaynak Yerleştirme Aracı Politika (COEP), açıkça izin verilmeyen kaynaklar arası kaynakların yüklenmesini (CORP veya CORS kullanarak). Bu özellik ile beyanların bir dokümanın bu tür kaynakları yükleyememesi.
Bu politikayı etkinleştirmek için aşağıdaki HTTP başlığını dokümana ekleyin:
Cross-Origin-Embedder-Policy: require-corp
require-corp
anahtar kelimesi, COEP için kabul edilen tek değerdir. Bu,
dokümanın yalnızca aynı kaynaktan kaynaklar yükleyebileceğini belirtmelidir.
açıkça başka bir kaynaktan yüklenebilir olarak işaretlenen kaynaklar.
Kaynakların başka bir kaynaktan yüklenebilmeleri için Kaynaklar Arası Kaynak Paylaşımı (CORS) veya Kaynaklar Arası Kaynak Politikası (CORP).
Kaynaklar Arası Kaynak Paylaşımı
Kaynaklar arası kaynak, Kaynaklar Arası Kaynak Paylaşımı'nı destekliyorsa
(CORS) için
crossorigin
özelliğinin
kullanarak web sayfanıza ekleyebilirsiniz.
<img src="https://third-party.example.com/image.jpg" crossorigin>
Örneğin, bu resim kaynağı CORS başlıklarıyla sunuluyorsa
crossorigin
özelliği ile birlikte kaynağı getirme isteği CORS'yi kullanır.
mod'u tıklayın. Bu ayrıca
CORS üstbilgilerini ayarlamadığı sürece resmin yüklenmesini engeller.
Benzer şekilde, çapraz kaynak verileri fetch()
yöntemini kullanarak alabilirsiniz.
sunucu doğru şekilde yanıt verdiği sürece özel bir işlem gerektirmez.
HTTP
başlıklar ekleyin.
Kaynaklar Arası Kaynak Politikası
Kaynaklar Arası Kaynak Politikası (CORP) ilk başta, kaynaklarınızın herhangi bir şekilde başka bir kaynak tarafından yüklendi. COEP bağlamında CORP, kaynağı belirtebilir sahibinin politikasını belirler.
Cross-Origin-Resource-Policy
başlığı üç olası değer alır:
Cross-Origin-Resource-Policy: same-site
same-site
işaretli kaynaklar yalnızca aynı siteden yüklenebilir.
Cross-Origin-Resource-Policy: same-origin
same-origin
işaretli kaynaklar yalnızca aynı kaynaktan yüklenebilir.
Cross-Origin-Resource-Policy: cross-origin
cross-origin
işaretli kaynaklar herhangi bir web sitesi tarafından yüklenebilir. (Bu
değer anahtar kelimesi
CORP spesifikasyonuna ilişkin bilgiler sağlar.)
Çapraz Kaynak Açıcı Politikası
Kaynaklar Arası Açıcı Politikası
(COOP),
diğer dokümanlardan ayrılması için, üst düzey bir pencerenin diğer dokümanlardan izole edilmesini ve
ile doğrudan etkileşimde bulunamamaları için farklı göz atma bağlam grupları
üst düzey pencereden. Örneğin, COOP içeren bir dokümanda pop-up açıldığında
window.opener
özelliği null
olacak. Ayrıca, .closed
açılış öğesinin buna referansı true
sonucunu döndürür.
Cross-Origin-Opener-Policy
başlığı üç olası değer alır:
Cross-Origin-Opener-Policy: same-origin
same-origin
olarak işaretlenen dokümanlar aynı tarama bağlamını paylaşabilir
grubu aynı kaynak dokümanlara sahip olan ve same-origin
açık şekilde işaretlenmiş olan bir grup için de kullanılabilir.
Cross-Origin-Opener-Policy: same-origin-allow-popups
same-origin-allow-popups
içeren üst düzey bir doküman,
pop-up'larının gösterilmesini engelleyebilir.
unsafe-none
tutarında bir COOP ayarlanıyor.
Cross-Origin-Opener-Policy: unsafe-none
unsafe-none
, varsayılandır ve dokümanın, açan kişinin sayfasına eklenmesine izin verir.
göz atma bağlam grubu (COOP değeri same-origin
değilse).
Özet
SharedArrayBuffer
gibi güçlü özelliklere garantili erişim istiyorsanız,
performance.measureUserAgentSpecificMemory()
veya yüksek çözünürlük
daha yüksek hassasiyetli zamanlayıcılar olduğundan emin olun.
dokümanınızın hem require-corp
değerine sahip COEP hem de
same-origin
değerine sahip COOP. Bunlardan biri yoksa tarayıcı
bu güçlü özellikleri güvenli bir şekilde etkinleştirmek için yeterli izolasyonu garanti etmez. Siz
kontrol ederek sayfanızın durumunu belirleyebilir.
self.crossOriginIsolated
true
değerini döndürür.
Bunu uygulama adımlarını Web sitenizi "çapraz kaynak" olarak ayarlama izole" COOP ve COEP kullanarak test edilir.