Ich versuche MathJax als Teil unserer Webanwendung zu verwenden, die ziemlich streng Content Security Policy (CSP) verwendet. Das Problem besteht darin, dass MathJax für die Verwendung von eval()
[in Form von Function()
] codiert ist, was von CSP standardmäßig nicht als sicher angesehen wird.CSP: Wie kann unsafe-eval für ein gegebenes URI-Präfix (Firefox) erlaubt werden
Ich verwende folgende CSP-Header zur Zeit:
X-Content-Security-Policy: allow 'self'; img-src *; media-src *; frame-src *; font-src *; frame-ancestors 'none'; style-src *; report-uri '/:save-csp-violation';
Welche Mathjax 2.0-Code führt zum Scheitern verurteilt, weil es Function()
verwendet. Ich habe versucht, unsafe-eval (d. H. Function()
) nur für MathJax zuzulassen, das sich im selben Ursprung unter dem Pfad /:static/math/
befindet. Um dies zu erreichen, habe ich versucht,
unsafe-eval '/:static/math/*'
hinzufügen, um die vollständigen Header wie
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/*'
aussehen zu lassen, aber ich kann immer noch nicht Firefox 13.0, um den Code auszuführen. Ich erhalte eine Fehlermeldung an Firefox Web Console (in Tools - 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
Aber ich bin kein CSP-Bericht zu dem 'Bericht-uri' bekommen. (Wie Sie sehen, führe ich den Test derzeit über einen benutzerdefinierten Localhost-Port ohne SSL durch, falls das einen Unterschied macht. Der Doppelpunkt vor static
ist kein Tippfehler, ich reserviere alle Pfadteile, die mit einem Doppelpunkt für den internen Gebrauch beginnen die Anwendung, alle Benutzerinhalte können andere URLs frei definieren.)
Ist meine Verwendung von unsafe-eval
Attribut falsch oder ist es unmöglich, unsafe-eval nur für eine Teilmenge von "self" zu erlauben? Die Absicht ist, unsafe-eval nur für das gleiche Ursprungswegpräfix /:static/math
, strenge CSP JS-Codeausführung für 'self
' und keinen JS-Code für irgendeine andere Methode zu erlauben.
Firefox 13.0 enthält auch einen Fehler oder fehlende Funktion, dass es CSP-Header nicht mit der W3C-Variante übereinstimmt. Sehen Sie den Fehler hier: https://bugzilla.mozilla.org/show_bug.cgi?id=746978 –