---
title: "Comment utiliser la politique de sécurité de contenu de Django"
version: 6.0
locale: fr
source: https://docs.djangoproject.com/fr/6.0/howto/csp/
canonical: https://djangodocs.dev/fr/6.0/howto/csp/
---
# Comment utiliser la politique de sécurité de contenu de Django

## Configuration de base

Pour activer la politique de sécurité de contenu (CSP) dans votre projet Django :

1. Ajoutez l’intergiciel CSP à votre réglage [`MIDDLEWARE`](/fr/6.0/ref/settings/#std-setting-MIDDLEWARE):

   ```
   MIDDLEWARE = [
       # ...
       "django.middleware.csp.ContentSecurityPolicyMiddleware",
       # ...
   ]
   ```
2. Configurez les politiques CSP dans votre fichier `settings.py` en utilisant [`SECURE_CSP`](/fr/6.0/ref/settings/#std-setting-SECURE_CSP) ou [`SECURE_CSP_REPORT_ONLY`](/fr/6.0/ref/settings/#std-setting-SECURE_CSP_REPORT_ONLY) (ou les deux). La [documentation des réglages CSP](/fr/6.0/ref/csp/#csp-settings) fournit plus de détails sur les différences entre les deux :

   ```
   from django.utils.csp import CSP

   # To enforce a CSP policy:
   SECURE_CSP = {
       "default-src": [CSP.SELF],
       # Add more directives to be enforced.
   }

   # Or for report-only mode:
   SECURE_CSP_REPORT_ONLY = {
       "default-src": [CSP.SELF],
       # Add more directives as needed.
       "report-uri": "/path/to/reports-endpoint/",
   }
   ```

## Configuration du nonce

Pour utiliser des nonces dans votre politique CSP, en plus de la configuration de base, vous devez :

1. Inclure la valeur du substituant [`NONCE`](/fr/6.0/ref/csp/#django.utils.csp.CSP.NONCE) dans les réglages CSP. Cela ne s’applique qu’aux directives `script-src` ou `style-src`:

   ```
   from django.utils.csp import CSP

   SECURE_CSP = {
       "default-src": [CSP.SELF],
       # Allow self-hosted scripts and script tags with matching `nonce` attr.
       "script-src": [CSP.SELF, CSP.NONCE],
       # Example of the less secure 'unsafe-inline' option.
       "style-src": [CSP.SELF, CSP.UNSAFE_INLINE],
   }
   ```
2. Ajoutez le processeur de contexte [`csp()`](/fr/6.0/ref/templates/api/#django.template.context_processors.csp) à votre réglage [`TEMPLATES`](/fr/6.0/ref/settings/#std-setting-TEMPLATES). Cela rendra disponible dans les gabarits la valeur nonce générée sous la forme de la variable de contexte `csp_nonce`:

   ```
   TEMPLATES = [
       {
           "BACKEND": "django.template.backends.django.DjangoTemplates",
           "OPTIONS": {
               "context_processors": [
                   # ...
                   "django.template.context_processors.csp",
               ],
           },
       },
   ]
   ```
3. Dans vos gabarits, ajoutez l’attribut `nonce` aux balises `<style>` ou `<script>` concernées, en utilisant la variable de contexte `csp_nonce`:

   ```html+django
   <style nonce="{{ csp_nonce }}">
     /* These inline styles will be allowed. */
   </style>

   <script nonce="{{ csp_nonce }}">
     // This inline JavaScript will be allowed.
   </script>
   ```

> **Mise en cache et réutilisation de nonce**
>
> L’intergiciel [`ContentSecurityPolicyMiddleware`](/fr/6.0/ref/middleware/#django.middleware.csp.ContentSecurityPolicyMiddleware) gère automatiquement la génération d’un nonce unique et l’insertion de l’expression source `nonce-<valeur>` appropriée dans l’en-tête `Content-Security-Policy` (ou `Content-Security-Policy-Report-Only`) lorsque le nonce est utilisé dans un gabarit.
>
> Pour garantir un comportement correct, assurez-vous que le code HTML et l’en-tête soient générés par la même requête et non servis à partir du cache. Consultez la documentation de référence sur [Nonce usage](/fr/6.0/ref/csp/#csp-nonce) pour des détails d’implémentation et des considérations importantes concernant le cache.
