2017-10-08 9 views
1

シンクロナイザトークンパターンでは、サーバはランダムトークンを生成します。このトークンは、クライアントによる各フォーム提出によって提出する必要があります。クライアントは、サーバーで作成されたCSRFトークンをどのように知ることができますか?シンクロナイザトークンパターンを使用しているときにCSRFトークンをクライアントに送信する方法は?

答えて

2

GETリクエストでは、結果のページにトークンを置くことができます。フォームが送信されたときに自動的に送信される隠しフィールドとして、またはメタヘッダー(<meta name="csrftoken" content="...">)のような形式でフォームに書かれているか、他の方法でもかなり書かれています。

単純な古いフォーム投稿の場合は、おそらく隠しフィールドが最も簡単です。 javascriptが関与している場合(ajaxリクエスト)、JavaScriptヘッダーのように、ページ内の1つの中心的な場所で、javascriptを利用できるようになる方がよいでしょう。

フォームでも、新しいページのダウンロードごとに異なるトークンを生成できますが、トークンを変更するajax重いアプリケーションの場合、問題が発生します。ほとんどのアプリケーションでは、ログインセッションごとに1トークンが問題ありません。

+0

私の元々の質問は、サーバーが生成されたトークンをどのように送信するのかです。 –

+0

@ KasunDharmadasa私はちょうどそれに答えたと思う。サーバーは、各フォーム、または単一の隠しフィールド、JS値、メタヘッダーのように、クライアントの生成されたページにトークンを入れます。これは、ページ要求に対する応答の一部になります。 –

+0

サーバが静的な 'index.html'ファイルのみを提供している場合はどうなりますか? – Rachmaninoff

関連する問題