メインコンテンツへ
セキュリティ

CSRFトークンによる防御の仕組みとして正しいものはどれか。

ア.クッキーのSamesite属性をStrictに設定することでCSRFトークンが自動生成される
イ.サーバはユーザーのIPアドレスを記録し、異なるIPからのリクエストをCSRFと判断する
ウ.サーバが生成したトークンをセッションと照合することで、正規フォームからの送信か確認できる正解
エ.HTTPSを使用することでCSRF攻撃を防ぐトークンが自動的に付与される

解説

CSRFトークンは「偽造防止のシリアルナンバー」。本物のフォームにだけ付いた番号を確認することで、正規の送信か偽サイトからの攻撃かを見分ける。

なぜ ウ が正解か

サーバはセッションに紐付けたランダムなトークンを生成し、フォームの隠しフィールドに埋め込む。フォーム送信時にサーバはセッションのトークンとフォームのトークンを照合する。攻撃者は被害者のトークンを知ることができないため、CSRF攻撃が防げる。

なぜ ア は間違いか

SameSite=StrictはCSRF対策に有効だが、それ自体がCSRFトークンを生成するわけではない。別々の対策。

なぜ イ は間違いか

IPアドレスによる判断はCSRFの防御として不適切。正規ユーザーも攻撃者も同じIPの場合があり、また正規ユーザーのIPが変わることもある。

なぜ エ は間違いか

HTTPSはデータの暗号化と通信相手の認証を行うが、CSRFトークンを自動付与する機能はない。

出典: AI生成問題(学習用)