Sto provando a utilizzare MathJax come parte della nostra applicazione web che utilizza il rigoroso Content Security Policy (CSP). Il problema è che MathJax è codificato per utilizzare eval()
[per essere precisi, nella forma di Function()
] che non è considerato sicuro per impostazione predefinita da CSP.CSP: Come consentire la valutazione non sicura per un dato prefisso URI (Firefox)
sto usando seguente intestazione CSP attualmente:
X-Content-Security-Policy: allow 'self'; img-src *; media-src *; frame-src *; font-src *; frame-ancestors 'none'; style-src *; report-uri '/:save-csp-violation';
che fa sì che il codice mathjax 2.0 a fallire perché utilizza Function()
. Ho provato a consentire la valutazione non sicura (ad esempio Function()
) solo per MathJax situato all'interno della stessa origine sotto il percorso /:static/math/
. Per fare questo, ho provato ad aggiungere
unsafe-eval '/:static/math/*'
per rendere l'intestazione completa assomigliare
X-Content-Security-Policy: allow 'self'; img-src *; media-src *; frame-src *; font-src *; frame-ancestors 'none'; style-src *; report-uri '/:save-csp-violation'; unsafe-eval '/:static/math/*'
, ma non riesco ancora a Firefox 13.0 per eseguire il codice. Ricevo un messaggio di errore per Firefox Web Console (che si trova in Strumenti - Web Developer):
[10:09:59.072] call to Function() blocked by CSP @ http://localhost:8080/:static/math/2.0/MathJax.js?config=TeX-AMS-MML_HTMLorMML:29
Tuttavia, non sto ottenendo un rapporto CSP per il 'report-uri'. (Come puoi vedere, sto attualmente eseguendo il test tramite la porta personalizzata localhost senza SSL, nel caso in cui ciò faccia la differenza. I due punti prima di static
non sono un errore di battitura, sto riservando tutte le parti del percorso che iniziano con due punti per uso interno di l'applicazione, tutti i contenuti utente può definire liberamente altri URL.)
è il mio uso di unsafe-eval
attributo non corretto o è impossibile consentire non sicuro-eval solo per sottoinsieme di 'sé'? L'intento è di consentire la valutazione non sicura solo per lo stesso prefisso del percorso di origine /:static/math
, l'esecuzione rigorosa del codice JS CSP per 'self
' e nessun codice JS per nessun altro metodo.
Firefox 13.0 contiene anche un bug o una funzionalità mancante che l'intestazione CSP non corrisponde alla variante W3C. Vedi il bug qui: https://bugzilla.mozilla.org/show_bug.cgi?id=746978 –