nonce
Bu özellik, “Beyaz liste” belirli satır içi sağlar script
ve style
CSP kullanımını kaçınırken, elementlerin unsafe-inline
(izin verecek direktif tüm inline script
/ style
yine siz satır içi izin vermeme anahtar CSP özelliğini koruduğunu,) script
/ style
genel olarak.
Bu nedenle nonce
öznitelik, tarayıcılara, belirli bir komut dosyasının veya stil öğesinin satır içi içeriğinin bazı (kötü niyetli) üçüncü taraflarca belgeye enjekte edilmediğini, bunun yerine belgenin sunulduğu sunucuyu kontrol eden kişi tarafından kasıtlı olarak belgeye konulduğunu söylemenin bir yoludur. dan.
https://developers.google.com/web/fundamentals/security/csp/#if_you_absolutely_must_use_itnonce
, aşağıdaki adımlar anlamına gelen özelliğin nasıl kullanılacağına dair iyi bir örnek verir :
Web sunucunuzun belirli bir belge için aldığı her istek için, arka ucunuzun kriptografik olarak güvenli bir rasgele sayı üretecinden en az 128 bit veriden oluşan, base64 kodlu rastgele bir dizi oluşturmasını sağlayın; örneğin EDNnf03nceIOfn39fn3e9h3sdfa
,. Bu senin adın.
1. adımda oluşturulan nonce'yi alın ve herhangi bir satır içi script
/ style
"beyaz listeye eklemek" istediğiniz için, arka uç kodunuzun nonce
, tel üzerinden gönderilmeden önce belgeye bir öznitelik eklemesini sağlayın ;
<script nonce="EDNnf03nceIOfn39fn3e9h3sdfa">…</script>
1. adımda oluşturulan nonce, prepend al nonce-
kendisine ve arka uç için kaynak listesinin değerleri arasında bununla ilgili bir CSP başlığı oluşturmak yapmak script-src
veya style-src
:
Content-Security-Policy: script-src 'nonce-EDNnf03nceIOfn39fn3e9h3sdfa'
Dolayısıyla, bir nonce kullanma mekanizması, arka ucunuzun satır içi içeriğin bir karmasını oluşturmasına script
veya style
izin vermek istediğinize ve ardından bu karmayı CSP başlığınızdaki uygun kaynak listesinde belirtmenize bir alternatiftir .
Tarayıcılar, sayfa istekleri arasında gönderilen nonce değerinin değişip değişmediğini kontrol edemediğinden (yapamadığından), yukarıdaki 1'i atlamak ve arka ucunuzun nonce için dinamik bir şey yapmasını istememek mümkündür - tamamen tavsiye edilmez - bu durumda, nonce
Dokümanınızın HTML kaynağına statik değer içeren bir öznitelik ekleyebilir ve aynı nonce değerine sahip statik bir CSP başlığı gönderebilirsiniz.
Ancak bu şekilde statik bir nonce kullanmak istememenizin nedeni, başlangıçta nonce kullanmanın tüm amacını neredeyse tamamen ortadan kaldırmasıdır - çünkü, bunun gibi statik bir nonce kullanırsanız, bu noktada sadece kullanıyor olabilirsiniz unsafe-inline
.