Content-Security-Policy ora utilizza 'strict-dynamic'

Sì!

MDN ha una bella spiegazione ed esempi.

L’espressione sorgente 'strict-dynamic' specifica che la fiducia data esplicitamente a uno script presente nel markup, accompagnandolo con un nonce o un hash, verrà propagata a tutti gli script caricati da quello script radice.

Quindi, finché lo script originale è attendibile (tramite un nonce), il browser consente di caricare qualsiasi altro script senza restrizioni. E poi, poiché tali script sono attendibili, possono caricarne altri!


C’è un’unica avvertenza, ovvero che gli script non possono essere “inseriti dal parser”. Questo impedisce che strict-dynamic venga sfruttato per attacchi XSS.

Quindi, ad esempio, questo verrebbe “inserito dal parser” e verrebbe bloccato:

document.head.appendChild("<script src='https://example.com/xss-attempt.js' />");

Ma la costruzione dell’elemento script programmaticamente non comporta l’analisi HTML, è molto meno probabile che sia un vettore XSS, e quindi è consentito:

const script = document.createElement("script");
script.src = "https://example.com/script.js"
document.head.appendChild(script);

^^ questo è essenzialmente come funziona loadScript()

3 Mi Piace