2

csrf トークンを Cookie に保存するのは良い方法ですか、それともフォームで隠しフィールドを使用する方が良いですか? また、キャプチャが行っているように、ユーザーリクエストごとに csrf トークンを再生成するのは良いことですか?

ありがとう

4

3 に答える 3

0

CSRF cookie は確かに攻撃に対してオープンですが、セッション値はリクエストの本文またはヘッダーに保存されている送信されたトークン値に対して常にチェックされるため、実装は安全です。OWASP Web サイトで概説されている二重送信 ( http のみの Cookie と投稿データ) またはトークン シンクロナイザー (セッションと投稿データ) のパターンは適切な方法であり、どちらも Cookie を使用します。

前述のように、ダブル サブミットはストレージをクライアントに移動するため、ステートレスと見なされますが、いずれにせよ比較のための 2 つのトークンがあり、そのうちの 1 つは攻撃者には常に不明のままです。

于 2015-11-01T23:26:44.043 に答える
0

フォームに含めることをお勧めします。CSRF トークンの背後にある考え方は、それが受動的に渡されないということです (たとえば、悪意のあるユーザーがブラウザを騙して何か厄介な URL にアクセスさせることができる場合)。Cookie は受動的に渡されます。

于 2013-10-04T01:57:26.033 に答える
0

この質問に対する最良の説明は、OWASP Web サイトのOWASP CSRF 防止チート シートページにあります。

まず、 CSRF トークンにCookieを使用してもあまり役に立ちません。すべての Cookie が、秘密の Cookie も含めてすべてのリクエストで送信されるためです。エンドユーザーがだまされてリクエストを送信したかどうかに関係なく、すべての認証トークンが送信されます。

第二に、アプリケーションは、「CSRFToken」などの共通名を持つフォームに非表示の入力パラメーターを含めることができます。このトークンの値は、攻撃者が推測できないようにランダムに生成する必要があります。

さらに、Challenge-Response は CSRF のもう 1 つの防御オプションです。次の方法で実装できます。

  1. キャプチャ
  2. 再認証(パスワード)
  3. ワンタイムトークン
于 2015-04-19T03:53:19.247 に答える