Применение политики безопасности содержимого к редактору WYSIWYG в Flask - PullRequest
0 голосов
/ 03 апреля 2020

Я использую flask для веб-приложения в стиле блога, и я хочу установить https на каждой странице. Приложение работает так, как задумано, без политики безопасности контента.

Я хочу использовать пакет flask-talisman для управления этим. В их базовых c примерах и в связанных постах я уже нашел, как разрешить bootstrap работать, позволяя сценариям / стилям из указанных c источников следующим образом

SELF = "'self'"
content_security_policy={
    'default-src': [
        SELF,
        "https://code.jquery.com", #jquery
        "https://cdn.jsdelivr.net", # popper 
        "https://stackpath.bootstrapcdn.com", # bootstrap 
    ],
    'img-src': '*',
    'script-src': [
        SELF,
        "https://code.jquery.com", #jquery
        "https://cdn.jsdelivr.net", # popper 
        "https://stackpath.bootstrapcdn.com", # bootstrap 
    ],
    'style-src': [
        SELF,
        "https://stackpath.bootstrapcdn.com", # bootstrap 
    ]
}

Однако я хочу использовать редактор WYSIWYG, такой как CKEditor , чтобы я мог загружать изображения и получать больше форматированного текста. Вот изображение того, как это выглядит до включения flask-talisman.

image before enabling csp

После того же лога c, как указано выше, чтобы разрешить bootstrap, это будет означать просто добавление дополнительной ссылки "https://cdn.ckeditor.com" к обоим стилям и скриптовые источники.

Однако, если я добавлю это на страницу, редактор не будет работать (не отвечает) и будет выглядеть так:

image after enabling csp

As объяснил на их github, я также использую nonce, чтобы явно разрешить определенные сценарии, такие как генерация самого редактора, используя

<script nonce="{{ csp_nonce() }}"> 

и при регистрации приложения я добавил content_security_policy_nonce_in=['script-src'] в инициализация. Тем не менее, во время рендеринга страницы генерируются другие скрипты, и я понятия не имею, как добавить к ним одноразовые номера.

Может кто-нибудь указать мне правильное направление к решению этой проблемы? Или, может быть, предложить другую стратегию для редактора WYSIWYG в HTTPS? Я также изучаю использование редактора уценок, но думаю, что это вызовет те же проблемы.

РЕДАКТИРОВАТЬ: сейчас я использую ответ здесь , который вызывает https, но делает не применять CSP.

...