Неверное значение параметра «extend content security policy» для компонента темы

Симптомы: после обновления до версии 3.4 весь форум выдавал сообщение «Ой». Чтобы усугубить ситуацию, логи полностью молчали об этом.

В компоненте темы была настройка «Расширить политику безопасности» со значением script-src: 'unsafe-eval' https://redacted.example.com.

Это привело к падению всего форума из-за исключения, выброшенного в диспетчере действий, поскольку в значении присутствовал пробел.

ActionDispatch::ContentSecurityPolicy::InvalidDirectiveError (Неверная директива политики безопасности Content Security script-src: \"'unsafe-eval' https://redacted.example.com\". Значения директив не должны содержать пробелы или точки с запятой. Вместо этого используйте несколько аргументов или другие методы директив.)

О, я забыл самое главное. Безопасный режим не сработал!!

5 лайков

Я изучу это подробнее и свяжусь с вами. Какая версия Discourse была на вашем форуме до обновления до 3.4?

2 лайка

Это было на 3.3.3.

Привет, @michaeld, я применил исправление в актуальную ветку main через FIX: invalid CSP directive sources should allow site to boot with valid CSP directives by tyb-talks · Pull Request #31256 · discourse/discourse · GitHub. Это изменение также доступно в ветках tests-passed и stable.

Изменение в поведении обработки директив CSP возникло из-за перенесённого патча безопасности в Rails — я подробнее рассказываю об этом в PR. :slight_smile: Теперь Discourse будет фильтровать такие значения перед формированием CSP.

Что касается режима Safe, поскольку он отключает только JavaScript-часть, он не помог бы в данном случае, так как эти данные обрабатываются на стороне сервера.

5 лайков

Эта тема была автоматически закрыта через 3 дня после последнего ответа. Новые ответы больше не принимаются.