ein Anfänger in Cookies zu sein, CSRF und Django (1.4 verwenden), von dem, was ich ausmachen kann dies ist, wie es funktioniert, mir bitte korrigieren, wo ich schief gehen ...Funktioniert Djangos CSRF-Schutz?
Nachfolgend wo django.middleware gilt. csrf.CsrfViewMiddleware ist im Tupel MIDDLEWARE_CLASSES enthalten.
Wenn ein POST-Formular das csrf_token
-Tag enthält und die betreffende Ansicht RequestContext
an die Vorlage übergibt, bedeutet das Anfordern der Seite, dass Django ein ausgeblendetes Formularfeld enthält, das eine alphanumerische Zeichenfolge enthält. Django gibt auch einen Cookie mit dem Namen csrftoken
an den Browser zurück und setzt den Wert auf die gleiche alphanumerische Zeichenfolge.
Beim Empfang der Formularübergabe prüft Django, ob der alphanumerische Zeichenfolgenwert aus dem ausgeblendeten Formularfeld übereinstimmt und der csrftoken-Cookie vom Browser empfangen wurde. Wenn sie nicht übereinstimmen, wird eine Antwort 403 ausgegeben.
Ein CSRF-Angriff kann in Form einer bösartigen Website mit einem Iframe auftreten. Der Iframe enthält ein POST-Formular und etwas JavaScript. Das Attribut action
des Formulars verweist auf meine Django-Site. Das Formular wurde entwickelt, um etwas Unerfreuliches an meiner Site zu machen, und die JS übermittelt das Formular, wenn der Iframe geladen wird.
Der Browser enthält das csrftoken
Cookie in der Kopfzeile der Formularübergabe. Das Formular enthält jedoch nicht das ausgeblendete Feld mit der übereinstimmenden alphanumerischen Zeichenfolge, sodass 403 zurückgegeben wird und der Angriff fehlschlägt. Wenn der Iframe JS versuchte, auf das Cookie zuzugreifen, um das korrekte Hiddden-Formularfeld zu erstellen, würde der Browser dies verhindern.
Ist das korrekt?
Ich sehe nichts falsch. Vielleicht andere, aber im Allgemeinen hast du es verstanden. – Zashas