Come abilitare la lista bianca delle librerie JS che necessitano di una valutazione non sicura

2

È possibile specificare i valori dell'elenco sorgente in base allo script src. La RFC menziona , ma non sono sicuro del suo utilizzo.

Ad esempio:

Content-Security-Policy:default-src *; script-src 'unsafe-inline' 'self';
Content-Security-Policy:script-src 'unsafe-inline' 'unsafe-eval' https://maps.googleapis.com/*';

Questa combinazione significa non consentire unsafe-eval ovunque tranne le API di Google Maps (che ne hanno bisogno).

In caso contrario, significa davvero che le app devono rimuovere unsafe-eval per tutto solo perché un servizio come Google Maps ne ha bisogno. Non sono sicuro che i nonce possano essere usati per questo tipo di situazioni.

    
posta Akshay Rawat 08.05.2015 - 11:56
fonte

1 risposta

5

Sfortunatamente non è così che funziona.

Nel tuo esempio,

Content-Security-Policy:default-src *; script-src 'unsafe-inline' 'self';
Content-Security-Policy:script-src 'unsafe-inline' 'unsafe-eval' https://maps.googleapis.com/*';

'unsafe-eval' https://maps.googleapis.com/*' sono entrambe le fonti. Non sta affermando che unsafe-eval è consentito su maps.googleapis.com , sta dichiarando che unsafe-eval è consentito ovunque.

Tuttavia, poiché la prima intestazione mostra solo script-src 'unsafe-inline' 'self' , questo rimuoverà efficacemente 'unsafe-eval' https://maps.googleapis.com/*' dalla seconda direttiva. È lo stesso che solo specificando unsafe-inline . Ogni fonte deve passare attraverso entrambe le politiche "non danneggiata".

Si noti che non è possibile specificare un carattere jolly come si ha. Verifica qui per una spiegazione chiara. Hai bisogno invece di https://maps.googleapis.com .

Non si può usare Nonces per risolvere questo perché non c'è uno script inline static - eval significa che è tutto determinato in fase di esecuzione dal browser.

Ti suggerisco di generare solo la parte 'unsafe-eval' https://maps.googleapis.com della direttiva CSP nelle pagine che richiedono Google maps, come parte di un singolo output di intestazione alla pagina.

    
risposta data 08.05.2015 - 12:52
fonte

Leggi altre domande sui tag