TheNab
30.Июнь.2025 00:54:47
1
Встроенный JS-тег скрипта не загружается из-за CSP, и я не знаю, как это исправить.
В этом сообщении есть информация, которая может помочь: Mitigate XSS Attacks with Content Security Policy
Discourse:
CSP и интеграции со сторонними сервисами
При использовании сторонних сервисов, таких как Google Tag Manager, Google Analytics или рекламные платформы, возможно, потребуется настроить параметры CSP. В большинстве случаев с версией Discourse 3.3.0.beta1 и новее внешние скрипты работают без дополнительной конфигурации благодаря реализации CSP с параметром «strict-dynamic».
Если вы столкнулись с проблемами, вам может потребоваться:
Определить необходимые источники скриптов, отслеживая консоль браузера.
Добавить нужные источники в настройку content_security_policy_script_src.
Для сложных интеграций, таких как рекламные сервисы, загружающие внешние ресурсы, возможно, потребуется включить междоменную обработку (пример PR из discourse-adplugin , реализующий это).
Рекомендуемые практики
Начните с режима CSP Report-Only, чтобы выявить потенциальные проблемы.
Постепенно ужесточайте настройки CSP по мере устранения легитимных нарушений.
Регулярно проверяйте и при необходимости корректируйте настройки CSP.
Будьте осторожны при добавлении разрешающих директив, таких как 'unsafe-eval' или 'wasm-unsafe-eval'.
Следите за обновлениями экземпляра Discourse, чтобы пользоваться последними улучшениями CSP.
TheNab
30.Июнь.2025 17:14:46
3
Я прочитал это и другие материалы, но не могу понять, как именно добавить исключение в content_security_policy_script_src
Замечаете ли вы ошибку, связанную со скриптом, в консоли браузера? Что-то вроде этого?
Вам нужно добавить предоставленный хеш ('sha256-xxxxx') в настройку “content security policy script src”, которую можно найти в разделе администрирования > все настройки сайта.
TheNab
01.Июль.2025 15:57:04
5
Ошибка, с которой я сталкивался, содержала nonce-s0m3h4sh в браузере Firefox, тогда как sha256-s0m3h4sh отсутствовал. Но когда я только что проверил в Chrome, там был вариант sha256. Думаю, именно это вызывало у меня большую часть путаницы.