Всем привет,
Я действительно не понимаю CSP, поэтому мне не удалось составить правильную конфигурацию CSP для моего экземпляра etherpad. Может ли кто-нибудь здесь дать мне пример того, что должно быть, чтобы Etherpad работал, но повышал его безопасность?
Я думаю, что добавление таких примеров могло бы улучшить документацию.
Большое спасибо.
Обратите внимание на Video.etherpad.com, результаты
Простой npm install ep_helmet
или установка ep_helmet
через пользовательский интерфейс установки плагина даст вам рейтинг B в Observatory. https://observatory.mozilla.org/analyze/video.etherpad.com
Объем проблемы заключался в том, «какие заголовки CSP», но я пошел немного по касательной и решил охватить гораздо больше эксплойтов, связанных с заголовками, доступных злоумышленникам. Это дает администратору решение «в один клик» для повышения безопасности.
Это еще не «решает» вопрос о правильных заголовках CSP. CSP вообще сложно реализовать в Etherpad из-за того, что там ТАК МНОГО встроенного JS. Так чертовски много. И, кстати, это динамично, поэтому мне нужно использовать подход nonce, а это значит, что нужно коснуться большого количества файлов. Я даже не уверен, что это возможно, но я постараюсь потратить на это еще несколько часов и посмотреть, к чему я вернусь. Это стоит усилий, даже если оно просто подтверждает, что нам нужно переместить javascript из файлов html. Imho unsafe-eval и unsafe-inline - два самых больших вектора, на которые стоит обратить внимание .. Может быть, завтра ..
Хорошо, круто, теперь готовится запрос на слияние для CSP, и я собираюсь опубликовать обновленный шлем.
Жду @muxator для обзора.
Мое беспокойство по поводу моего исправления, кстати, заключается в том, что плагины часто используют встроенные js, поэтому, если вы включите строгую политику csp, это будет означать, что некоторые из них не будут работать
Перепрошил сегодня. Этот пиар настолько запутан, что я не хочу сам сливать его.
PR просто обрабатывает одноразовые номера, это не очень хорошо для исправления проблем с inlineJS, но для большинства npm install ep_helmet
спасает положение :)
Эта проблема была автоматически помечена как устаревшая, поскольку в последнее время не было активности. Он будет закрыт, если больше не будет активности. Спасибо за ваш вклад.