ASP.NET Core için İçerik Güvenlik İlkesi Zorlama Blazor
Uyarı
ASP.NET Core'un bu sürümü artık desteklenmiyor. Daha fazla bilgi için bkz . .NET ve .NET Core Destek İlkesi. Geçerli sürüm için bu makalenin .NET 8 sürümüne bakın.
Bu makalede, Siteler Arası Betik (XSS) saldırılarına karşı korunmaya yardımcı olmak için ASP.NET Core Blazor uygulamalarıyla İçerik Güvenliği İlkesi'nin (CSP) nasıl kullanılacağı açıklanmaktadır.
Siteler Arası Betik Oluşturma (XSS), bir siber saldırının bir veya daha fazla kötü amaçlı istemci tarafı betiğini bir uygulamanın işlenmiş içeriğine yerleştirdiği bir güvenlik açığıdır. CSP, tarayıcıya geçerli olduğunu bildirerek XSS saldırılarına karşı korumaya yardımcı olur:
- Betikler, stil sayfaları, resimler ve eklentiler de dahil olmak üzere yüklenen içerik kaynakları.
- Formların izin verilen URL hedeflerini belirterek bir sayfa tarafından yapılan eylemler.
Bir uygulamaya CSP uygulamak için geliştirici, bir veya daha fazla Content-Security-Policy
üst bilgide veya <meta>
etikette çeşitli CSP içerik güvenlik yönergeleri belirtir. Başlangıçta C# kodunda bir uygulamaya CSP uygulama hakkında yönergeler için bkz . ASP.NET Core Blazor başlatma.
İlkeler, bir sayfa yüklenirken tarayıcı tarafından değerlendirilir. Tarayıcı, sayfanın kaynaklarını inceler ve içerik güvenlik yönergelerinin gereksinimlerini karşılayıp karşılamadıklarını belirler. Bir kaynak için ilke yönergeleri karşılanmadığında tarayıcı kaynağı yüklemez. Örneğin, üçüncü taraf betiklere izin vermeyen bir ilke düşünün. Bir sayfada özniteliğinde üçüncü taraf kaynağı olan bir <script>
etiket bulunduğunda src
, tarayıcı betiğin yüklenmesini engeller.
CSP, Chrome, Edge, Firefox, Opera ve Safari gibi çoğu modern masaüstü ve mobil tarayıcıda desteklenir. Uygulamalar için Blazor CSP önerilir.
İlke yönergeleri
En az düzeyde, uygulamalar için Blazor aşağıdaki yönergeleri ve kaynakları belirtin. Gerektiğinde ek yönergeler ve kaynaklar ekleyin. Aşağıdaki yönergeler, bu makalenin İlkeyi uygula bölümünde kullanılır ve burada uygulamalar için Blazor güvenlik ilkeleri örneği sağlanır:
- base-uri: Sayfanın etiketi için URL'leri
<base>
kısıtlar. Şema ve bağlantı noktası numarası dahil olmak üzere uygulamanın kaynağının geçerli bir kaynak olduğunu belirtmek için belirtinself
. - default-src: İlke tarafından açıkça belirtilmeyen kaynak yönergeleri için bir geri dönüş gösterir. Şema ve bağlantı noktası numarası dahil olmak üzere uygulamanın kaynağının geçerli bir kaynak olduğunu belirtmek için belirtin
self
. - img-src: Görüntüler için geçerli kaynakları gösterir.
- URL'lerden görüntülerin
data:
yüklenmesine izin vermek için belirtindata:
. - HTTPS uç noktalarındaki görüntülerin yüklenmesine izin vermek için belirtin
https:
.
- URL'lerden görüntülerin
- object-src: ,
<embed>
ve<applet>
etiketleri için<object>
geçerli kaynakları gösterir. Tüm URL kaynaklarını önlemek için belirtinnone
. - script-src: Betikler için geçerli kaynakları gösterir.
- Şema ve bağlantı noktası numarası dahil olmak üzere uygulamanın kaynağının geçerli bir kaynak olduğunu belirtmek için belirtin
self
. - İstemci tarafı Blazor uygulamasında:
- İstemci tarafı Blazor Mono çalışma zamanının çalışmasına izin vermek için belirtin
wasm-unsafe-eval
. - Gerekli çerçeve dışı betiklerinizin yüklenmesine izin vermek için ek karmaları belirtin.
- İstemci tarafı Blazor Mono çalışma zamanının çalışmasına izin vermek için belirtin
- Sunucu tarafı Blazor bir uygulamada, gerekli betiklerin yüklenmesine izin vermek için karmalar belirtin.
- Şema ve bağlantı noktası numarası dahil olmak üzere uygulamanın kaynağının geçerli bir kaynak olduğunu belirtmek için belirtin
- style-src: Stil sayfaları için geçerli kaynakları gösterir.
- Şema ve bağlantı noktası numarası dahil olmak üzere uygulamanın kaynağının geçerli bir kaynak olduğunu belirtmek için belirtin
self
. - Uygulama satır içi stiller kullanıyorsa, satır içi stillerinizin kullanımına izin vermek için belirtin
unsafe-inline
.
- Şema ve bağlantı noktası numarası dahil olmak üzere uygulamanın kaynağının geçerli bir kaynak olduğunu belirtmek için belirtin
- upgrade-insecure-requests: Güvenli olmayan (HTTP) kaynaklardan gelen içerik URL'lerinin HTTPS üzerinden güvenli bir şekilde alınması gerektiğini gösterir.
- base-uri: Sayfanın etiketi için URL'leri
<base>
kısıtlar. Şema ve bağlantı noktası numarası dahil olmak üzere uygulamanın kaynağının geçerli bir kaynak olduğunu belirtmek için belirtinself
. - default-src: İlke tarafından açıkça belirtilmeyen kaynak yönergeleri için bir geri dönüş gösterir. Şema ve bağlantı noktası numarası dahil olmak üzere uygulamanın kaynağının geçerli bir kaynak olduğunu belirtmek için belirtin
self
. - img-src: Görüntüler için geçerli kaynakları gösterir.
- URL'lerden görüntülerin
data:
yüklenmesine izin vermek için belirtindata:
. - HTTPS uç noktalarındaki görüntülerin yüklenmesine izin vermek için belirtin
https:
.
- URL'lerden görüntülerin
- object-src: ,
<embed>
ve<applet>
etiketleri için<object>
geçerli kaynakları gösterir. Tüm URL kaynaklarını önlemek için belirtinnone
. - script-src: Betikler için geçerli kaynakları gösterir.
- Şema ve bağlantı noktası numarası dahil olmak üzere uygulamanın kaynağının geçerli bir kaynak olduğunu belirtmek için belirtin
self
. - İstemci tarafı Blazor uygulamasında:
- İstemci tarafı Blazor Mono çalışma zamanının çalışmasına izin vermek için belirtin
unsafe-eval
. - Gerekli çerçeve dışı betiklerinizin yüklenmesine izin vermek için ek karmaları belirtin.
- İstemci tarafı Blazor Mono çalışma zamanının çalışmasına izin vermek için belirtin
- Sunucu tarafı Blazor bir uygulamada, gerekli betiklerin yüklenmesine izin vermek için karmalar belirtin.
- Şema ve bağlantı noktası numarası dahil olmak üzere uygulamanın kaynağının geçerli bir kaynak olduğunu belirtmek için belirtin
- style-src: Stil sayfaları için geçerli kaynakları gösterir.
- Şema ve bağlantı noktası numarası dahil olmak üzere uygulamanın kaynağının geçerli bir kaynak olduğunu belirtmek için belirtin
self
. - Uygulama satır içi stiller kullanıyorsa, satır içi stillerinizin kullanımına izin vermek için belirtin
unsafe-inline
.
- Şema ve bağlantı noktası numarası dahil olmak üzere uygulamanın kaynağının geçerli bir kaynak olduğunu belirtmek için belirtin
- upgrade-insecure-requests: Güvenli olmayan (HTTP) kaynaklardan gelen içerik URL'lerinin HTTPS üzerinden güvenli bir şekilde alınması gerektiğini gösterir.
- base-uri: Sayfanın etiketi için URL'leri
<base>
kısıtlar. Şema ve bağlantı noktası numarası dahil olmak üzere uygulamanın kaynağının geçerli bir kaynak olduğunu belirtmek için belirtinself
. - default-src: İlke tarafından açıkça belirtilmeyen kaynak yönergeleri için bir geri dönüş gösterir. Şema ve bağlantı noktası numarası dahil olmak üzere uygulamanın kaynağının geçerli bir kaynak olduğunu belirtmek için belirtin
self
. - img-src: Görüntüler için geçerli kaynakları gösterir.
- URL'lerden görüntülerin
data:
yüklenmesine izin vermek için belirtindata:
. - HTTPS uç noktalarındaki görüntülerin yüklenmesine izin vermek için belirtin
https:
.
- URL'lerden görüntülerin
- object-src: ,
<embed>
ve<applet>
etiketleri için<object>
geçerli kaynakları gösterir. Tüm URL kaynaklarını önlemek için belirtinnone
. - script-src: Betikler için geçerli kaynakları gösterir.
- Bootstrap betikleri
https://stackpath.bootstrapcdn.com/
için konak kaynağını belirtin. - Şema ve bağlantı noktası numarası dahil olmak üzere uygulamanın kaynağının geçerli bir kaynak olduğunu belirtmek için belirtin
self
. - İstemci tarafı Blazor uygulamasında:
- İstemci tarafı Blazor Mono çalışma zamanının çalışmasına izin vermek için belirtin
unsafe-eval
. - Gerekli çerçeve dışı betiklerinizin yüklenmesine izin vermek için ek karmaları belirtin.
- İstemci tarafı Blazor Mono çalışma zamanının çalışmasına izin vermek için belirtin
- Sunucu tarafı Blazor bir uygulamada, gerekli betiklerin yüklenmesine izin vermek için karmalar belirtin.
- Bootstrap betikleri
- style-src: Stil sayfaları için geçerli kaynakları gösterir.
https://stackpath.bootstrapcdn.com/
Bootstrap stil sayfaları için konak kaynağını belirtin.- Şema ve bağlantı noktası numarası dahil olmak üzere uygulamanın kaynağının geçerli bir kaynak olduğunu belirtmek için belirtin
self
. - Satır içi stillerin kullanılmasına izin vermek için belirtin
unsafe-inline
.
- upgrade-insecure-requests: Güvenli olmayan (HTTP) kaynaklardan gelen içerik URL'lerinin HTTPS üzerinden güvenli bir şekilde alınması gerektiğini gösterir.
- base-uri: Sayfanın etiketi için URL'leri
<base>
kısıtlar. Şema ve bağlantı noktası numarası dahil olmak üzere uygulamanın kaynağının geçerli bir kaynak olduğunu belirtmek için belirtinself
. - default-src: İlke tarafından açıkça belirtilmeyen kaynak yönergeleri için bir geri dönüş gösterir. Şema ve bağlantı noktası numarası dahil olmak üzere uygulamanın kaynağının geçerli bir kaynak olduğunu belirtmek için belirtin
self
. - img-src: Görüntüler için geçerli kaynakları gösterir.
- URL'lerden görüntülerin
data:
yüklenmesine izin vermek için belirtindata:
. - HTTPS uç noktalarındaki görüntülerin yüklenmesine izin vermek için belirtin
https:
.
- URL'lerden görüntülerin
- object-src: ,
<embed>
ve<applet>
etiketleri için<object>
geçerli kaynakları gösterir. Tüm URL kaynaklarını önlemek için belirtinnone
. - script-src: Betikler için geçerli kaynakları gösterir.
- Bootstrap betikleri
https://stackpath.bootstrapcdn.com/
için konak kaynağını belirtin. - Şema ve bağlantı noktası numarası dahil olmak üzere uygulamanın kaynağının geçerli bir kaynak olduğunu belirtmek için belirtin
self
. - İstemci tarafı Blazor uygulamasında:
- Gerekli betiklerin yüklenmesine izin vermek için karmaları belirtin.
- Dizelerden kod oluşturmak için kullanılacak
eval()
ve yöntemlerini belirtinunsafe-eval
.
- Sunucu tarafı Blazor bir uygulamada, gerekli betiklerin yüklenmesine izin vermek için karmalar belirtin.
- Bootstrap betikleri
- style-src: Stil sayfaları için geçerli kaynakları gösterir.
https://stackpath.bootstrapcdn.com/
Bootstrap stil sayfaları için konak kaynağını belirtin.- Şema ve bağlantı noktası numarası dahil olmak üzere uygulamanın kaynağının geçerli bir kaynak olduğunu belirtmek için belirtin
self
. - Satır içi stillerin kullanılmasına izin vermek için belirtin
unsafe-inline
. İlk istek sonrasında istemciyi ve sunucuyu yeniden bağlamak için kullanıcı arabirimi için satır içi bildirim gereklidir. Gelecek bir sürümde satır içi stil kaldırılabilir, böyleceunsafe-inline
artık gerekli değildir.
- upgrade-insecure-requests: Güvenli olmayan (HTTP) kaynaklardan gelen içerik URL'lerinin HTTPS üzerinden güvenli bir şekilde alınması gerektiğini gösterir.
Yukarıdaki yönergeler Microsoft Internet Explorer dışındaki tüm tarayıcılar tarafından desteklenir.
Ek satır içi betikler için SHA karmalarını almak için:
- İlkeyi uygula bölümünde gösterilen CSP'yi uygulayın.
- Uygulamayı yerel olarak çalıştırırken tarayıcının geliştirici araçları konsoluna erişin. Bir CSP üst bilgisi veya
meta
etiketi mevcut olduğunda tarayıcı engellenen betikler için karmaları hesaplar ve görüntüler. - Tarayıcı tarafından sağlanan karmaları kaynaklara
script-src
kopyalayın. Her karmanın çevresinde tek tırnak işareti kullanın.
İçerik Güvenliği İlkesi Düzey 2 tarayıcı destek matrisi için bkz . Kullanabilir miyim: İçerik Güvenliği İlkesi Düzey 2.
İlkeyi uygulama
İlkeyi uygulamak için bir <meta>
etiket kullanın:
- özniteliğinin
http-equiv
değerini olarakContent-Security-Policy
ayarlayın. - yönergelerini
content
öznitelik değerine yerleştirin. Yönergeleri noktalı virgülle (;
) ayırın. - Etiketi her zaman içeriğe
<head>
yerleştirin.meta
Aşağıdaki bölümlerde örnek ilkeler gösterilmektedir. Bu örnekler, her sürümü için bu makaleyle birlikte verilmiştir Blazor. Sürümünüz için uygun bir sürüm kullanmak için, bu web sayfasında Sürüm açılan seçicisi olan belge sürümünü seçin.
Sunucu tarafı Blazor uygulamaları
İçerikte<head>
, İlke yönergeleri bölümünde açıklanan yönergeleri uygulayın:
<meta http-equiv="Content-Security-Policy"
content="base-uri 'self';
default-src 'self';
img-src data: https:;
object-src 'none';
script-src 'self';
style-src 'self';
upgrade-insecure-requests;">
<meta http-equiv="Content-Security-Policy"
content="base-uri 'self';
default-src 'self';
img-src data: https:;
object-src 'none';
script-src https://stackpath.bootstrapcdn.com/
'self';
style-src https://stackpath.bootstrapcdn.com/
'self'
'unsafe-inline';
upgrade-insecure-requests;">
<meta http-equiv="Content-Security-Policy"
content="base-uri 'self';
default-src 'self';
img-src data: https:;
object-src 'none';
script-src https://stackpath.bootstrapcdn.com/
'self'
'sha256-34WLX60Tw3aG6hylk0plKbZZFXCuepeQ6Hu7OqRf8PI=';
style-src https://stackpath.bootstrapcdn.com/
'self'
'unsafe-inline';
upgrade-insecure-requests;">
Uygulamanın gerektirdiği şekilde ek script-src
ve style-src
karmalar ekleyin. Geliştirme sırasında, karmaların sizin için hesaplanmış olması için çevrimiçi bir araç veya tarayıcı geliştirici araçları kullanın. Örneğin, aşağıdaki tarayıcı araçları konsol hatası, ilke kapsamında olmayan gerekli bir betiğin karması bildirir:
Şu İçerik Güvenliği İlkesi yönergesini ihlal ettiği için satır içi betik yürütülemedi: " ... ". Satır içi yürütmeyi etkinleştirmek için 'güvenli olmayan satır içi' anahtar sözcüğü, karma ('sha256-v8v3RKRPmN4odZ1CWM5gw80QKPCCWMcpNeOmimNL2AA=') veya bir nonce ('nonce-...') gereklidir.
Hatayla ilişkili belirli betik, konsolunda hatanın yanında görüntülenir.
İstemci tarafı Blazor uygulamaları
İçerikte<head>
, İlke yönergeleri bölümünde açıklanan yönergeleri uygulayın:
<meta http-equiv="Content-Security-Policy"
content="base-uri 'self';
default-src 'self';
img-src data: https:;
object-src 'none';
script-src 'self'
'wasm-unsafe-eval';
style-src 'self';
upgrade-insecure-requests;">
<meta http-equiv="Content-Security-Policy"
content="base-uri 'self';
default-src 'self';
img-src data: https:;
object-src 'none';
script-src 'self'
'unsafe-eval';
style-src 'self';
upgrade-insecure-requests;">
<meta http-equiv="Content-Security-Policy"
content="base-uri 'self';
default-src 'self';
img-src data: https:;
object-src 'none';
script-src 'self'
'sha256-v8v3RKRPmN4odZ1CWM5gw80QKPCCWMcpNeOmimNL2AA='
'unsafe-eval';
style-src 'self';
upgrade-insecure-requests;">
Not
Karma, sha256-v8v3RKRPmN4odZ1CWM5gw80QKPCCWMcpNeOmimNL2AA=
istemci tarafı Blazor uygulamalar için kullanılan satır içi betiği temsil eder. Bu, gelecekte kaldırılabilir.
<meta http-equiv="Content-Security-Policy"
content="base-uri 'self';
default-src 'self';
img-src data: https:;
object-src 'none';
script-src https://stackpath.bootstrapcdn.com/
'self'
'sha256-v8v3RKRPmN4odZ1CWM5gw80QKPCCWMcpNeOmimNL2AA='
'unsafe-eval';
style-src https://stackpath.bootstrapcdn.com/
'self'
'unsafe-inline';
upgrade-insecure-requests;">
<meta http-equiv="Content-Security-Policy"
content="base-uri 'self';
default-src 'self';
img-src data: https:;
object-src 'none';
script-src https://stackpath.bootstrapcdn.com/
'self'
'sha256-v8ZC9OgMhcnEQ/Me77/R9TlJfzOBqrMTW8e1KuqLaqc='
'sha256-If//FtbPc03afjLezvWHnC3Nbu4fDM04IIzkPaf3pH0='
'sha256-v8v3RKRPmN4odZ1CWM5gw80QKPCCWMcpNeOmimNL2AA='
'unsafe-eval';
style-src https://stackpath.bootstrapcdn.com/
'self'
'unsafe-inline';
upgrade-insecure-requests;">
Uygulamanın gerektirdiği şekilde ek script-src
ve style-src
karmalar ekleyin. Geliştirme sırasında, karmaların sizin için hesaplanmış olması için çevrimiçi bir araç veya tarayıcı geliştirici araçları kullanın. Örneğin, aşağıdaki tarayıcı araçları konsol hatası, ilke kapsamında olmayan gerekli bir betiğin karması bildirir:
Şu İçerik Güvenliği İlkesi yönergesini ihlal ettiği için satır içi betik yürütülemedi: " ... ". Satır içi yürütmeyi etkinleştirmek için 'güvenli olmayan satır içi' anahtar sözcüğü, karma ('sha256-v8v3RKRPmN4odZ1CWM5gw80QKPCCWMcpNeOmimNL2AA=') veya bir nonce ('nonce-...') gereklidir.
Hatayla ilişkili belirli betik, konsolunda hatanın yanında görüntülenir.
Ortam dışıDevelopment
ortamlarda CSP uygulama
CsP bir Blazor uygulamanın <head>
içeriğine uygulandığında Development
ortamdaki yerel testlere müdahale eder. Örneğin, Tarayıcı Bağlantısı ve tarayıcı yenileme betiği yüklenemiyor. Aşağıdaki örneklerde CSP'nin <meta>
etiketinin ortam dışıDevelopment
ortamlarda nasıl uygulanacağı gösterilmektedir.
Not
Bu bölümdeki örneklerde CSP'lerin tam <meta>
etiketi gösterilmez. Etiketlerin tamamı<meta>
, bu makalenin önceki bölümlerindeki İlkeyi uygula bölümünün alt bölümlerinde bulunur.
Üç genel yaklaşım mevcuttur:
- CSP'yi, csp'yi
App
uygulamanın tüm düzenlerine uygulayan bileşen aracılığıyla uygulayın. - CSP'leri uygulamanın farklı alanlarına( örneğin, yalnızca yönetici sayfaları için özel bir CSP) uygulamanız gerekiyorsa, etiketi kullanarak
<HeadContent>
CSP'leri düzen temelinde uygulayın. Tam etkililik için, her uygulama düzeni dosyası yaklaşımı benimsemelidir. - Barındırma hizmeti veya sunucusu, bir uygulamanın giden yanıtlarını ekleyen bir
Content-Security-Policy
üst bilgi aracılığıyla CSP sağlayabilir. Bu yaklaşım barındırma hizmetine veya sunucusuna göre farklılık gösterdiğinden, aşağıdaki örneklerde ele alınmıyor. Bu yaklaşımı benimsemek istiyorsanız barındırma hizmeti sağlayıcınızın veya sunucunuzun belgelerine bakın.
Blazor Web App Yaklaşım
bileşenine App
()Components/App.razor
öğesini ekleyin IHostEnvironment:
@inject IHostEnvironment Env
Bileşenin <head>
içeriğindeApp
, ortamda değilken CSP'yi Development
uygulayın:
@if (!Env.IsDevelopment())
{
<meta ...>
}
Alternatif olarak, aşağıdaki örnekte gösterildiği gibi CSP'leri klasördeki Components/Layout
düzen temelinde uygulayın. Her düzenin bir CSP belirttiğine emin olun.
@inject IHostEnvironment Env
@if (!Env.IsDevelopment())
{
<HeadContent>
<meta ...>
</HeadContent>
}
Blazor WebAssembly uygulama yaklaşımları
bileşenine App
()App.razor
öğesini ekleyin IWebAssemblyHostEnvironment:
@using Microsoft.AspNetCore.Components.WebAssembly.Hosting
@inject IWebAssemblyHostEnvironment Env
Bileşenin <head>
içeriğindeApp
, ortamda değilken CSP'yi Development
uygulayın:
@if (!Env.IsDevelopment())
{
<HeadContent>
<meta ...>
</HeadContent>
}
Alternatif olarak, önceki kodu kullanın ancak klasöre düzen temelinde CSP'ler Layout
uygulayın. Her düzenin bir CSP belirttiğine emin olun.
Meta etiket sınırlamaları
Etiket <meta>
ilkesi aşağıdaki yönergeleri desteklemez:
Önceki yönergeleri desteklemek için adlı Content-Security-Policy
bir üst bilgi kullanın. Yönerge dizesi üst bilginin değeridir.
İlkeyi test edin ve ihlal raporlarını alın
Test, ilk ilke oluşturulurken üçüncü taraf betiklerin yanlışlıkla engellenmediğini doğrulamaya yardımcı olur.
İlke yönergelerini zorlamadan bir ilkeyi belirli bir süre boyunca test etmek için, üst bilgi tabanlı bir ilkenin <meta>
etiketinin http-equiv
özniteliğini veya üst bilgi adını olarak Content-Security-Policy-Report-Only
ayarlayın. Hata raporları belirtilen URL'ye JSON belgeleri olarak gönderilir. Daha fazla bilgi için bkz . MDN web belgeleri: Content-Security-Policy-Report-Only.
İlke etkinken ihlalleri raporlamak için aşağıdaki makalelere bakın:
Artık kullanılması önerilmese report-uri
de, tüm ana tarayıcılar tarafından desteklenene kadar report-to
her iki yönerge de kullanılmalıdır. desteği tarayıcılardan herhangi bir zamanda bırakıldığı için report-uri
yalnızca kullanmayınreport-uri
. Tam olarak desteklendiğinde report-to
ilkelerinizde için report-uri
desteği kaldırın. uygulamasının report-to
benimsenmesini izlemek için bkz . Şunu kullanabilir miyim: rapora.
Her sürümde bir uygulamanın ilkesini test edin ve güncelleştirin.
Sorun giderme
- Hatalar tarayıcının geliştirici araçları konsolunda görünür. Tarayıcılar aşağıdakiler hakkında bilgi sağlar:
- İlkeyle uyumlu olmayan öğeler.
- İlkeyi engellenen bir öğeye izin verecek şekilde değiştirme.
- İlke yalnızca istemcinin tarayıcısı tüm dahil edilen yönergeleri desteklediğinde tamamen etkilidir. Geçerli bir tarayıcı destek matrisi için bkz . Kullanabilir miyim: content-Security-Policy.
Ek kaynaklar
ASP.NET Core