Django, CSP: Как активировать Nonce в скриптах для страниц администратора

На моей странице скрипты выполняются только тогда, когда включен тег nonce (из-за настроек CSP).

Почему на страницах администратора не работают скрипты.

Поэтому сейчас я перезаписываю все шаблоны администратора, например, из:

<script src="{% static 'admin/js/nav_sidebar.js' %}" defer></script>

to

<script src="{% static 'admin/js/nav_sidebar.js' %}" nonce="{{request.csp_nonce}}" defer></script>

Есть ли более простой способ сделать это? Деактивировать CSP на страницах администратора или как-то сказать Django добавить Nonce ко всем скриптам?

Спасибо

Ок Я также могу добавить все хэши скриптов в CSP, это тоже работает. Но, может быть, есть и другое решение?

Вот быстрый способ, который я только что придумал и который может вам помочь. Это не исправляет корневую проблему в оригинале, которая заключается в том, что ресурсы не содержат nonce, но вы можете добавить вторую ссылку на ресурс, который включает nonce (предполагается, что все ваши настройки CSP работают). Учитывая приведенный ниже пример с calendar.js, ссылка на него в HTML будет дана дважды. Первая выдаст ошибку CSP, но вторая будет работать. Ваша консоль будет немного беспорядочной, но все ваши вещи с использованием nonce снова будут работать.

  1. В ваш базовый каталог templates добавьте еще один каталог с названием admin
  2. .
  3. Там создайте файл под названием base.html, т.е. templates/admin/base.html. Именно в нем вы будете добавлять дополнительные материалы.

Вот и все.

Дополнительный материал внутри вашего локального :templates/admin/base.html

{% extends "admin/base.html" %}
{% load static %}

{% block extrastyle %}
<script nonce="{{request.csp_nonce}}" src="/static/admin/js/calendar.js"></script>

<!-- whatever else you need with a nonce -->

{% endblock %}
Вернуться на верх