Nityananda Das Ответов: 2

Получение ошибки “отказано в применении встроенного стиля, поскольку он нарушает следующую политику безопасности содержимого”


Я получаю следующую ошибку при запуске приложения

Отказался применить встроенный стиль, потому что он нарушает следующего содержания политики безопасности директива: "стиль-ФОК 'самостоятельная' https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/ 'SHA256 хэш-47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=' 'SHA256 хэш-5uIP+HBVRu0WW8ep6d6+YVfhgkl0AcIabZrBS5JJAzs='". Либо 'небезопасно-ключевое слово inline', хэш ('SHA256 хэш-4Su6mBWzEIFnH4pAGMOuaeBrstwJN4Z3pq/s1Kn4/с kq='), или извращенец ('во избежание...') является обязательным для включения встроенного выполнения.

Ниже приведен код, который я использую в настоящее время

Что я уже пробовал:

const string modernizrHash1 = "sha256-47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=";
const string modernizrHash2 = "sha256-5uIP+HBVRu0WW8ep6d6+YVfhgkl0AcIabZrBS5JJAzs=";
app.UseCsp(options => options
.DefaultSources(s => s.Self())
.ScriptSources(s => s.Self().CustomSources("https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/"))
.StyleSources(s => s.Self().CustomSources("https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/", modernizrHash1, modernizrHash2))
.FontSources(s => s.Self().CustomSources("https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/fonts/"))
.ImageSources(s => s.Self().CustomSources("data:"))
);

MadMyche

Я думаю, что проблема, с которой вы столкнулись, больше связана с политикой безопасности контента и модернизацией, а не с Net=Core. Я добавляю их к тегам вашего вопроса.

2 Ответов

Рейтинг:
2

Richard Deeming

Цитата:
Либо ключевое слово 'unsafe-inline', либо хэш ('sha256-4Su6mBWzEIFnH4pAGMOuaeBrstwJN4Z3pq/s1Kn4/KQ='), или nonce ('nonce-...') требуется для включения встроенного выполнения.

Ни один из двух хэшей, которые вы добавили в свой CSP, не соответствует встроенному <style> контент, который вы пытаетесь загрузить.

Сгенерировать хэш для встроенных стилей, а также добавить ее в свой ЦОН.

URI отчета: генератор хэша CSP[^]


Nityananda Das

Я пробовал использовать новый хэш-ключ, но он не работает.

Richard Deeming

Да, похоже, что это может быть проблема, которую MadMyche нашел в решении 1. Вы пробовали обходной путь по ссылке, которую он опубликовал?

Nityananda Das

Я исправил эту проблему, изменив хэш-ключи, показанные в ошибке консоли браузера, Я заменил хэш-ключ ошибки консоли своим хэш-ключом кода, но не уверен, является ли это постоянным решением или нет.

Примечание: нет никакой проблемы, когда я запускаю его в браузере IE, только в chrome и firefox я получаю эту проблему.

Не могли бы вы рассказать мне, как генерируются хэш-ключи и как я могу исправить это навсегда ?

Nityananda Das

Я исправил эту проблему, изменив хэш-ключи, показанные в ошибке консоли браузера, Я заменил хэш-ключ ошибки консоли своим хэш-ключом кода, но не уверен, является ли это постоянным решением или нет.

Примечание: нет никакой проблемы, когда я запускаю его в браузере IE, только в chrome и firefox я получаю эту проблему.

Не могли бы вы рассказать мне, как генерируются хэш-ключи и как я могу исправить это навсегда

Richard Deeming

Вы не получаете эту проблему в IE, потому что он не поддерживает CSP должным образом, поэтому он просто игнорирует ограничения.

К сожалению, пока команда Modernizr не исправит эту проблему, единственным надежным решением будет разрешить "небезопасные встроенные" стили. Очевидно, вам нужно будет оценить, является ли это приемлемым риском для вашего сайта.

Nityananda Das

Большое тебе спасибо, Ричард, за то, что ты меня поддержал...

Рейтинг:
1

MadMyche

Похоже, что это может быть Modernizr, не ладящий с политикой безопасности контента сайтов. Мне кажется, что вы не единственный, кто испытывает это:

Modernizr вызывает ошибки нарушения политики безопасности контента (CSP) · выпуск #1450 · Modernizr/Modernizr · GitHub[^]

Возможный обходной путь
Ограничения политики безопасности контента обходной путь по termi · Pull Request #1263 · Modernizr/Modernizr · GitHub[^]

Подробнее о CSP
Политика безопасности контента (CSP) - HTTP | MDN[^]