×
サイバー攻撃について

同じランダム値をCookieとリクエストパラメータまたはヘッダーに入れ、両方が一致するか確認します。

Cookie:
csrf=XYZ123

Header:
X-CSRF-Token: XYZ123

攻撃者サイトはCookieを送信させることはできても、そのCookie値を読み取ってカスタムヘッダーへコピーできない、という性質を利用します。

ただし、単純に値が一致するだけの方式は、サブドメインなどからCookieを設定できる場合に破られる可能性があります。


Double Submit Cookieの値へHMACなどの署名を付け、認証セッションと結び付けます。

OWASPは、単純なDouble Submit Cookieよりも、セッションへ明示的に結び付けたSigned Double Submit Cookieを推奨しています。

概念的には次のような構造です。

token = random + HMAC(server_secret, session_id + random)

サーバーは次を確認します。

  1. Cookieとヘッダーの値が一致する

  2. HMAC署名が正しい

  3. 現在のセッションに結び付いている

独自実装は比較処理、エンコード、鍵管理、トークン固定などのミスが起きやすいため、フレームワーク標準機能を優先します。


6-4. Django方式