2012-11-21 19 views
11

ここで何をすべきかを理解しようとしています...私はiOSから私のDjangoサーバにPOSTコールをしていますが、403 Error(Invalid CSRF Token)を取得し続けています。私は私にトークンを返す関数を実装することを考えています(あなたはその関数にアクセスするためにログインする必要があります)。そして、私のPOST呼び出しにトークンを追加します。DjangoとiOSのCSRFトークン

今...私はそれが何をしているのか理解できません。 TastyPieを使用し、必要なログインがAPIKeyの場合... csrfチェックを免除すればよいですか?

私は物事を正しく理解するために、ユーザーセッションごとにCSRFが生成されますか?したがって、私がクッキーを使用しないと、CSRFは必要ありませんか?

どのように人々は通常、iOSでDjangoサーバを使用し、そのようなPOSTコールをしますか?

ありがとうございます!

答えて

2

CSRFは、ブラウザのデータ改ざんからユーザーを保護することを目的としているため、この場合はあまり意味がありません。

TastypieはデフォルトでCSRFをビューで無効にすると信じています。

11

あなたのセッションがクッキーを使用してセッションを管理していない場合は、CSRFの保護は必要ありません。 CSRFは、セッションクッキーがリクエストに自動的に添付されるため動作します。アクセストークンはそうではありません。

私が個人的に見つけたthis article非常に便利です。それは間違いなく読む価値があり、おそらくあなたの多くの質問に答えるでしょう。

おしゃれの場合:SessionAuthenticationです。あなたがtastypieでセッション認証を許可している場合は、CSRFに対してユーザーを保護する方法を検討することをお勧めします。他の認証方式では、これは必要ではないようです。私が知る限り、ドミトリーは、デフォルトでCSRFを無効にする方法については正しくありません。つまり、403エラーが発生するのは不思議です。おそらく何か他のことが起こっているでしょう。 @csrf_exemptのビューをラップしてみてください。

CSRFトークンについては、セッション非依存とも呼ばれます。彼らは永続的なものですが、おそらくあなたはそれがクッキーにとって不可能であることを知っています。とにかく、これは、CSRFクッキーがセッションを通じて持続することを意味します。