2012-11-21 8 views
11

Also versuche ich zu verstehen, was ich hier tun soll ... Ich mache einen POST-Anruf zu meinem Django-Server von iOS und ich bekomme immer den 403 Fehler (ungültiges CSRF-Token). Ich denke darüber nach, eine Funktion zu implementieren, die mir das Token zurückgibt (Sie müssen angemeldet sein, um auf diese Funktion zugreifen zu können) und dann das Token zu meinem POST-Aufruf hinzufügen.CSRF Token in Django und iOS

Jetzt ... verstehe ich nicht, was ist der Sinn, das zu tun? Wenn ich TastyPie benutze und der erforderliche Login ist APIKey ... sollte ich nur den csrf-Check ausnehmen?

Um sicherzustellen, dass ich die Dinge richtig verstehe ... wird die CSRF pro Benutzersitzung generiert? Daher, wenn ich keine Cookies verwende, ist CSRF nicht notwendig?

Wie verwenden Benutzer normalerweise ihre Django Server mit einem iOS und machen solche POST-Anrufe?

Danke!

Antwort

2

Sie haben recht, CSRF macht in diesem Fall wenig Sinn, da es den Zweck hat, Benutzer vor Datenmanipulationen in einem Browser zu schützen.

Ich glaube, dass Tastypie CSRF in seinen Ansichten standardmäßig deaktiviert.

11

Sie haben recht: Wenn Sie keine Cookies zum Verwalten Ihrer Sitzungen verwenden, benötigen Sie keinen CSRF-Schutz. CSRF funktioniert, weil Sitzungscookies automatisch an die Anfrage angehängt werden; Zugangstoken sind nicht.

Ich persönlich fand this article sehr nützlich. Es ist definitiv lesenswert und würde wahrscheinlich viele Ihrer Fragen beantworten.

Wie für Tastypie: es ermöglicht SessionAuthentication. Wenn Sie die Sitzungsauthentifizierung in tastypie zulassen, schlage ich vor, dass Sie nach Möglichkeiten suchen, Ihre Benutzer vor CSRF zu schützen. Für andere Authentifizierungsschemata erscheint dies nicht notwendig. Soweit ich weiß, hat Dmitry Recht, dass CSRF standardmäßig deaktiviert wird, was bedeutet, dass es merkwürdig ist, dass Sie den 403-Fehler erhalten. Vielleicht passiert da noch etwas anderes. Versuchen Sie, die Ansicht in @csrf_exempt einzufügen.

Wie für CSRF-Token werden sie auch als sitzungsunabhängige Nonces bezeichnet. Sie sollen dauerhaft sein, aber Sie wissen wahrscheinlich, dass das für Cookies unmöglich ist. Auf jeden Fall bedeutet dies, dass CSRF-Cookies durch Sitzungen bestehen bleiben.