CSP: как разрешить unsafe-eval для данного префикса URI (Firefox)

Я пытаюсь использовать MathJaxкак часть нашего веб-приложения, которое использует довольно строгую политику безопасности контента (CSP). Проблема в том, что MathJax закодирован для использования eval()[точнее, в форме Function()], которая по умолчанию не считается безопасной CSP.

В настоящее время я использую следующий заголовок CSP:

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

Это приводит к сбою кода MathJax 2.0, поскольку он использует Function(). Я пытался разрешить unsafe-eval (т.е. Function()) только для MathJax, расположенного в том же источнике ниже пути /:static/math/. Для этого я попытался добавить

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

, чтобы полный заголовок выглядел как

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

, но я все еще не могу запустить код в Firefox 13.0. Я получаю сообщение об ошибке в веб-консоли Firefox (находится в меню «Инструменты» — «Веб-разработчик»):

[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

Однако я не получаю отчет CSP в «report-uri». (Как видите, в настоящее время я запускаю тест через собственный локальный порт без SSL, если это имеет значение. Двоеточие перед staticне является опечаткой, я резервирую все части пути, начинающиеся с двоеточие для внутреннего использования приложения, весь пользовательский контент может свободно определять другие URL-адреса.)

Является ли мое использование атрибута unsafe-evalнеправильным или невозможно разрешить unsafe-eval только для подмножества 'self'?Цель состоит в том, чтобы разрешить unsafe-eval только для того же префикса исходного пути /:static/math, строгое выполнение кода CSP JS для ' self' и не JS-код для любого другого метода.

14
задан Mike West 26 November 2012 в 10:30
поделиться