2016-07-26 28 views
0

Ich frage mich, ob CSRF-Tokens für Django automatisch für sowohl authentifizierte Benutzer und nicht authentifizierte Benutzer generiert werden? Ich bin neugierig, weil ich eine API für die Veröffentlichung von Formulardaten erstellen möchte, damit alle Benutzer - authentifizierte oder nicht authentifizierte Benutzer - einen Post-Aufruf an den API-Endpunkt vornehmen können. Aber ich frage mich, ob ich den CSRF-Token für jeden Benutzer an den Header "anhängen" muss? (Dies impliziert, dass auch nicht authentifizierte Benutzer über ein CSRF-Token verfügen)Django - CSRF Tokens für authentifizierte und nicht authentifizierte Benutzer?

Antwort

0

Sowohl authentifizierte als auch nicht authentifizierte Benutzer benötigen ein gültiges CSRF-Token, wenn sie den Standardauthentifizierungsmechanismus von Django verwenden. Das Token wird gedreht, wenn sich ein Benutzer anmeldet.

Ob Sie ein Token benötigen, hängt nicht so sehr davon ab, ob der Benutzer authentifiziert ist, sondern hängt vom Authentifizierungsmechanismus ab. Wenn die Authentifizierung Sitzungen/Cookies verwendet, um den Benutzer zu authentifizieren, kann ein Angreifer die Sitzungsinformationen verwenden, die implizit mit jeder Anfrage gesendet werden, um eine Anfrage zu fälschen und eine Aktion auszuführen, zu der das Opfer berechtigt ist. Auf der anderen Seite, wenn Sie z.B. Bei der Token-Authentifizierung muss das Token bei jeder Anfrage explizit gesendet werden, und ein Angreifer kann das Token nicht kennen oder eine Anfrage fälschen, die das Token verwendet.

+0

Danke! Ich bin immer noch verwirrt, warum ein csrf-Token benötigt wird, wenn eine Person nicht eingeloggt ist (Cookies sind nicht vorhanden). Sind die meisten Operationen nicht "sicher", wenn eine Person nicht eingeloggt ist? – BudaeJjigae