Как исправить проблему с CSP

Привет! У меня проблема с CSP, как это исправить?

screen

Отказано в выполнении встроенного скрипта, так как это нарушает следующую директиву политики безопасности контента: "script-src https://mydomain.com/logs/ https://mydomain.com/sidekiq/ https://mydomain.com/mini-profiler-resources/ https://mydomain.com/assets/ https://mydomain.com/brotli_asset/ https://mydomain.com/extra-locales/ https://mydomain.com/highlight-js/ https://mydomain.com/javascripts/ https://mydomain.com/plugins/ https://mydomain.com/theme-javascripts/ https://mydomain.com/svg-sprite/ https://mydomain.com". Для включения выполнения встроенного кода требуется либо ключевое слово 'unsafe-inline', либо хеш ('sha256-ScCk7JwXKy22dTO0VFM7aV1chV+yd/MUda4X6VnGans='), либо nonce ('nonce-...').

Для теста я перешел в безопасный режим, но в безопасном режиме проблема сохраняется.

Это не моя сильная сторона, но я поискал, и, возможно, вам придется переписать встроенный скрипт, который вы пытаетесь использовать:

Я не хочу отключать защиту CSP, и у меня нет внешних скриптов. Я попытался отключить все плагины и компоненты темы, но это не помогло.

Я добавил все эти ссылки в настройку администратора «content security policy script src», но проблема осталась :frowning:

https://mydomain.com/logs/ https://mydomain.com/sidekiq/ https://mydomain.com/mini-profiler-resources/ https://mydomain.com/assets/ https://mydomain.com/brotli_asset/ https://mydomain.com/extra-locales/ https://mydomain.com/highlight-js/ https://mydomain.com/javascripts/ https://mydomain.com/plugins/ https://mydomain.com/theme-javascripts/ https://mydomain.com/svg-sprite/ https://mydomain.com

Чтобы мы могли вам помочь, вам нужно предоставить URL вашего сайта.

Я могу отправить это тебе в ЛС?

Хм…

Кажется, я нашел причину: проблема возникает из-за того, что я использую мета-тег CSP в своей теме:

<meta http-equiv="Content-Security-Policy" content="img-src https://imgur.com https://giphy.com">

Мне нужно использовать директиву img-src, чтобы ограничить отображение изображений с запрещенных хостов.

Да, эта директива CSP действительно полностью сломает Discourse.

Как я могу изменить директивы CSP по умолчанию в заголовке, добавив img-src, не используя мета-тег? Я пробую это в Rails, но ничего не меняется:

Rails.application.config.action_dispatch.default_headers.merge!({'Content-Security-Policy' => "upgrade-insecure-requests; base-uri 'self'; object-src 'none'; script-src https://mydomain.com/logs/ https://mydomain.com/sidekiq/ https://mydomain.com/mini-profiler-resources/ https://mydomain.com/assets/ https://mydomain.com/brotli_asset/ https://mydomain.com/extra-locales/ https://mydomain.com/highlight-js/ https://mydomain.com/javascripts/ https://mydomain.com/plugins/ https://mydomain.com/theme-javascripts/ https://mydomain.com/svg-sprite/; worker-src 'self' https://mydomain.com/assets/ https://mydomain.com/brotli_asset/ https://mydomain.com/javascripts/ https://mydomain.com/plugins/; frame-ancestors 'self'; manifest-src 'self'; img-src data: https://mydomain.com https://imgur.com"})

Я удалил этот мета-тег, пересобрал, и проблема решилась :frowning: