Реализация правильных правил 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.