2015-09-25 12 views
7

Così ho implementato CSP per la mia app Web e funziona perfettamente bene in Chrome. Tutti gli script inline con nonce vengono eseguiti; e quelli senza esso non sono eseguiti.CSP nonce ignorato da Safari

In Safari tuttavia, questo è il messaggio che vedo nella console:

L'elenco di origine per contenuti la politica di sicurezza direttiva 'script src' contiene una fonte non valida: '' nonce-fbe23fb21d40c38e8df7c0a16357dd3ec4be86ca233cb41206ac5f897cf9a103' '. Sarà ignorato.

Intestazione:

Content-Security-Policy script-src 'nonce-cb28e5c8a2b833169bb8d1fa686f659fed9b3bf8ea52b86916bcaf20a04b3209' 'self' 

Nessuno degli script in linea vengono eseguite, anche quelli con nonce.

risposta

8

Safari non supporta ancora nonces (si prega di bug del rappresentante locale del webkit per supportare questo) ma Firefox e Chrome hanno implementato il comportamento standard che è retrocompatibile. Vale a dire, se è presente un nonce, allora 'unsafe-inline' viene ignorato.

Invia entrambi 'unsafe-inline' e il tuo nonce e otterrai il comportamento desiderato. Safari si lamenterà del "valore sorgente sconosciuto" ma funzionerà come previsto.

Vedi http://www.w3.org/TR/CSP2/#directive-script-src

+0

se uso come CSP (non permettendo pericoloso-linea) nella mia app angolare, si è lasciare che gli eventi angolari come il lavoro ng clic? –

+0

Non ho idea, ma se ng-click non funziona con CSP, è il problema di ng-click, non CSP. – oreoshake

+1

Vale la pena sottolineare che, se possibile, è necessario evitare l'inline-in-line, in quanto elimina lo scopo dell'utilizzo di CSP in primo luogo. – nucc1