Sitenizin güvenliğini sağlayabilecek 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 ihtiyacınız olduğunda referans olarak kullanmak için bu raporu kullanın.
- Hassas kullanıcı verilerini işleyen web siteleri için önerilen güvenlik üstbilgileri:
- İç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
- Kaynaklar Arası Kaynak Politikası (CORP)
- Kaynaklar Arası Açıcı Politikası (COOP)
- HTTP Katı Taşıma Güvenliği (HSTS)
- Gelişmiş özelliklere sahip web siteleri için güvenlik üstbilgileri:
- Ortamlar Arası Kaynak Paylaşımı (CORS)
- Kaynaklar Arası Yerleştirme Politikası (COEP)
Güvenlik üst bilgilerini incelemeden önce web'deki bilinen tehditleri ve bu güvenlik başlıklarını neden kullanmak isteyeceğinizi öğrenin.
Sitenizi ekleme güvenlik açıklarından koruyun
Uygulamanız tarafından işlenen güvenilmeyen veriler uygulamasının davranışını etkileyebileceği ve genellikle saldırgan tarafından kontrol edilen komut dosyalarının yürütülmesine neden olabildiğinde yerleştirme güvenlik açıkları 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çimlerindeki siteler arası komut dosyası çalıştırmadır (XSS).
XSS güvenlik açığı, genellikle bir saldırganın 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 vermesini sağlayabilir.
Yerleştirmeye karşı geleneksel savunmalar arasında HTML şablon sistemlerinin tutarlı bir şekilde sürekli olarak kullanımı, tehlikeli JavaScript API'lerinin kullanılmaması ve dosya yüklemelerini ayrı bir alanda barındırarak ve kullanıcı tarafından kontrol edilen HTML'nin temizlenmesi yoluyla kullanıcı verilerinin doğru şekilde işlenmesi yer alır.
- Yerleştirme riskini azaltmak amacıyla uygulamanız tarafından hangi komut dosyalarının çalıştırılabileceğini kontrol etmek için İçerik Güvenliği Politikası'nı (İGP) kullanın.
- Tehlikeli JavaScript API'lerine aktarılan verilerin temizlenmesini zorunlu kılmak için Güvenilir Türler'i kullanın.
- Tarayıcının, web sitenizin kaynaklarındaki MIME türlerini yanlış yorumlamasını ve bunun sonucunda komut dosyası yürütülmesini önlemek için X-Content-Type-Options'ı kullanın.
Sitenizi diğer web sitelerinden izole edin
Web'in açık olması, web sitelerinin uygulamanın güvenlik beklentilerini ihlal edebilecek şekillerde birbirleriyle etkileşimde bulunmasına olanak tanır. Buna, beklenmedik şekilde kimlik doğrulaması yapılmış isteklerde bulunmak veya başka bir uygulamadan veri yerleştirmek dahildir. Bu da saldırganın, uygulama verilerini değiştirmesine veya okumasına olanak tanır.
Web izolasyonuna zarar veren yaygın güvenlik açıkları arasında tıklama korsanlığı, siteler arası istek sahtekarlığı (CSRF), siteler arası komut dosyası dahil etme (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 sitenize ait kaynakların, merkezler arası web sitelerine dahil edilmesini önlemek için Kaynaklar Arası Kaynak Politikası'nı (CORP) kullanın.
- Web sitenizin pencerelerini kötü amaçlı web sitelerinin etkileşimlerinden korumak için Ortamlar Arası Açıcı Politikası (COOP) kullanın.
- Kökler arası belgelerden web sitenizin kaynaklarına erişimi kontrol etmek için Ortamlar Arası Kaynak Paylaşımı'nı (CORS) kullanın.
Bu başlıklarla ilgileniyorsanız Post-Spectre Web Development harika bir okuma materyalidir.
Güvenli bir şekilde güçlü bir web sitesi oluşturun
Spectre, aynı kaynak politikasına rağmen okunabilecek şekilde aynı tarama bağlam grubuna yüklenen verileri yerleştirir. Tarayıcılar, "çapraz kaynak izolasyonu" adı verilen özel bir ortamın ardındaki güvenlik açığından faydalanabilecek özellikleri kısıtlar. Kökler arası erişime kapalı web sitesi sayesinde SharedArrayBuffer
gibi güçlü özellikleri kullanabilirsiniz.
- Kökler arası izolasyonu etkinleştirmek için COOP ile birlikte Kaynaklar Arası Yerleştirme Politikası (COEP) kullanın.
Sitenize gelen trafiği şifreleyin
Şifreleme sorunları, bir uygulama geçiş hâlindeki verileri tam olarak şifrelemediğinde ortaya çıkar ve gizli şekilde dinlenen saldırganların, kullanıcının uygulama ile olan etkileşimlerini öğrenmesine imkan tanır.
Şu durumlarda şifreleme yetersiz hale gelebilir: HTTPS kullanılmaması, karma içerik, Secure
özelliği (veya __Secure
ön eki) olmayan çerezlerin ayarlanması veya lax CORS doğrulama mantığı.
- İçeriklerinizi HTTPS üzerinden düzenli olarak sunmak için HTTP Katı Taşıma Güvenliği'ni (HSTS) kullanın.
İçerik Güvenliği Politikası (İGP)
Siteler Arası Komut Dosyası Çalıştırma (XSS), web sitesindeki bir güvenlik açığının kötü amaçlı komut dosyasının yerleştirilmesine ve yürütülmesine izin verdiği saldırıdır.
Content-Security-Policy
, sayfa tarafından çalıştırılabilecek komut dosyalarını kısıtlayarak XSS saldırılarını hafifletmek 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şturursanız nonce tabanlı katı bir CSP kullanın.
- HTML'nizin statik olarak veya önbelleğe alınması gerekiyorsa (örneğin, tek sayfalık bir uygulamaysa) karma tabanlı katı CSP kullanın.
Örnek kullanım: Nonce tabanlı bir CSP
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şturursanız nonce tabanlı katı bir CSP kullanın.
Sunucu tarafındaki her istek için yeni bir komut dosyası tek seferlik değer değeri oluşturun ve aşağıdaki üst bilgiyi 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, katı olmayan, iyi bir CSP örneğidir. Nasıl kullanıldığını görmek için Geliştirici Araçları'nı kullanın.
2. Karma tabanlı katı CSP kullanın {: #hash-based-csp}
HTML'nizin statik olarak veya önbelleğe alınması gerekiyorsa (örneğin, tek sayfalık bir uygulama oluşturuyorsanız) karma tabanlı katı 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';
Çoğu tarayıcı harici komut dosyalarına karma oluşturma işlemini desteklemediğinden HTML'de karma tabanlı bir politika uygulamak için komut dosyalarınızı satır içine almanız gerekir.
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ı CSP Yanıt Başlığı bölümündeki "Kaynak komut dosyalarını dinamik olarak yükleme" bölümünü okuyun.
CSP Evaluator, CSP'nizi değerlendirmek için iyi bir araçtır, ancak aynı zamanda nonce tabanlı katı bir CSP örneğidir. Nasıl kullanıldığını görmek için Geliştirici Araçları'nı kullanın.
Desteklenen tarayıcılar
CSP ile ilgili dikkat edilmesi gereken diğer noktalar
frame-ancestors
yönergesi, sitenizi tıklama korsanlığına karşı korur. Bu risk, güvenilmeyen sitelerin sizinkini yerleştirmesine izin verirseniz ortaya çıkan bir risktir. Daha basit bir çözümü tercih ederseniz yüklemeyi engellemek içinX-Frame-Options
kullanabilirsiniz. Ancakframe-ancestors
, yalnızca belirli kaynakların yerleştirme aracı olarak kullanılmasına izin verebilmeniz için 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 konu artık daha az alakalı: Günümüzde çoğu tarayıcı karma içeriği engelliyor.
- CSP'yi yalnızca rapor modunda da ayarlayabilirsiniz.
- CSP'yi üstbilgi sunucu tarafı olarak ayarlayamazsanız meta etiket olarak da ayarlayabilirsiniz. Meta etiketler için yalnızca rapor modunu kullanamayacağınızı unutmayın (ancak bu durum değişebilir).
Daha fazla bilgi
Güvenilir Türler
DOM tabanlı XSS, kötü amaçlı verilerin eval()
veya .innerHTML
gibi dinamik kod yürütmeyi destekleyen bir havuza iletildiği bir saldırıdır.
Trusted Types, DOM XSS içermeyen uygulama yazmak, güvenlik incelemesi ve uygulama bakımını yapmak için araçlar sağlar. Bunlar CSP aracılığıyla etkinleştirilebilir ve tehlikeli web API'lerinin yalnızca özel bir nesneyi, yani Güvenilir Tür'ü kabul etmesini sınırlandırarak JavaScript kodunu varsayılan olarak güvenli hale getirir.
Bu nesneleri oluşturmak için, veriler DOM'ye yazılmadan önce güvenlik kurallarının (çıkış yapma veya temizleme gibi) tutarlı bir şekilde uygulanmasını sağlayabileceğiniz güvenlik politikaları tanımlayabilirsiniz. Bu durumda, kodda DOM XSS'yi kullanıma sunabilecek tek yer bu politikalardır.
Örnek kullanımlar
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 havuzları için Trusted Types'ı zorunlu kılın CSP ve Trusted Types başlığı:
Content-Security-Policy: require-trusted-types-for 'script'
Şu anda
require-trusted-types-for
yönergesi için kabul edilen tek değer'script'
değeridir.Elbette, Güvenilir Türleri diğer CSP yönergeleriyle birleştirebilirsiniz:
Yukarıda belirtilen nonce tabanlı bir 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>güvenilir-türler</code> yönergesi ayarlayarak izin verilen Güvenilir Türler politikası adlarını sınırlayabilirsiniz (örneğin, <code>güvenilir-türler myPolicy</code>). Ancak bu bir gerekli 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ı uygula
DOM'ye veri yazarken bu politikayı kullanın:
// 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. Tehlikeli herhangi bir DOM API'nin dizeyle kullanılması hataya neden olur.
Desteklenen tarayıcılar
Daha fazla bilgi
- Güvenilir Türler ile DOM tabanlı siteler arası komut dosyası güvenlik açıklarını önleyin
- İGP: Gerekli-güvenilir-türler-HTTP |
MDN
- CSP: güvenilir türler - HTTP |
MDN
- Güvenilir Türler demosu: DevTools Denetleyicisi'ni açın ve neler olduğunu öğrenin
X-Content-Type-Options
Alanınızdan kötü amaçlı bir HTML dokümanı sunulduğunda (örneğin, bir fotoğraf hizmetine yüklenen bir görüntü geçerli HTML işaretlemesi içeriyorsa) bazı tarayıcılar bu dokümanı etkin doküman olarak görür ve uygulamanın bağlamında komut dosyaları çalıştırmasına izin verir. Bu da siteler arası komut dosyası hatasına yol açar.
X-Content-Type-Options: nosniff
, tarayıcıya belirli bir yanıt için Content-Type
üst bilgisinde ayarlanan MIME türünün doğru olduğunu bildirerek bunu engeller. Bu başlık, tüm kaynaklarınız için önerilir.
Örnek kullanım
X-Content-Type-Options: nosniff
Önerilen kullanımlar
X-Content-Type-Options: nosniff
, doğru Content-Type
üst bilgisi ile sunucunuzdan sunulan tüm kaynaklar için ö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-Çerçeve-Seçenekleri
Kötü amaçlı bir web sitesi sitenizi iframe olarak yerleştirebiliyorsa bu durum, saldırganların tıklama korsanlığı ile kullanıcı tarafından gerçekleştirilen istenmeyen işlemleri başlatmasına yol açabilir. Ayrıca bazı durumlarda Spectre türü saldırılar, kötü amaçlı web sitelerine, yerleştirilmiş bir dokümanın içeriği hakkında bilgi edinme şansı verir.
X-Frame-Options
bir tarayıcının <frame>
, <iframe>
, <embed>
veya <object>
içinde bir sayfayı oluşturmasına izin verilip verilmeyeceğini belirtir. Diğer dokümanlar tarafından yerleştirilmesine izin verilip verilmediğini belirtmek için bu üst bilginin tüm dokümanların gönderilmesi önerilir.
Örnek kullanım
X-Frame-Options: DENY
Önerilen kullanımlar
Yerleştirilmek üzere tasarlanmamış tüm dokümanlar X-Frame-Options
üstbilgisini kullanmalıdır.
Bu demoda aşağıdaki yapılandırmaların bir iframe yüklemeyi nasıl etkilediğini 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 sitenizi diğer web siteleri tarafından gömülmeye karşı korur
Başka dokümanlar tarafından yerleştirilmesini reddet.
X-Frame-Options: DENY
Web sitenizi, çapraz kaynak web siteleri tarafından gömülmeye karşı korur
Yalnızca aynı kaynak dokümanlar tarafından yerleştirilmesine izin ver.
X-Frame-Options: SAMEORIGIN
Desteklenen tarayıcılar
Daha fazla bilgi
Merkezler Arası Kaynak Politikası (CORP)
Bir saldırgan, web tabanlı siteler arası sızıntılardan yararlanarak bunlarla ilgili bilgileri öğrenmek için başka bir kaynaktan (ör. siteniz) kaynakları yerleştirebilir.
Cross-Origin-Resource-Policy
, yüklenebileceği web sitesi grubunu belirterek bu riski azaltır. Başlık şu üç değerden birini alır: same-origin
, same-site
ve cross-origin
. Diğer web siteleri tarafından yüklenmesine izin verilip verilmediğini belirtmek için tüm kaynakların bu üst bilgiyi göndermesi önerilir.
Örnek kullanım
Cross-Origin-Resource-Policy: same-origin
Önerilen kullanımlar
Tüm kaynakların aşağıdaki üç başlıktan biriyle sunulması önerilir.
Aşağıdaki yapılandırmaların, Cross-Origin-Embedder-Policy: require-corp
ortamındaki kaynakların yüklenmesini 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
Benzer bir etkiye sahip CORS üzerinden sunulmadıkları sürece, CDN benzeri hizmetlerin kaynaklara cross-origin
uygulaması önerilir (bunun nedeni, bunların genellikle çapraz kaynak sayfalar tarafından yüklenmesidir).
Cross-Origin-Resource-Policy: cross-origin
same-origin
uygulamasından yüklenecek kaynakları sınırlayın
same-origin
, yalnızca aynı kaynak sayfalar tarafından yüklenmesi amaçlanan kaynaklara uygulanmalıdır. Bunu, kullanıcı hakkında hassas bilgiler içeren kaynaklara veya yalnızca aynı kaynaktan çağrılması amaçlanan bir API'nin yanıtlarını içeren kaynaklara uygulamanız gerekir.
Bu üst bilgiye sahip kaynakların, örneğin yeni bir tarayıcı penceresindeki URL'ye giderek doğrudan yüklenebileceğini unutmayın. Merkezler Arası Kaynak Politikası yalnızca kaynağı diğer web siteleri tarafından yerleştirilmesine karşı korur.
Cross-Origin-Resource-Policy: same-origin
same-site
uygulamasından yüklenecek kaynakları sınırlayın
Yukarıdakine benzeyen ancak sitenizin diğer alt alan adları tarafından yüklenmesi amaçlanan kaynaklara same-site
uygulanması önerilir.
Cross-Origin-Resource-Policy: same-site
Desteklenen tarayıcılar
Daha fazla bilgi
Çapraz Kaynak Açıcı Politikası (COOP)
Bir saldırganın web sitesi, web tabanlı siteler arası sızıntılardan yararlanarak siteyle ilgili bilgileri öğrenmek için pop-up pencerede başka bir siteyi açabilir. Bazı durumlarda bu, Spectre'a dayalı yan kanal saldırılarının istismarına da izin verebilir.
Cross-Origin-Opener-Policy
üst bilgisi, bir dokümanın kendisini window.open()
aracılığıyla açılan çapraz kaynak pencerelerden veya rel="noopener"
içermeyen target="_blank"
içeren bir bağlantıdan izole etmesi için bir yol sunar. Sonuç olarak, belgenin çapraz kaynak açıcıları dokümana referans veremez ve belgeyle etkileşimde bulunamaz.
Örnek kullanım
Cross-Origin-Opener-Policy: same-origin-allow-popups
Önerilen kullanımlar
Aşağıdaki yapılandırmaların, kaynaklar arası pop-up pencereyle iletişimi nasıl etkilediğini bu demoda deneyebilirsiniz. Hem doküman hem de pop-up pencere için Cross-Origin-Opener-Policy açılır menüsünü değiştirin, mesajın gerçekten teslim edilip edilmediğini görmek için Pop-up aç düğmesini ve ardından Bir postMessage gönder'i tıklayın.
Bir dokümanı kaynaklar arası pencerelerden izole etme
same-origin
ayarlanırsa doküman, kaynaklar arası belge pencerelerinden izole edilir.
Cross-Origin-Opener-Policy: same-origin
Bir dokümanı kaynaklar arası pencerelerden izole et ancak pop-up'lara izin ver
same-origin-allow-popups
ayarlandığında, same-origin
veya same-origin-allow-popups
ile COOP ayarlanmadığı sürece dokümanın pop-up pencerelerine referans vermesi sağlanır. Yani same-origin-allow-popups
, pop-up pencere olarak açıldığında dokümana referans verilmesini koruyabilir ancak kendi pop-up'larıyla iletişim kurmasına izin verebilir.
Cross-Origin-Opener-Policy: same-origin-allow-popups
Kaynaklar arası pencerelerde bir dokümana referans verilmesine izin ver
unsafe-none
, varsayılan değerdir ancak bu dokümanın kaynaklar arası bir pencerede açılabileceğini açıkça belirtebilir ve karşılıklı erişimi koruyabilirsiniz.
Cross-Origin-Opener-Policy: unsafe-none
Rapor kalıpları COOP ile uyumlu değil
COOP, Reporting API ile pencereler arası etkileşimleri engellediğinde rapor alabilirsiniz.
Cross-Origin-Opener-Policy: same-origin; report-to="coop"
COOP, salt rapor modunu da destekler. Böylece, kaynaklar arası belgeler 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ğildir, kaynaklar arası kaynaklara erişim isteğinde bulunan ve erişim izni veren bir tarayıcı mekanizmasıdır.
Varsayılan olarak tarayıcılar, bir web sayfasının kaynaklar arası kaynaklara erişmesini engellemek için aynı kaynak politikasını zorunlu kılar. Örneğin, kaynaklar arası bir resim yüklendiğinde, web sayfasında görsel olarak görüntülense bile, sayfadaki JavaScript resmin verilerine erişemez. Kaynak sağlayıcı, CORS'a kaydolarak kısıtlamaları gevşetebilir ve diğer web sitelerinin kaynağı okumasına izin verebilir.
Örnek kullanım
Access-Control-Allow-Origin: https://example.com
Access-Control-Allow-Credentials: true
CORS'yi nasıl yapılandırabileceğinizi incelemeden önce, istek türleri arasındaki farkı anlamanız faydalı olur. İstek ayrıntılarına bağlı olarak bir istek, basit istek veya ön kontrollü istek olarak sınıflandırılır.
Basit istek ölçütleri:
- Yöntem
GET
,HEAD
veyaPOST
şeklindedir. - Özel üstbilgiler yalnızca
Accept
,Accept-Language
,Content-Language
veContent-Type
etiketlerini içerir. Content-Type
değeri:application/x-www-form-urlencoded
,multipart/form-data
veyatext/plain
.
Diğer her şey ön kontrollü istek olarak sınıflandırılır. Daha fazla bilgi için Kaynaklar Arası Kaynak Paylaşımı (CORS) - HTTP | MDN bölümüne göz atın.
Önerilen kullanımlar
Basit istek
Bir istek basit istek ölçütlerini karşıladığında tarayıcı, istekte bulunan kaynağı belirten Origin
başlığına sahip bir çapraz kaynak isteği gönderir.
Örnek istek başlığı
Get / HTTP/1.1 Origin: https://example.com
Örnek yanıt üstbilgisi
Access-Control-Allow-Origin: https://example.com Access-Control-Allow-Credentials: true
Access-Control-Allow-Origin: https://example.com
,https://example.com
öğesinin yanıtın içeriğine erişebileceğini belirtir. Tüm siteler tarafından okunabilmesi gereken kaynaklar, bu üst bilgiyi*
olarak ayarlayabilir. Bu durumda, tarayıcı isteğin yalnızca kimlik bilgileri olmadan yapılmasını gerektirir.Access-Control-Allow-Credentials: true
, kimlik bilgileri (çerezler) taşıyan isteklerin kaynağı yüklemesine izin verildiğini belirtir. Aksi takdirde, istekte bulunan kaynakAccess-Control-Allow-Origin
başlığında bulunsa bile kimliği doğrulanmış istekler reddedilir.
Bu basit isteğin, Cross-Origin-Embedder-Policy: require-corp
ortamındaki kaynakların yüklenmesini nasıl etkilediğini bu demoda deneyebilirsiniz. Ortamlar Arası Kaynak Paylaşımı onay kutusunu tıklayın ve efekti görmek için Resmi yeniden yükle düğmesini tıklayın.
Yayın öncesi istekler
Ön kontrol işlemi yapılan bir isteğin öncesinde, sonraki isteğin gönderilmesine izin verilip verilmediğini kontrol etmek için bir OPTIONS
isteği bulunur.
Ö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
,POST
yöntemiyle aşağıdaki isteğin yapılmasını sağlar.Access-Control-Request-Headers: X-PINGOTHER, Content-Type
, istek sahibinin sonraki istekteX-PINGOTHER
veContent-Type
HTTP üst bilgilerini ayarlamasına olanak tanır.
Örnek yanıt başlıkları
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
,GET
veOPTIONS
yöntemleriyle gönderilebileceğini belirtir.Access-Control-Allow-Headers: X-PINGOTHER, Content-Type
, sonraki isteklerinX-PINGOTHER
veContent-Type
üstbilgilerini içerebileceğini belirtir.Access-Control-Max-Age: 86400
, ön kontrolden geçmiş isteğin sonucunun 86.400 saniye için önbelleğe alınabileceğini belirtir.
Desteklenen tarayıcılar
Daha fazla bilgi
Çapraz Kaynak Yerleştirme Politikası (COEP)
Spectre tabanlı saldırıların kaynaklar arası kaynakları çalma yeteneğini azaltmak için SharedArrayBuffer
veya performance.measureUserAgentSpecificMemory()
gibi özellikler varsayılan olarak devre dışı bırakılır.
Cross-Origin-Embedder-Policy: require-corp
; resim, komut dosyası, stil sayfası, iframe ve diğerleri gibi kaynaklar arası kaynakları, bu kaynakların CORS veya CORP üst bilgileri aracılığıyla yüklenmeye açıkça izin vermediği sürece bu kaynakların ve çalışanların yüklemesini engeller. Bir dokümanı çapraz kaynak izolasyonu için etkinleştirmek üzere COEP,Cross-Origin-Opener-Policy
ile birleştirilebilir.
Dokümanınız için çapraz kaynak izolasyonunu etkinleştirmek istediğinizde Cross-Origin-Embedder-Policy: require-corp
kullanın.
Örnek kullanım
Cross-Origin-Embedder-Policy: require-corp
Örnek kullanımlar
COEP, require-corp
değerini tek bir şekilde alır. Bu üst bilgiyi göndererek tarayıcıya, CORS veya CORP aracılığıyla dahil edilmeyen kaynakların yüklenmesini engelleme talimatı verebilirsiniz.
Aşağıdaki yapılandırmaların, kaynakların yüklenmesini nasıl etkilediğini bu demoda deneyebilirsiniz. Kaynak yükleme kaynaklarını nasıl etkilediğini görmek için Cross-Origin-Embedder-Policy açılır menüsünü, Cross-Origin-Resource-Policy açılır menüsünü, Yalnızca Rapor onay kutusunu vb. değiştirin. Ayrıca, engellenen kaynakların raporlanıp raporlanmadığını görmek için raporlama uç noktası demosunu açın.
Kaynaklar arası izolasyonu etkinleştir
Cross-Origin-Opener-Policy: same-origin
ile birlikte Cross-Origin-Embedder-Policy: require-corp
göndererek kaynaklar arası izolasyonu etkinleştirin.
Cross-Origin-Embedder-Policy: require-corp Cross-Origin-Opener-Policy: same-origin
COEP ile uyumlu olmayan rapor kaynakları
Reporting API'yi kullanarak COEP'nin neden olduğu engellenmiş kaynaklarla ilgili raporlar alabilirsiniz.
Cross-Origin-Embedder-Policy: require-corp; report-to="coep"
COEP, salt rapor modunu da destekler, böylece yüklenen kaynakları gerçekten engellemeden rapor alabilirsiniz.
Cross-Origin-Embedder-Policy-Report-Only: require-corp; report-to="coep"
Desteklenen tarayıcılar
Daha fazla bilgi
HTTP Katı Taşıma Güvenliği (HSTS)
Düz HTTP bağlantısı üzerinden iletişim şifrelenmez, böylece aktarılan veriler ağ düzeyindeki gizlice meraklılar tarafından erişilebilir.
Strict-Transport-Security
üst bilgisi, tarayıcıya siteyi hiçbir zaman HTTP kullanarak yüklememesi ve bunun yerine HTTPS kullanması gerektiği konusunda bildirir. Ayarlandıktan sonra tarayıcı, başlıkta tanımlanan bir süre boyunca alana yönlendirme olmadan erişmek için HTTP yerine HTTPS kullanır.
Örnek kullanım
Strict-Transport-Security: max-age=31536000
Önerilen kullanımlar
HTTP'den HTTPS'ye geçen tüm web siteleri, HTTP içeren bir istek alındığında Strict-Transport-Security
üst bilgisi ile yanıt vermelidir.
Strict-Transport-Security: max-age=31536000
Desteklenen tarayıcılar