Почему CSP не позволяет загружать скрипт, хотя мета настроена в ASP.NET Ядро MVC

#asp.net-core #content-security-policy

Вопрос:

У меня есть ASP.NET Основное приложение MVC и хотите использовать js-скрипт. Я добавил его на свою _Layout страницу, и он отлично работает. Затем я хотел добавить reCAPTCHA в свое приложение. Поэтому я связал сценарий, но он не отображается, и я получаю эту ошибку:

Отказался загружать скрипт ‘https://www.google.com/recaptcha/api.js» потому что это нарушает следующую директиву Политики безопасности контента: «по умолчанию-src ‘self'». Обратите внимание, что «script-src-элемент» явно не был задан, поэтому «default-src» используется в качестве запасного варианта.

Поэтому я добавил мету в свой _Layout.cshtml файл следующим образом

 <meta http-equiv="Content-Security-Policy" content="img-src data: 'self'; default-src 'self'; script-src * data: https://www.google.com/ 'unsafe-inline' 'unsafe-eval';">
 

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

PS: Я также пытался настроить script-src-elem , но это тоже не сработало.

Обновление: у меня также есть проблемы с изображениями. Попытка настроить CSP подобным образом <meta http-equiv="Content-Security-Policy" content="default-src 'self'; img-src data:;" /> приводит к:

Отказано в загрузке изображения», поскольку оно нарушает следующую директиву Политики безопасности содержимого: «Данные img-src:»

Но использование этой политики при попытке добавить данные: изображение с помощью javascript приводит к

Отказано в загрузке изображения «данные:изображение/jpeg;base64,*», поскольку оно нарушает следующую директиву Политики безопасности содержимого: «по умолчанию-src ‘self'». Обратите внимание, что «img-src» не был установлен явно, поэтому «по умолчанию-src» используется в качестве запасного варианта.

Таким образом, эта политика используется в первом случае и игнорируется во втором

Комментарии:

1. Пожалуйста, также опубликуйте сообщение об ошибке «также пытался настроить script-src-elem, но это тоже не сработало». (пожалуйста, отредактируйте вопрос)

2. послание точно такое же. мне кажется, что как script-src, так и script-src-элемент игнорируются

3. Вам нужно ознакомиться с этой статьей .

4. Эта статья действительно полезна, но она не решила мою проблему, так как моя политика настроена правильно в соответствии с этой статьей, и ее все еще игнорируют

Ответ №1:

Наконец я решил эту проблему. Мой проект был основан на табличке identityserver4, и проблема заключалась в том, что в этой табличке заголовки CSP уже были настроены. Поэтому при попытке добавить CSP _Layout я не сбрасывал реализацию по умолчанию. Поэтому мне просто нужно было удалить _Layout CSP и настроить CSP по умолчанию.