Политика безопасности контента несколько раз - PullRequest
0 голосов
/ 14 января 2020

У меня есть одностраничное приложение (встроенное. net core MVC 2.2), где раздел html загружается на лету.

В основном документе добавленная политика CSP с динамически генерируемым заголовком выглядит следующим образом:

Content-Security-Policy: script-src 'self' 'nonce-I64vb811BxRNGV9Xf0pM'

Затем следует раздел страницы, загруженный с помощью функции загрузки jquery ajax. Раздел страницы содержит скрипт (из sr c) с одноразовым номером. Раздел страницы с заголовком CSP выглядит как

Content-Security-Policy: script-src 'self' 'nonce-ci5TQsyidT8x2jwBLRHS'

все хорошо, но браузеры (chrome, сафари блокирует скрипт), с сообщением:

jqueryscriptsbundle.js:formatted:43 Refused to execute inline script 
because it violates the following 
Content Security Policy directive: "script-src 'self' 'nonce-I64vb811BxRNGV9Xf0pM'

Так что браузер сравнивает одноразовый номер сценарий, т.е. ci5TQsyidT8x2jwBLRHS со значением nonce для корневой / главной страницы I64vb811BxRNGV9Xf0pM, следовательно, сценарий заблокирован.

Это правильное поведение? Что я могу сделать, чтобы это работало?

1 Ответ

2 голосов
/ 15 января 2020

Ваш начальный CSP, загруженный вместе со страницей, предоставляет одноразовый номер. То, что вы пытаетесь сделать, это добавить еще один nonce, через Ajax, после начальной загрузки страницы. CSP явно не позволяет этого; это не ошибка - это весь вопрос.

Что вы можете сделать, это разрешить скрипт-sr c из strict-dynamic. Это позволяет вам авторизовать скрипт, и все, что загружено этим скриптом, также авторизовано. См https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/script-src

...