Sitenizi güvende tutabilecek başlıklar hakkında daha fazla bilgi edinin ve en önemli ayrıntıları hızlıca arayın.
Bu makalede, web sitenizi korumak için kullanabileceğiniz en önemli güvenlik başlıkları listelenmektedir. Web tabanlı güvenlik özelliklerini anlamak, bunları web sitenizde nasıl uygulayacağınızı öğrenmek ve hatırlatmaya ihtiyaç duyduğunuzda referans olarak kullanın.
- Hassas kullanıcı verilerini işleyen web siteleri için önerilen güvenlik başlıkları:
- İçerik Güvenliği Politikası (İGP)
- Güvenilir Türler
- Tüm web siteleri için önerilen güvenlik üstbilgileri:
- X-Content-Type-Options
- X-Frame-Options
- Cross-Origin Resource Policy (CORP)
- Cross-Origin Opener Policy (COOP)
- HTTP Strict Transport Security (HSTS)
- Gelişmiş özelliklere sahip web siteleri için güvenlik başlıkları:
- Merkezler Arası Kaynak Paylaşımı (CORS)
- Çapraz Kaynak Yerleştirme Politikası (COEP)
Güvenlik başlıklarına geçmeden önce web'deki bilinen tehditler ve bu güvenlik başlıklarını neden kullanmak isteyeceğiniz hakkında bilgi edinin.
Sitenizi ekleme güvenlik açıklarından koruma
Enjeksiyon güvenlik açıkları, uygulamanız tarafından işlenen güvenilmeyen veriler uygulamanızın davranışını etkileyebildiğinde ve genellikle saldırgan tarafından kontrol edilen komut dosyalarının yürütülmesine yol açtığında ortaya çıkar. Yerleştirme hatalarından kaynaklanan en yaygın güvenlik açığı, yansıtılan XSS, depolanan XSS, DOM tabanlı XSS ve diğer varyantlar dahil olmak üzere çeşitli biçimlerdeki siteler arası komut dosyası çalıştırmadır (XSS).
Bir XSS güvenlik açığı, genellikle saldırgana uygulama tarafından işlenen kullanıcı verilerine ve aynı web kaynağında barındırılan diğer tüm bilgilere tam erişim sağlayabilir.
Geleneksel enjeksiyon savunmaları arasında HTML şablon sistemlerinde otomatik kaçışın tutarlı bir şekilde kullanılması, tehlikeli JavaScript API'lerinin kullanılmaması, dosya yüklemelerinin ayrı bir alanda barındırılması ve kullanıcı tarafından kontrol edilen HTML'nin temizlenmesi yoluyla kullanıcı verilerinin uygun şekilde işlenmesi yer alır.
- Enjeksiyon riskini azaltmak için uygulamanız tarafından hangi komut dosyalarının yürütülebileceğini kontrol etmek üzere İçerik Güvenliği Politikası (İGP)'ni kullanın.
- Tehlikeli JavaScript API'lerine iletilen verilerin temizlenmesini zorunlu kılmak için Trusted Types'ı kullanın.
- Tarayıcının, web sitenizin kaynaklarının MIME türlerini yanlış yorumlamasını önlemek için X-Content-Type-Options'ı kullanın. Bu durum, komut dosyası yürütülmesine neden olabilir.
Sitenizi diğer web sitelerinden izole etme
Web'in açık olması, web sitelerinin bir uygulamanın güvenlik beklentilerini ihlal edebilecek şekilde etkileşime girmesine olanak tanır. Bu durum, beklenmedik şekilde kimliği doğrulanmış istekler göndermeyi veya başka bir uygulamadan gelen verileri saldırganın dokümanına yerleştirmeyi içerir. Bu sayede saldırgan, uygulama verilerini değiştirebilir veya okuyabilir.
Web yalıtımını zayıflatan yaygın güvenlik açıkları arasında tıklama hırsızlığı, siteler arası istek sahteciliği (CSRF), siteler arası komut dosyası ekleme (XSSI) ve çeşitli siteler arası sızıntılar yer alır.
- Dokümanlarınızın kötü amaçlı bir web sitesi tarafından yerleştirilmesini önlemek için X-Frame-Options'ı kullanın.
- Web sitenizin kaynaklarının merkezler arası bir web sitesine dahil edilmesini önlemek için Merkezler Arası Kaynak Politikası'nı (CORP) kullanın.
- Web sitenizin pencerelerini kötü amaçlı web sitelerinin etkileşimlerinden korumak için Cross-Origin Opener Policy (COOP)'yi kullanın.
- Web sitenizin kaynaklarına merkezler arası dokümanlardan erişimi kontrol etmek için Merkezler Arası Kaynak Paylaşımı (CORS)'yı kullanın.
Bu başlıklarla ilgileniyorsanız Post-Spectre Web Development adlı makaleyi okuyabilirsiniz.
Güçlü bir web sitesini güvenli bir şekilde oluşturun
Spectre, aynı göz atma bağlamı grubuna yüklenen tüm verileri aynı kaynak politikasına rağmen okunabilir hale getirebilir. Tarayıcılar, "kaynaklar arası izolasyon" adı verilen özel bir ortamın arkasındaki güvenlik açığından yararlanabilecek özellikleri kısıtlar. Kökler arası erişime kapalı web siteleri ile SharedArrayBuffer gibi güçlü özellikleri kullanabilirsiniz.
- Çapraz kaynak izolasyonunu etkinleştirmek için COOP ile birlikte Cross-Origin Embedder Policy (COEP) kullanın.
Sitenize gelen trafiği şifreleme
Şifreleme sorunları, bir uygulama aktarım halindeki verileri tam olarak şifrelemediğinde ortaya çıkar. Bu durumda, dinleme saldırısı yapanlar kullanıcının uygulamayla etkileşimleri hakkında bilgi edinebilir.
Yetersiz şifreleme aşağıdaki durumlarda ortaya çıkabilir: HTTPS kullanılmaması, karma içerik, Secure
özelliği (veya __Secure
önek) olmadan çerez ayarlanması ya da gevşek CORS doğrulama
mantığı.
- İçeriklerinizi tutarlı bir şekilde HTTPS üzerinden sunmak için HTTP Strict Transport Security (HSTS) kullanın.
İçerik Güvenliği Politikası (İGP)
Siteler arası komut dosyası çalıştırma (XSS), bir web sitesindeki güvenlik açığının kötü amaçlı bir komut dosyasının yerleştirilmesine ve yürütülmesine izin verdiği bir saldırıdır.
Content-Security-Policy, sayfa tarafından yürütülebilecek komut dosyalarını kısıtlayarak XSS saldırılarını azaltmak için ek bir katman sağlar.
Aşağıdaki yaklaşımlardan birini kullanarak katı CSP'yi etkinleştirmeniz önerilir:
- HTML sayfalarınızı sunucuda oluşturuyorsanız nonce tabanlı katı bir CSP kullanın.
- HTML'nizin statik olarak sunulması veya önbelleğe alınması gerekiyorsa (ör. tek sayfalık bir uygulama ise) karma tabanlı katı bir CSP kullanın.
Örnek kullanım: nonce tabanlı bir İGP
Content-Security-Policy:
script-src 'nonce-{RANDOM1}' 'strict-dynamic' https: 'unsafe-inline';
object-src 'none';
base-uri 'none';
Önerilen kullanımlar
1. Nonce tabanlı katı bir CSP kullanın {: #nonce-based-csp}
HTML sayfalarınızı sunucuda oluşturuyorsanız nonce tabanlı katı bir CSP kullanın.
Sunucu tarafında her istek için yeni bir komut dosyası nonce değeri oluşturun ve aşağıdaki başlığı ayarlayın:
sunucu yapılandırma dosyası
Content-Security-Policy: script-src 'nonce-{RANDOM1}' 'strict-dynamic' https: 'unsafe-inline'; object-src 'none'; base-uri 'none';
HTML'de komut dosyalarını yüklemek için tüm <script> etiketlerinin nonce özelliğini aynı {RANDOM1} dizesine ayarlayın.
index.html
<script nonce="{RANDOM1}" src="https://example.com/script1.js"></script>
<script nonce="{RANDOM1}">
// Inline scripts can be used with the <code>nonce</code> attribute.
</script>Google Fotoğraflar, nonce tabanlı katı İGP'ye iyi bir örnektir. Nasıl kullanıldığını görmek için Geliştirici Araçları'nı kullanın.
2. Karma tabanlı katı bir İGP kullanın {: #hash-based-csp}
HTML'nizin statik olarak sunulması veya önbelleğe alınması gerekiyorsa (örneğin, tek sayfalık bir uygulama oluşturuyorsanız) karma tabanlı katı bir CSP kullanın.
sunucu yapılandırma dosyası
Content-Security-Policy: script-src 'sha256-{HASH1}' 'sha256-{HASH2}' 'strict-dynamic' https: 'unsafe-inline'; object-src 'none'; base-uri 'none';
HTML'de, karma tabanlı bir politika uygulamak için komut dosyalarınızı satır içi yapmanız gerekir. Bunun nedeni, çoğu tarayıcının harici komut dosyalarını karma oluşturma işlemini desteklememesidir.
index.html
<script> ...// your script1, inlined </script> <script> ...// your script2, inlined </script>
Harici komut dosyalarını yüklemek için B seçeneği: karma tabanlı İGP yanıt başlığı bölümündeki "Kaynaklı komut dosyalarını dinamik olarak yükleme" başlıklı makaleyi inceleyin.
CSP Evaluator, İGP'nizi değerlendirmek için iyi bir araçtır. Aynı zamanda, tek seferlik şifre tabanlı katı İGP için de iyi bir örnektir. Nasıl kullanıldığını görmek için Geliştirici Araçları'nı kullanın.
Desteklenen tarayıcılar
CSP hakkında dikkat edilmesi gereken diğer noktalar
frame-ancestorsyönergesi, güvenilmeyen sitelerin sitenizi yerleştirmesine izin vermeniz durumunda ortaya çıkan bir risk olan tıklama korsanlığına karşı sitenizi korur. Daha basit bir çözüm tercih ederseniz yüklenmeyi engellemek içinX-Frame-Optionskullanabilirsiniz. Ancakframe-ancestors, yalnızca belirli kaynakların yerleştiriciler olarak kullanılmasına izin veren gelişmiş bir yapılandırma sunar.- Sitenizin tüm kaynaklarının HTTPS üzerinden yüklendiğinden emin olmak için bir CSP kullanmış olabilirsiniz. Bu durumun önemi azaldı: Günümüzde çoğu tarayıcı karma içerikleri engelliyor.
- Ayrıca yalnızca raporlama modunda bir CSP ayarlayabilirsiniz.
- CSP'yi sunucu tarafında başlık olarak ayarlayamıyorsanız meta etiketi olarak da ayarlayabilirsiniz. Meta etiketler için yalnızca rapor modunu kullanamayacağınızı unutmayın (bu durum değişebilir).
Daha fazla bilgi
Güvenilir Türler
DOM tabanlı XSS, eval() veya .innerHTML gibi dinamik kod yürütmeyi destekleyen bir alıcıya kötü amaçlı verilerin iletildiği bir saldırıdır.
Trusted Types, DOM XSS'den arındırılmış uygulamalar yazmak, güvenlik incelemesi yapmak ve bu uygulamaları sürdürmek için araçlar sağlar. CSP aracılığıyla etkinleştirilebilirler ve tehlikeli web API'lerinin yalnızca özel bir nesneyi (güvenilir tür) kabul etmesini sağlayarak JavaScript kodunu varsayılan olarak güvenli hale getirirler.
Bu nesneleri oluşturmak için güvenlik politikaları tanımlayabilirsiniz. Bu politikalarda, veriler DOM'a yazılmadan önce güvenlik kurallarının (ör. kaçış veya temizleme) tutarlı bir şekilde uygulandığından emin olabilirsiniz. Bu politikalar, kodda DOM XSS'ye neden olabilecek tek yerlerdir.
Kullanım örnekleri
Content-Security-Policy: require-trusted-types-for 'script'
// Feature detection
if (window.trustedTypes && trustedTypes.createPolicy) {
// Name and create a policy
const policy = trustedTypes.createPolicy('escapePolicy', {
createHTML: str => {
return str.replace(/\</g, '<').replace(/>/g, '>');
}
});
}
// Assignment of raw strings is blocked by Trusted Types.
el.innerHTML = 'some string'; // This throws an exception.
// Assignment of Trusted Types is accepted safely.
const escaped = policy.createHTML('<img src=x onerror=alert(1)>');
el.innerHTML = escaped; // '&lt;img src=x onerror=alert(1)&gt;'
Önerilen kullanımlar
-
Tehlikeli DOM hedefleri için Trusted Types'ı zorunlu kılma CSP ve Trusted Types üstbilgisi:
Content-Security-Policy: require-trusted-types-for 'script'Şu anda
'script',require-trusted-types-foryönergesi için kabul edilen tek değerdir.Elbette, Trusted Types'ı diğer CSP yönergeleriyle birleştirebilirsiniz:
Yukarıdaki nonce tabanlı CSP'yi Trusted Types ile birleştirme:
Content-Security-Policy:
script-src 'nonce-{RANDOM1}' 'strict-dynamic' https: 'unsafe-inline';
object-src 'none';
base-uri 'none';
require-trusted-types-for 'script';
<aside class="note"><b>Not: </b> Ek bir <code>trusted-types</code> yönergesi (örneğin, <code>trusted-types myPolicy</code>) ayarlayarak izin verilen Trusted Types politika adlarını sınırlayabilirsiniz. Ancak bu zorunlu değildir. </aside>
-
Politika tanımlama
Politika:
// Feature detection if (window.trustedTypes && trustedTypes.createPolicy) { // Name and create a policy const policy = trustedTypes.createPolicy('escapePolicy', { createHTML: str => { return str.replace(/\/g, '>'); } }); }
-
Politikayı uygulama
Verileri DOM'a yazarken politikayı kullanma:
// Assignment of raw strings are blocked by Trusted Types. el.innerHTML = 'some string'; // This throws an exception.</p> <p>// Assignment of Trusted Types is accepted safely. const escaped = policy.createHTML('<img src="x" onerror="alert(1)">'); el.innerHTML = escaped; // '<img src=x onerror=alert(1)>'
require-trusted-types-for 'script'ile güvenilir bir tür kullanmak zorunludur. Dizeyle birlikte tehlikeli bir DOM API'si kullanmak hataya neden olur.
Desteklenen tarayıcılar
Daha fazla bilgi
- Trusted Types ile DOM tabanlı siteler arası komut dosyası çalıştırma açıklarını önleme
- CSP: require-trusted-types-for - HTTP | MDN
- CSP: trusted-types - HTTP | MDN
- Güvenilir Türler demosu: Geliştirici Araçları İnceleyici'yi açıp neler olduğunu görün.
X-Content-Type-Options
Alanınızdan kötü amaçlı bir HTML belgesi sunulduğunda (örneğin, bir fotoğraf hizmetine yüklenen resim geçerli HTML işaretlemesi içeriyorsa) bazı tarayıcılar bunu etkin bir belge olarak değerlendirir ve uygulama bağlamında komut dosyalarının yürütülmesine izin verir. Bu durum, siteler arası komut dosyası çalıştırma hatasına yol açar.
X-Content-Type-Options: nosniff, tarayıcıya belirli bir yanıt için Content-Type üstbilgisinde ayarlanan MIME türünün doğru olduğunu bildirerek bunu önler. Bu üstbilgi, tüm kaynaklarınız için önerilir.
Kullanım örneği
X-Content-Type-Options: nosniff
Önerilen kullanımlar
X-Content-Type-Options: nosniff, sunucunuzdan sunulan tüm kaynaklar için doğru Content-Type üstbilgisiyle birlikte önerilir.
Doküman HTML'siyle gönderilen örnek üstbilgiler
X-Content-Type-Options: nosniff Content-Type: text/html; charset=utf-8
Desteklenen tarayıcılar
Daha fazla bilgi
X-Frame-Options
Kötü amaçlı bir web sitesi, sitenizi iFrame olarak yerleştirebiliyorsa bu durum, saldırganların tıklama hırsızlığı ile kullanıcı tarafından istenmeyen işlemler başlatmasına olanak tanıyabilir. Ayrıca, bazı durumlarda Spectre türü saldırılar, kötü amaçlı web sitelerine yerleştirilmiş bir belgenin içeriği hakkında bilgi edinme fırsatı verir.
X-Frame-Options, bir tarayıcının bir sayfayı <frame>, <iframe>, <embed> veya <object> içinde oluşturmasına izin verilip verilmeyeceğini gösterir. Tüm dokümanların
diğer dokümanlara yerleştirilmeye izin verip vermediğini belirtmek için bu başlığı göndermesi önerilir.
Kullanım örneği
X-Frame-Options: DENY
Önerilen kullanımlar
Yerleştirilmek üzere tasarlanmamış tüm belgeler X-Frame-Options üstbilgisini kullanmalıdır.
Aşağıdaki yapılandırmaların bir iFrame'in yüklenmesini nasıl etkilediğini bu demoda deneyebilirsiniz. X-Frame-Options
açılır menüsünü değiştirin ve iFrame'i yeniden yükle düğmesini tıklayın.
Web sitenizin diğer web siteleri tarafından yerleştirilmesini engeller.
Başka dokümanlar tarafından yerleştirilmeyi reddetme
X-Frame-Options: DENYWeb sitenizin, kaynaklar arası web siteleri tarafından yerleştirilmesini engeller.
Yalnızca aynı kaynaklı dokümanlara yerleştirilmesine izin verilir.
X-Frame-Options: SAMEORIGINDesteklenen tarayıcılar
Daha fazla bilgi
Çapraz Kaynak Kaynak Politikası (CORP)
Bir saldırgan, web tabanlı siteler arası sızıntılardan yararlanarak kaynaklar hakkında bilgi edinmek için başka bir kaynaktan (ör. sitenizden) kaynaklar yerleştirebilir.
Cross-Origin-Resource-Policy, yüklenebileceği web sitelerini belirterek bu riski azaltır. Başlık üç değerden birini alır:
same-origin, same-site ve cross-origin. Tüm kaynakların, diğer web siteleri tarafından yüklenmeye izin verip vermediklerini belirtmek için bu başlığı göndermeleri önerilir.
Kullanım örneği
Cross-Origin-Resource-Policy: same-origin
Önerilen kullanımlar
Tüm kaynakların aşağıdaki üç üstbilgiden biriyle sunulması önerilir.
Aşağıdaki yapılandırmaların, Cross-Origin-Embedder-Policy: require-corp ortamında kaynak yüklemeyi nasıl etkilediğini bu demoda deneyebilirsiniz. Cross-Origin-Resource-Policy açılır menüsünü değiştirin ve efekti görmek için iframe'i yeniden yükle veya Resmi yeniden yükle düğmesini tıklayın.
Kaynakların yüklenmesine izin ver cross-origin
CDN benzeri hizmetlerin, benzer bir etkiye sahip olan CORS üzerinden sunulmadığı sürece kaynaklara cross-origin uygulaması önerilir (genellikle kaynaklar, kaynaklar arası sayfalar tarafından yüklendiğinden).
Cross-Origin-Resource-Policy: cross-originsame-origin konumundan yüklenecek kaynakları sınırlayın
same-origin, yalnızca aynı kaynaklı sayfalar tarafından yüklenmesi amaçlanan kaynaklara uygulanmalıdır. Bu kısıtlamayı, kullanıcı hakkında hassas bilgiler içeren kaynaklara veya yalnızca aynı kaynak üzerinden çağrılması amaçlanan bir API'nin yanıtlarına uygulamalısınız.
Bu başlığa sahip kaynakların doğrudan yüklenebileceğini (ör. URL'ye yeni bir tarayıcı penceresinde giderek) unutmayın. Merkezler Arası Kaynak Politikası yalnızca kaynağın diğer web siteleri tarafından yerleştirilmesini engeller.
Cross-Origin-Resource-Policy: same-originsame-site konumundan yüklenecek kaynakları sınırlayın
same-site, yukarıdakilere benzer ancak sitenizin diğer alt alan adları tarafından yüklenmesi amaçlanan kaynaklara uygulanması önerilir.
Cross-Origin-Resource-Policy: same-siteDesteklenen tarayıcılar
Daha fazla bilgi
Çapraz Kaynak Açıcı Politikası (COOP)
Saldırganın web sitesi, web tabanlı siteler arası sızıntılardan yararlanarak başka bir site hakkında bilgi edinmek için pop-up penceresinde bu siteyi açabilir. Bazı durumlarda bu durum, Spectre tabanlı yan kanal saldırılarının kullanılabilmesine de yol açabilir.
Cross-Origin-Opener-Policy üstbilgisi, bir dokümanın kendisini window.open() veya rel="noopener" olmadan target="_blank" içeren bir bağlantı aracılığıyla açılan kaynaklar arası pencerelerden yalıtmasına olanak tanır. Sonuç olarak, dokümanın kaynaklar arası açıcıları dokümana referans veremez ve dokümanla etkileşimde bulunamaz.
Kullanım örneği
Cross-Origin-Opener-Policy: same-origin-allow-popups
Önerilen kullanımlar
Aşağıdaki yapılandırmaların, bu demoda kaynaklar arası pop-up pencereyle iletişimi nasıl etkilediğini deneyebilirsiniz. Hem doküman hem de pop-up pencere için Cross-Origin-Opener-Policy açılır menüsünü değiştirin, Open a popup (Pop-up aç) düğmesini tıklayın, ardından mesajın gerçekten teslim edilip edilmediğini görmek için Send a postMessage (postMessage gönder) seçeneğini tıklayın.
Bir belgeyi kaynaklar arası pencerelerden yalıtma
Ayar same-origin, dokümanı kaynaklar arası doküman pencerelerinden yalıtır.
Cross-Origin-Opener-Policy: same-originBir belgeyi kaynaklar arası pencerelerden yalıtma ancak pop-up'lara izin verme
same-origin-allow-popups ayarı, bir dokümanın same-origin veya same-origin-allow-popups ile COOP ayarlanmadığı sürece pop-up pencerelerine referans vermeye devam etmesine olanak tanır. Bu, same-origin-allow-popups'nın, pop-up pencere olarak açıldığında dokümanın referans verilmesini engellemeye devam edebileceği ancak kendi pop-up'larıyla iletişim kurmasına izin verebileceği anlamına gelir.
Cross-Origin-Opener-Policy: same-origin-allow-popupsBir belgenin kaynaklar arası pencereler tarafından referans alınmasına izin ver
unsafe-none varsayılan değerdir ancak bu dokümanın çapraz kaynaklı bir pencere tarafından açılabileceğini ve karşılıklı erişimin korunabileceğini açıkça belirtebilirsiniz.
Cross-Origin-Opener-Policy: unsafe-noneCOOP ile uyumlu olmayan rapor kalıpları
COOP, Reporting API ile pencereler arası etkileşimleri engellediğinde rapor alabilirsiniz.
Cross-Origin-Opener-Policy: same-origin; report-to="coop"COOP, yalnızca raporlama modunu da destekler. Böylece, kaynaklar arası dokümanlar arasındaki iletişimi engellemeden rapor alabilirsiniz.
Cross-Origin-Opener-Policy-Report-Only: same-origin; report-to="coop"Desteklenen tarayıcılar
Daha fazla bilgi
Merkezler Arası Kaynak Paylaşımı (CORS)
Bu makaledeki diğer öğelerin aksine, merkezler arası kaynak paylaşımı (CORS) bir başlık değil, merkezler arası kaynaklara erişimi isteyen ve izin veren bir tarayıcı mekanizmasıdır.
Tarayıcılar, varsayılan olarak bir web sayfasının çapraz kaynaklı kaynaklara erişmesini engellemek için aynı kaynak politikasını uygular. Örneğin, kaynaklar arası bir resim yüklendiğinde web sayfasında görsel olarak gösterilse de sayfadaki JavaScript, resmin verilerine erişemez. Kaynak sağlayıcı, CORS'u etkinleştirerek kısıtlamaları gevşetebilir ve diğer web sitelerinin kaynağı okumasına izin verebilir.
Kullanım örneği
Access-Control-Allow-Origin: https://example.com
Access-Control-Allow-Credentials: true
CORS'u nasıl yapılandıracağınızı incelemeden önce istek türleri arasındaki farkı anlamanız faydalı olur. İstek ayrıntılarına bağlı olarak istekler basit istek veya önceden uçuşa hazırlanan istek olarak sınıflandırılır.
Basit istek ölçütleri:
- Yöntem
GET,HEADveyaPOSTolmalıdır. - Özel üst bilgiler yalnızca
Accept,Accept-Language,Content-LanguageveContent-Typedeğerlerini içerir. Content-Type,application/x-www-form-urlencoded,multipart/form-dataveyatext/plain.
Diğer tüm istekler önceden uçuşa hazırlanan istek olarak sınıflandırılır. Daha fazla bilgi için Merkezler Arası Kaynak Paylaşımı (CORS) - HTTP | MDN başlıklı makaleyi inceleyin.
Önerilen kullanımlar
Basit istek
Bir istek basit istek ölçütlerini karşıladığında tarayıcı, istekte bulunan kaynağı belirten bir Origin başlığı içeren kaynaklar arası istek gönderir.
Örnek istek başlığı
Get / HTTP/1.1 Origin: https://example.com
Örnek yanıt başlığı
Access-Control-Allow-Origin: https://example.com Access-Control-Allow-Credentials: true
Access-Control-Allow-Origin: https://example.com,https://example.comkullanıcısının yanıtın içeriğine erişebileceğini gösterir. Herhangi bir site tarafından okunması amaçlanan kaynaklar bu üstbilgiyi*olarak ayarlayabilir. Bu durumda tarayıcı, isteğin yalnızca kimlik bilgileri olmadan yapılmasını gerektirir.Access-Control-Allow-Credentials: true, kimlik bilgilerini (çerezler) içeren isteklerin kaynağı yüklemesine izin verildiğini gösterir. Aksi takdirde, istekte bulunan kaynakAccess-Control-Allow-Originüstbilgisinde mevcut olsa bile kimliği doğrulanmış istekler reddedilir.
Basit isteğin, bu demoda Cross-Origin-Embedder-Policy: require-corp ortamındaki kaynakların yüklenmesini nasıl etkilediğini deneyebilirsiniz. Efekti görmek için Merkezler Arası Kaynak Paylaşımı onay kutusunu ve Resmi yeniden yükle düğmesini tıklayın.
Ön test edilmiş istekler
Önceden uçuşa hazırlanan bir isteğin önüne, sonraki isteğin gönderilmesine izin verilip verilmediğini kontrol etmek için bir OPTIONS isteği eklenir.
Örnek istek başlığı
OPTIONS / HTTP/1.1 Origin: https://example.com Access-Control-Request-Method: POST Access-Control-Request-Headers: X-PINGOTHER, Content-Type
Access-Control-Request-Method: POST,POSTyöntemiyle aşağıdaki isteğin yapılmasını sağlar.Access-Control-Request-Headers: X-PINGOTHER, Content-Type, talep edenin sonraki istekteX-PINGOTHERveContent-TypeHTTP üstbilgilerini ayarlamasına olanak tanır.
Örnek yanıt üstbilgileri
Access-Control-Allow-Origin: https://example.com Access-Control-Allow-Credentials: true Access-Control-Allow-Methods: POST, GET, OPTIONS Access-Control-Allow-Headers: X-PINGOTHER, Content-Type Access-Control-Max-Age: 86400
Access-Control-Allow-Methods: POST, GET, OPTIONS, sonraki isteklerinPOST,GETveOPTIONSyöntemleriyle yapılabileceğini gösterir.Access-Control-Allow-Headers: X-PINGOTHER, Content-Type, sonraki isteklerinX-PINGOTHERveContent-Typeüstbilgilerini içerebileceğini gösterir.Access-Control-Max-Age: 86400, önceden uçuşa hazırlanan isteğin sonucunun 86.400 saniye boyunca önbelleğe alınabileceğini gösterir.
Desteklenen tarayıcılar
Daha fazla bilgi
Çapraz Kaynak Yerleştirme Politikası (COEP)
Spectre tabanlı saldırıların kaynaklar arası kaynakları çalma olasılığını azaltmak için SharedArrayBuffer veya performance.measureUserAgentSpecificMemory() gibi özellikler varsayılan olarak devre dışı bırakılır.
Cross-Origin-Embedder-Policy: require-corp, bu kaynaklar CORS veya CORP başlıkları aracılığıyla yüklenmeyi açıkça kabul etmediği sürece dokümanların ve çalışanların resim, komut dosyası, stil sayfası, iframe gibi merkezler arası kaynakları yüklemesini engeller. COEP,Cross-Origin-Opener-Policy
bir dokümanı kaynaklar arası izolasyona dahil etmek için kullanılabilir.
Dokümanınız için kökler arası erişimin kapatılmasını etkinleştirmek istediğinizde Cross-Origin-Embedder-Policy: require-corp öğesini kullanın.
Kullanım örneği
Cross-Origin-Embedder-Policy: require-corp
Örnek kullanımlar
COEP, tek bir require-corp değeri alır. Bu başlığı göndererek tarayıcıya, CORS veya CORP üzerinden etkinleştirilmeyen kaynakların yüklenmesini engelleme talimatı verebilirsiniz.
Aşağıdaki yapılandırmaların kaynak yüklemeyi nasıl etkilediğini bu demoda deneyebilirsiniz. Kaynakların yüklenmesini nasıl etkilediklerini görmek için Cross-Origin-Embedder-Policy açılır menüsü, Cross-Origin-Resource-Policy açılır menüsü ve Yalnızca Rapor onay kutusu gibi seçenekleri değiştirin. Ayrıca, engellenen kaynakların bildirilip bildirilmediğini görmek için raporlama uç noktası demosunu açın.
Kaynaklar arası yalıtımı etkinleştirme
Cross-Origin-Embedder-Policy: require-corp ile birlikte Cross-Origin-Opener-Policy: same-origin göndererek kaynaklar arası erişime kapalı web sitelerini etkinleştirin.
Cross-Origin-Embedder-Policy: require-corp Cross-Origin-Opener-Policy: same-origin
COEP ile uyumlu olmayan kaynakları bildirme
COEP'nin neden olduğu engellenen kaynaklarla ilgili raporları Reporting API ile alabilirsiniz.
Cross-Origin-Embedder-Policy: require-corp; report-to="coep"COEP, yalnızca rapor modunu da destekler. Böylece kaynakların yüklenmesini engellemeden rapor alabilirsiniz.
Cross-Origin-Embedder-Policy-Report-Only: require-corp; report-to="coep"Desteklenen tarayıcılar
Daha fazla bilgi
HTTP Strict Transport Security (HSTS)
Düz HTTP bağlantısı üzerinden yapılan iletişim şifrelenmediği için aktarılan verilere ağ düzeyinde dinleme yapan kişiler erişebilir.
Strict-Transport-Security üstbilgisi, tarayıcıya siteyi HTTP kullanarak hiçbir zaman yüklememesi ve bunun yerine HTTPS kullanması gerektiğini bildirir. Bu ayar yapıldıktan sonra tarayıcı, üstbilgide tanımlanan süre boyunca yönlendirme olmadan alana erişmek için HTTP yerine HTTPS kullanır.
Kullanım örneği
Strict-Transport-Security: max-age=31536000
Önerilen kullanımlar
HTTP'den HTTPS'ye geçen tüm web siteleri, HTTP ile bir istek alındığında Strict-Transport-Security başlığıyla yanıt vermelidir.
Strict-Transport-Security: max-age=31536000Desteklenen tarayıcılar