nonceBu özellik, “Beyaz liste” belirli satır içi sağlar scriptve styleCSP kullanımını kaçınırken, elementlerin unsafe-inline(izin verecek direktif tüm inline script/ styleyine siz satır içi izin vermeme anahtar CSP özelliğini koruduğunu,) script/ stylegenel 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-srcveya 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 scriptveya styleizin 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, nonceDokü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.