Встроенный скрипт нарушает Политику безопасности контента - PullRequest
0 голосов
/ 02 ноября 2018

Я загружаю внешний скрипт из chargebee.com и получаю сообщение об ошибке в консоли:

[Только отчет] Отказ от выполнения встроенного скрипта, поскольку он нарушает следующая директива политики безопасности контента: "script-src 'nonce-VVZ + V0c =' 'self' https://maps.googleapis.com https://domain.chargebeestatic.com http://dgkxwewtzsnml.cloudfront.net/static/app-static-assets/hp/hp-4.8.5/". Либо ключевое слово unsafe-inline, хеш ('sjZUY =') или одноразовый номер ('nonce -...') требуется для включения встроенного выполнения.

Моя политика безопасности контента определена в Nginx:

add_header Content-Security-Policy "default-src 'self' https: data: 'unsafe-inline' 'unsafe-eval';" always;

Поскольку я указал 'unsafe-inline', я не уверен, почему появляется эта ошибка.

Обновление:

Я вижу, когда нажимаю на разъем iframe в Safari Console:

<!DOCTYPE>
<html>
<head>
  <title></title>

<script  nonce="Au5oDesccjEDNeeHfk=" >window.cb_hp_cdn_path="//dgkxetzsnml.cloudfront.net/static/app-static-assets/hp/hp-4.8.5/"</script>
</head>
<body>

</body>
<script  src="https://domain.chargebeestatic.com/api/internal/15346543/retrieve_init_info"  nonce="Au5oejEDNGKHHfk=" ></script>
<script type='text/javascript' src='//dgkxwewtzsnml.cloudfront.net/static/app-static-assets/hp/hp-4.8.5/javascripts/vendor.js'></script>

  <script type='text/javascript' src='//dgkxwewtzsnml.cloudfront.net/static/app-static-assets/hp/hp-4.8.5/javascripts/hp_connector.js'></script>

</html>

1 Ответ

0 голосов
/ 03 ноября 2018

Вы не можете использовать unsafe-inline и одноразовые номера одновременно. Как только одноразовый номер добавляется в ваш CSP, директива unsafe-inline будет игнорироваться браузером.

Если вы не добавляете одноразовый номер самостоятельно, то вы не полностью контролируете своего CSP, потому что одна из ваших зависимостей - это добавление, которое либо объединено с вашим, либо еще хуже, перезаписывает ваше. Посмотрите на ваши заголовки с помощью инструментов разработчика браузера, чтобы увидеть, соответствуют ли фактически отправленные заголовки вашему CSP. Вы обнаружите, что они этого не делают.

На самом деле, использование unsafe-inline в качестве источника сценария сводит на нет весь смысл наличия CSP, поэтому лучшим способом решения этой проблемы было бы реорганизовать ваше программное обеспечение для использования одноразовых номеров, а затем добавьте свой собственный nonce к вашему CSP.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...