---
title: "Hur man använder Djangos Content Security Policy"
version: 6.0
locale: sv
source: https://docs.djangoproject.com/sv/6.0/howto/csp/
canonical: https://djangodocs.dev/sv/6.0/howto/csp/
---
# Hur man använder Djangos Content Security Policy

## Grundläggande konfiguration

Så här aktiverar du Content Security Policy (CSP) i ditt Django-projekt:

1. Lägg till CSP-mellanprogramvaran till din [`MIDDLEWARE`](/sv/6.0/ref/settings/#std-setting-MIDDLEWARE)-inställning:

   ```
   MIDDLEWARE = [
       # ...
       "django.middleware.csp.ContentSecurityPolicyMiddleware",
       # ...
   ]
   ```
2. Konfigurera CSP-policyerna i din `settings.py` med antingen [`SECURE_CSP`](/sv/6.0/ref/settings/#std-setting-SECURE_CSP) eller [`SECURE_CSP_REPORT_ONLY`](/sv/6.0/ref/settings/#std-setting-SECURE_CSP_REPORT_ONLY) (eller båda). [CSP-inställningsdokumentationen](/sv/6.0/ref/csp/#csp-settings) ger mer information om skillnaderna mellan dessa två:

   ```
   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/",
   }
   ```

## Nonce-konfiguration

För att använda nonces i din CSP-policy måste du, förutom den grundläggande konfigurationen, göra följande:

1. Inkludera platshållarvärdet [`NONCE`](/sv/6.0/ref/csp/#django.utils.csp.CSP.NONCE) i CSP-inställningarna. Detta gäller endast direktiven `script-src` eller `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. Lägg till [`csp()`](/sv/6.0/ref/templates/api/#django.template.context_processors.csp)-kontextprocessorn till din [`TEMPLATES`](/sv/6.0/ref/settings/#std-setting-TEMPLATES)-inställning. Detta gör det genererade nonce-värdet tillgängligt i Django-mallarna som kontextvariabeln `csp_nonce`:

   ```
   TEMPLATES = [
       {
           "BACKEND": "django.template.backends.django.DjangoTemplates",
           "OPTIONS": {
               "context_processors": [
                   # ...
                   "django.template.context_processors.csp",
               ],
           },
       },
   ]
   ```
3. I dina mallar lägger du till attributet `nonce` till relevanta inline-taggarna `<style>` eller `<script>` med hjälp av kontextvariabeln `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>
   ```

> **Cachning och återanvändning av nonce**
>
> [`ContentSecurityPolicyMiddleware`](/sv/6.0/ref/middleware/#django.middleware.csp.ContentSecurityPolicyMiddleware) hanterar automatiskt genereringen av en unik nonce och infogar lämpligt `nonce-<value>`-källuttryck i `Content-Security-Policy`\- (eller `Content-Security-Policy-Report-Only`-) rubriken när noncen används i en mall.
>
> För att säkerställa korrekt funktion, se till att både HTML-koden och rubriken genereras inom samma begäran och inte hämtas från cacheminnet. Se referensdokumentationen om [Nonce usage](/sv/6.0/ref/csp/#csp-nonce) för implementeringsdetaljer och viktiga överväganden kring cachning.
