2013-04-24 51 views
16

私たちは、ASP.NET MVCサーバーアプリケーションへの投稿を行う目的で、iOSモバイルアプリをobjective-cで作成しています。 iPhoneでは、HTTPスタック(およびCookieなど)はSafariと共有されているようです。これは私たちにXSRF攻撃を開放しているので、私が間違っていない限り、偽造防止トークンでPOSTを保護し、コントローラのメソッドをValidateAntiForgeryTokenAttributeで保護する必要があります。AntiForgery.GetTokens:oldCookieTokenパラメータの目的は何ですか?

私は、偽造防止トークンが生成され、検証される仕組みを正しく理解していないと言って、この質問に同意します...特に、この文脈で使用される用語「ノンス」は幾分神秘的です。

クライアントにHTMLを配信していないため、標準@Html.AntiForgeryToken()を使用できないため、AntiForgery.GetTokensを使用して、クライアントにトークンを取得して配布する必要があります。これは不思議な最初のパラメータ:oldCookieTokenを持っています。現時点では、私はちょうどそれをnullに設定して、すべてうまくいくようです。誰も私に教えてください...古いトークンをトークン生成アルゴリズムに供給することは何ですか? iOSアプリに発行されたトークンが1つだけで、複数の投稿に対して再利用された場合、これは問題になりますか?

答えて

17

AntiForgery.GetTokensは、検証の目的で古いCookieトークンを再利用しようとします。したがって、再利用したいバリデーショントークンをすでに持っている場合は、新しいバリデーショントークンを生成する代わりに、それを使用しようとします。古いトークンが無効な場合は、新しいトークンを生成して代わりに使用します。

したがって、nullからoldCookieTokenを渡すことは有効です。 GetTokensは、常に新しいクッキートークンを生成するように指示します。

+0

まあ私はこれが有用だとわかりました。なぜ答えとしてマークされていないのかわかりません。しかし、ありがとう。 –

+0

@PaulDeen:今すぐ:-) – spender

+3

注:有効なoldCookieTokenを渡すと、newCookieTokenは常に空になり、oldCookieTokenと同じ値ではありません。 – Alex

関連する問題