0

アプリケーションに CSRF 防止メカニズムを追加しています。私は多くの投稿に目を通しましたが、私のアプローチにはまだ不確実性があります. 同期トークンの実装を使用すると同時に、二重送信、戻るボタン、および更新を防止するために使用します。そのため、リクエストごとに新しいトークンが必要になります。現在、私のアプリには、通常のフォーム送信、URL GET、および AJAX リクエストがあります。実際には新しいウィンドウのポップアップがいくつかありますが、それらの機能を削除/書き換えようとしています。ここに私がやろうとしていることと、いくつかの不確実性があります。

いくつかの予備的な仮定を次に示します。

  1. 通常の状況では、2 つの関数が 1 人のユーザーから同時にサーバーに要求を送信することはありません
  2. すべての XSS を防止
  3. JavaScript で Cookie にアクセスできません
  4. HTTPS の使用

私の流れと疑問:

  1. トークンが生成されてセッションに保存され、生成された HTML または JSON データと共に渡されます。ヘッダーを介して送信される値は、HTML または JSON に挿入するのと同じくらい安全ですか?
  2. すべてのリクエストは、セッションに保存されている値と照合するためにこのトークンを運びます。この値をヘッダーに渡すことは問題になりますか?
  3. プログラマーの作業を最小限に抑えるために、フォームを送信して AJAX 呼び出しを行うための統一された JavaScript 関数を提供して、リクエストに透過的にトークンを追加できるようにしたいと考えています。したがって、すべての JavaScript プログラムから確実にアクセスできる JavaScript 変数にトークンを入れる予定です。これを行うリスクはありますか?

私のアプローチには「自己完結型」の問題がありますか?

ありがとう

4

1 に答える 1