#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 по умолчанию.