Реализация правильных правил CSP для CDN

В настоящее время я изучаю курс разработки мобильных веб-приложений в моем университете и пытаюсь настроить загрузчик на своем приложении с мифрилом.

Ранее я настраивал загрузочную систему в "нормальных" веб-приложениях, но не могу понять, как правильно настроить политику безопасности содержимого в моем приложении Mithril.js.

Следует отметить, что это не является обязательной частью моего текущего задания, но я скорее пытаюсь понять концепцию CSP с моей стороны, так как это очень важная вещь для понимания (OWASP top 10, yo!).

Поэтому я не прошу, чтобы кто-нибудь помог мне закончить задание или около того, скорее чтобы помочь мне понять, где я ошибаюсь с этим внеклассным применением CSP.


Вот как выглядит мой CSP прямо сейчас:

<meta http-equiv="Content-Security-Policy" 
content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval';
         style-src 'self' 'unsafe-inline' http://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css;
         media-src *; img-src 'self' data: content:;
         script-src https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js
         http://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js;">

URL-адреса CDN работают нормально и в настоящее время реализованы на нескольких других сайтах, которые я настроил, но я получаю следующие ошибки во время проверки консоли в Chrome:

Отказался от загрузки сценария " http://localhost:8013/cordova.js", поскольку он нарушает следующую директиву политики безопасности содержимого: "script-src https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js http://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js".

index.html: 1 Отказался загружать скрипт " http://localhost:8013/bin/app.js", поскольку он нарушает следующую директиву политики безопасности содержимого: "script-src https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js http://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js".

jquery.min.js: 2 Отказался загружать шрифт ' http://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/fonts/glyphicons-halflings-regular.woff2', поскольку он нарушает следующую директиву политики безопасности содержимого: " default-src 'self' data: gap: https://ssl.gstatic.com/ 'unsafe-eval' ". Обратите внимание, что 'font-src' не был установлен явно, поэтому 'default-src' используется в качестве запасного варианта.

(анонимно) @ jquery.min.js:2 jquery.min.js:2 Отказался загружать шрифт ' http://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/fonts/glyphicons-halflings-regular.woff' потому что он нарушает следующую директиву политики безопасности содержимого: "данные по умолчанию" src "self: gap: https://ssl.gstatic.com/ " unsafe-eval "". Обратите внимание, что 'font-src' не был установлен явно, поэтому 'default-src' используется в качестве запасного варианта.

(анонимно) @ jquery.min.js:2 jquery.min.js:2 Отказался загружать шрифт ' http://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/fonts/glyphicons-halflings-regular.ttf' потому что он нарушает следующую директиву политики безопасности содержимого: "данные по умолчанию" src "self: gap: https://ssl.gstatic.com/ " unsafe-eval "". Обратите внимание, что 'font-src' не был установлен явно, поэтому 'default-src' используется в качестве запасного варианта.

(анонимно) @ jquery.min.js: 2 http://localhost:8013/favicon.ico Не удалось загрузить ресурс: сервер ответил со статусом 404 (не найдено)

1 ответ

Отвечая на этот вопрос в нашем чате, но для других здесь краткий ответ. Поместите ваш URL в файл CSS перед "unsafe-inline", чтобы он

style-src 'self' bootstrap.css 'unsafe-inline';

И вам нужно 'self' в script-src до jquery и bootstrap.js.

Другие вопросы по тегам