it-swarm.com.ru

Отказался загружать скрипт, потому что он нарушает следующую директиву Content Security Policy

Привет, когда я пытался развернуть свое приложение на устройствах с системой Android выше 5.0.0, я продолжал получать такие сообщения об ошибках:

07-03 18: 39: 21.621: D/SystemWebChromeClient (9132): file: ///Android_asset/www/index.html: строка 0: отказался загружать скрипт ' http: // xxxxx ', поскольку он нарушает следующее содержимое Директива политики безопасности: "script-src 'self' 'unsafe-eval' 'Unsafe-inline'". 07-03 18: 39: 21,621: I/хром (9132): [INFO: CONSOLE (0)] "Отказ от загрузки скрипта ' http: // xxx ', поскольку он Нарушает следующую директиву политики безопасности содержимого:" script-src 'self' 'unsafe-eval' 'unsafe-inline' ".

Однако, если я развернул его на мобильном устройстве с системой Android 4.4.x, политика безопасности будет работать со стандартными:

<meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *">

Тогда я подумал, может быть, я должен изменить что-то вроде этого:

<meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-eval' 'unsafe-inline'; object-src 'self'; style-src 'self' 'unsafe-inline'; media-src *">

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

Спасибо!

48
MangooSaSa

решено с

script-src 'self' http://xxxx 'unsafe-inline' 'unsafe-eval'; 
10
MangooSaSa

Попробуйте заменить ваш метатег на это ниже:

<meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' http://* 'unsafe-inline'; script-src 'self' http://* 'unsafe-inline' 'unsafe-eval'" />

Или в дополнение к тому, что у вас есть, вы должны добавить http://* к style-src и script-src, как показано выше, добавленное после «self»

Если ваш сервер включает заголовок Content-Security-Policy, заголовок переопределит мета.

41
Ashikodi

Автоматический ответ, данный MagngooSasa, сработал, но для тех, кто пытается понять ответ, вот несколько подробностей:

При разработке приложений Cordova для Visual Studio я попытался импортировать удаленный файл javascript [расположенный здесь http://Guess.What.com/MyScript.js] , но с ошибкой, упомянутой в заголовке. 

Вот метатег ДО, в файле index.html проекта 

<meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *">

Вот ИСПРАВЛЕННЫЙ метатег, позволяющий импортировать удаленный скрипт: 

<meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *;**script-src 'self' http://onlineerp.solution.quebec 'unsafe-inline' 'unsafe-eval';** ">

и больше ошибок нет!

31
Simon

Мы использовали это:

<meta http-equiv="Content-Security-Policy" content="default-src gap://ready file://* *; style-src 'self' http://* https://* 'unsafe-inline'; script-src 'self' http://* https://* 'unsafe-inline' 'unsafe-eval'">
4
simprão

Чтобы уточнить еще на этом добавлении 

script-src 'self' http://somedomain 'unsafe-inline' 'unsafe-eval';    

На метатег вот так

<meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; script-src 'self' https://somedomain.com/ 'unsafe-inline' 'unsafe-eval';  media-src *">

Исправляет ошибку

2
James Nicholson

Для тех, кто ищет полное объяснение, я рекомендую вам взглянуть на Политику безопасности контента: https://www.html5rocks.com/en/tutorials/security/content-security-policy/

"Код от https://mybank.com должен иметь доступ только к https://mybank.com данным и https://evil.example.com следует конечно, никогда не будет разрешен доступ. Каждый источник изолирован от остальной части сети "

Атаки XSS основаны на неспособности браузера отличить код вашего приложения от кода, загруженного с другого веб-сайта. Таким образом, вы должны внести в белый список источники контента, которые вы считаете безопасными для загрузки контента, используя HTTP-заголовок Content-Security-Policy.

Эта политика описывается с использованием ряда директив политики, каждая из которых описывает политику для определенного типа ресурса или области политики. Ваша политика должна включать директиву политики default-src, которая является запасной для других типов ресурсов, когда у них нет собственных политик.

Итак, если вы измените свой тег на:

<meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *;**script-src 'self' http://onlineerp.solution.quebec 'unsafe-inline' 'unsafe-eval';** ">

Вы говорите, что авторизуете выполнение кода Javacsript (script-src) Из источников 'self', http://onlineerp.solution.quebec, 'unsafe-inline', 'unsafe-eval'.

Я полагаю, что первые два являются верными для вашего случая использования, я немного не уверен насчет других. 'unsafe-line' и 'unsafe-eval' создают проблему безопасности, поэтому вы не должны использовать их, если у вас нет особой необходимости в них:

«Если eval и его братья из текста в JavaScript абсолютно необходимы Для вашего приложения, вы можете включить их, добавив« unsafe-eval »в качестве источника В директиве script-src. Но, опять же, пожалуйста, не делайте . Запрещение возможности выполнять строки усложняет злоумышленнику выполнение несанкционированного кода на вашем сайте. " (Майк Уэст, Google)

0
Rocío García Luque

Добавление метатега для игнорирования этой политики не помогло нам, потому что наш веб-сервер вставляет заголовок Content-Security-Policy в ответ.

В нашем случае мы используем Ngnix в качестве веб-сервера для Java-приложения Tomcat9. С веб-сервера браузер запрещает использование inline scripts, поэтому для временного тестирования мы отключили Content-Security-Policy, комментируя.

Как отключить в ngnix?

  • По умолчанию ngnix ssl.conf будет иметь этот заголовок добавления к ответу.

    #> grep 'Content-Security' -ir /etc/nginx/global/ssl.conf add_header Content-Security-Policy "default-src 'none'; frame-ancestors 'none'; script-src 'self'; img-src 'self'; style-src 'self'; base-uri 'self'; form-action 'self';";

  • Если вы просто прокомментируете эту строку и перезапустите ngnix, она не должна добавлять заголовок к ответу.

Если вы беспокоитесь о безопасности или производстве, пожалуйста, не следуйте этому, используйте эти шаги только для целей тестирования и продолжения.

0
prem