CSRFトークンはサーバー側で生成されるべきであると、CSRF対策メカニズムに関するほとんどすべての文書に記載されています。しかし、私はそれが必要かどうか疑問に思います。サーバ側でanti-XSRF/CSRFトークンを生成する必要はありますか?
私はこれらの手順で抗CSRFを実装する:
なし、サーバー側で生成されたCSRFトークンはありません。
ブラウザ側では、すべてのAJAXまたはフォーム提出時に、JavaScriptがトークンとしてランダムな文字列を生成します。このトークンは実際のAJAXまたはフォーム提出が起こる前にクッキーcsrfに書き込まれます。トークンはパラメータ_csrfに追加されます。サーバ側で
- は、各要求は CSRFクッキーと _csrf提出引数を持っていることになっています。これらの2つの値が比較されます。それが違う場合は、CSRFの攻撃であることを意味します。
サーバー側でCSRFトークンを発行する必要はありません。チェックするだけです。トークンはブラウザ側で完全に生成されます。もちろん、これは反CSRFのためのものです。ユーザーIDを検証するためにサーバー側で認証プロセスが必要です。
これはCSRFの有効な解決策と聞こえますが、このアプローチに関するドキュメントがない理由はわかりません。
このanti-CSRFメカニズムには何らかの障害がありますか?