Cosaint clickjackingLink to this heading

The clickjacking middleware and decorators provide easy-to-use protection against 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.

Sampla de clickjackingLink to this heading

Suppose an online store has a page where a logged-in user can click "Buy Now" to purchase an item. A user has chosen to stay logged into the store all the time for convenience. An attacker site might create an "I Like Ponies" button on one of their own pages, and load the store's page in a transparent iframe such that the "Buy Now" button is invisibly overlaid on the "I Like Ponies" button. If the user visits the attacker's site, clicking "I Like Ponies" will cause an inadvertent click on the "Buy Now" button and an unknowing purchase of the item.

Clickjacking a choscLink to this heading

Tugann brabhsálaí nua-aimseartha onóir ar cheanntásc HTTP X-Frame-Options a thugann le fios an bhfuil cead ag acmhainn luchtú laistigh de fhráma nó iframe nó nach bhfuil. Má tá an ceannteideal sa fhreagra le luach SAMEORIGIN ansin ní luchtálfaidh an brabhsálaí an acmhainn i bhfráma ach amháin má tháinig an t-iarratas ón suíomh céanna. Má tá an ceannteideal socraithe go DENY` ansin cuirfidh an brabhsálaí bac ar an acmhainn ó luchtú i bhfráma is cuma cén suíomh a rinne an iarraidh.

Soláthraíonn Django cúpla bealach chun an ceannteideal seo a áireamh i bhfreagraí ó do shuíomh:

  1. Middleware a shocraíonn an ceanntásc i ngach freagra.

  2. Sraith maisitheoirí radhairc is féidir a úsáid chun an lár-earraí a shárú nó chun an ceanntásc a shocrú ach le haghaidh tuairimí áirithe.

Ní shocróidh an ceannteideal HTTP X-Frame-Options ach ag na maisitheoirí meán-earraí nó amharc mura bhfuil sé i láthair sa fhreagra cheana féin.

Conas é a úsáidLink to this heading

Socrú Roghanna X-Frame do gach freagraLink to this heading

Chun an luach céanna X-Frame-Options a shocrú do gach freagra ar do shuíomh, cuir ``django.middleware.clickjacking.xframeOptionsMiddleware'` chuig:setting: MIDDLEWARE:

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

Tá an láithreán gréasáin seo cumasaithe sa chomhad socruithe a ghineann: djadmin: startproject.

De réir réamhshocraithe, socraíonn an middleware an ceannteideal X-Frame-Options go DENY` do gach HttpResponse` atá ag imeacht. Más mian leat aon luach eile don cheanntásc seo ina ionad sin, socraigh an socrú: setting: X_FRAME_OPTIONS:

Code
X_FRAME_OPTIONS = "SAMEORIGIN"

Agus an middleware á úsáid agat d'fhéadfadh go mbeadh roinnt tuairimí ann nuair nach dteastaíonn uait** an tacar ceanntásc X-Frame-Options ag teastáil uait. Maidir leis na cásanna sin, is féidir leat maisitheoir amharc a úsáid a insíonn don middleware gan an ceannteideal a shocrú:

Code
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.")

Socrú Roghanna Fráma X- in aghaidh an amharcLink to this heading

Chun an ceanntásc ``X-Frame-Options` a shocrú ar bhonn in aghaidh an amharc, soláthraíonn Django na maisiúcháin seo:

Code
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.")

Tabhair faoi deara gur féidir leat na maisitheoirí a úsáid i gcomhar leis an middleware. Sáraíonn úsáid maisitheora an mheán-earraí.

TeorainneachaLink to this heading

Ní chosnóidh an ceannteideal X-Frame-Options` ach ar chliceacáil i `brabhsálaí nua-aimsearta'.