Непосредственный ответ заключается в том, что, пока скрипт, который вы динамически загружаете (/path/to/imported/script
), размещается в домене, который вы уже занесены в белый список в script-src
, вам не нужно изменять CSP или изменятьваш загрузчик - все будет работать как положено.
Однако более широкая проблема состоит в том, что ваш белый список script-src
включает в себя домены, на которых размещен Javascript, который может быть использован злоумышленником, который обнаружит ошибку внедрения разметки в вашем приложении дляобойти свой CSP.Например, https://cdnjs.cloudflare.com
хостов Angular (https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.7.2/angular.min.js
), который может использоваться злоумышленником для преобразования HTML-инъекции в выполнение произвольного скрипта ( здесь - статья об этом).
В инструменте CSP Evaluator предлагается переключить ваше приложение на использование script-src
, которое использует одноразовые номера CSP вместо белого списка.Для этого вам нужно будет следовать процессу, описанному в https://csp.withgoogle.com/docs/strict-csp.html - в основном, убедитесь, что каждый элемент <script>
имеет правильный атрибут nonce
, который изменяется для каждой загрузки страницы, или вместо этого используйте CSP3 хеширует для статических скриптов.
Ваш CSP будет выглядеть следующим образом:
... script-src 'nonce-[random-value]' 'strict-dynamic' 'unsafe-inline' https:; ...
Если вы используете 'strict-dynamic'
, ваш загрузчик скриптов не имеетизменить, потому что браузеры будут автоматически доверять сценариям, добавленным на вашу страницу через программные API, такие как appendChild()
.