---
title: "Skydd mot klickjacking"
version: 6.1
locale: sv
source: https://docs.djangoproject.com/sv/6.1/ref/clickjacking/
canonical: https://djangodocs.dev/sv/6.1/ref/clickjacking/
---
# Skydd mot klickjacking

The clickjacking middleware and decorators provide easy-to-use protection
against [clickjacking](https://en.wikipedia.org/wiki/Clickjacking). This type of attack occurs when a malicious site
tricks a user into clicking on a concealed element of another site which they
have loaded in a hidden frame or iframe.

## Ett exempel på clickjacking

Anta att en nätbutik har en sida där en inloggad användare kan klicka på ”Köp nu” för att köpa en artikel. En användare har valt att vara inloggad i butiken hela tiden för enkelhetens skull. En angripare kan skapa en knapp ”Jag gillar ponnyer” på en av sina egna sidor och ladda butikens sida i en transparent iframe så att knappen ”Köp nu” syns osynligt över knappen ”Jag gillar ponnyer”. Om användaren besöker angriparens webbplats kommer ett klick på ”Jag gillar ponnyer” att orsaka ett oavsiktligt klick på knappen ”Köp nu” och ett okänt köp av varan.

## Förhindra clickjacking

Moderna webbläsare respekterar HTTP-huvudet [X-Frame-Options](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options) som anger om en resurs får laddas i en ram eller iframe eller inte. Om svaret innehåller rubriken med värdet `SAMEORIGIN` kommer webbläsaren endast att ladda resursen i en ram om begäran kommer från samma webbplats. Om rubriken är inställd på `DENY` blockerar webbläsaren resursen från att laddas i en ram oavsett vilken webbplats som gjorde begäran.

Django tillhandahåller några sätt att inkludera denna rubrik i svar från din webbplats:

1. Ett middleware som anger rubriken i alla svar.
2. En uppsättning vydekoratorer som kan användas för att åsidosätta mellanvaran eller för att bara ställa in rubriken för vissa vyer.

HTTP-rubriken `X-Frame-Options` kommer endast att ställas in av middleware- eller vydekoratörerna om den inte redan finns i svaret.

## Så här använder du den

### Ställa in `X-Frame-Options` för alla svar

För att ställa in samma värde för `X-Frame-Options` för alla svar på din webbplats, sätt `'django.middleware.clickjacking.XFrameOptionsMiddleware'` till [`MIDDLEWARE`](/sv/6.1/ref/settings/#std-setting-MIDDLEWARE):

```
MIDDLEWARE = [
    ...,
    "django.middleware.clickjacking.XFrameOptionsMiddleware",
    ...,
]
```

Denna mellanvara aktiveras i inställningsfilen som genereras av [`startproject`](/sv/6.1/ref/django-admin/#django-admin-startproject).

Som standard kommer mellanvaran att sätta `X-Frame-Options`-huvudet till `DENY` för varje utgående `HttpResponse`. Om du vill ha något annat värde för detta huvud istället, ange inställningen [`X_FRAME_OPTIONS`](/sv/6.1/ref/settings/#std-setting-X_FRAME_OPTIONS):

```
X_FRAME_OPTIONS = "SAMEORIGIN"
```

När du använder mellanvaran kan det finnas vissa vyer där du **inte** vill att `X-Frame-Options`-huvudet ska ställas in. För dessa fall kan du använda en vydekorator som talar om för mellanvaran att inte ställa in rubriken:

```
from django.http import HttpResponse
from django.views.decorators.clickjacking import xframe_options_exempt

@xframe_options_exempt
def ok_to_load_in_a_frame(request):
    return HttpResponse("This page is safe to load in a frame on any site.")
```

> **Note**
>
> Om du vill skicka in ett formulär eller komma åt en sessionscookie inom en ram eller iframe kan du behöva ändra inställningarna [`CSRF_COOKIE_SAMESITE`](/sv/6.1/ref/settings/#std-setting-CSRF_COOKIE_SAMESITE) eller [`SESSION_COOKIE_SAMESITE`](/sv/6.1/ref/settings/#std-setting-SESSION_COOKIE_SAMESITE).

### Ställa in `X-Frame-Options` per vy

För att ställa in rubriken `X-Frame-Options` per vy tillhandahåller Django dessa dekoratorer:

```
from django.http import HttpResponse
from django.views.decorators.clickjacking import xframe_options_deny
from django.views.decorators.clickjacking import xframe_options_sameorigin

@xframe_options_deny
def view_one(request):
    return HttpResponse("I won't display in any frame!")

@xframe_options_sameorigin
def view_two(request):
    return HttpResponse("Display in a frame if it's from the same origin as me.")
```

Observera att du kan använda dekoratorerna tillsammans med middleware. Användning av en dekorator åsidosätter middleware.

## Begränsningar

Rubriken `X-Frame-Options` skyddar endast mot clickjacking i [moderna webbläsare](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options#browser_compatibility).
