CSP: comment autoriser un evel dangereux pour un préfixe d'URI donné (Firefox)

Je suis en train d'utiliser MathJax dans le cadre de notre application web qui utilise assez strictes Content Security Policy (CSP). Le problème est que MathJax est codé pour utiliser eval() [pour être exact, en forme de Function()] qui n'est pas considéré comme sûr par défaut par CSP.

Je suis en utilisant le CSP suivant l'en-tête actuellement:

X-Content-Security-Policy: allow 'self'; img-src *; media-src *; frame-src *; font-src *; frame-ancestors 'none'; style-src *; report-uri '/:save-csp-violation';

Qui provoque MathJax 2.0 code de l'échec, car il utilise Function(). J'ai essayé de permettre dangereux-eval (c'est à dire Function()) uniquement pour les MathJax situé au sein de la même origine ci-dessous chemin /:static/math/. Pour ce faire, j'ai essayé d'ajouter

unsafe-eval '/:static/math/*'

pour faire le plein d'en-tête de ressembler à

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/*'

mais je ne peux toujours pas Firefox 13.0 pour exécuter le code. J'obtiens un message d'erreur de Firefox Web Console (situé dans Outils - 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

Cependant, je ne suis pas un CSP rapport à la rapport-uri". (Comme vous le voyez, je suis actuellement à l'exécution du test personnalisé localhost port sans SSL, dans le cas qui fait une différence. Le côlon avant static n'est pas une faute de frappe, je suis la réservation de tous les pièces chemin en commençant par un signe deux-points pour l'usage interne de l'application, tout contenu de l'utilisateur peut définir librement les autres Url.)

Est mon utilisation de unsafe-eval attribut incorrect ou est-il impossible de permettre dangereux-eval seulement pour le sous-ensemble de 'soi'? L'intention est de permettre dangereux-eval seulement pour la même origine préfixe de chemin /:static/mathstricte CSP JS exécution de code pour " self ' et pas de code JS pour toute autre méthode.

source d'informationauteur Mikko Rantalainen