セキュリティ
CSRF(Cross-Site Request Forgery)攻撃への対策として適切なものはどれか。
ア.ユーザの入力値を全てHTMLエスケープ処理し、スクリプトが実行されないようにする。
イ.SQLクエリにパラメータバインドを使用し、入力値がSQL文として解釈されないようにする。
ウ.フォームにサーバが生成したランダムなトークン(CSRFトークン)を埋め込み、リクエスト時にサーバ側で検証する。正解
エ.パスワードを複数回ハッシュ化し、データベースに漏洩した際にも元のパスワードを解析されにくくする。
解説
CSRF攻撃は「他人のフリをして手紙を送る詐欺」のようなもの。ログイン中のユーザに罠リンクをクリックさせ、本人が意図しないリクエストを送らせます。CSRFトークンは「秘密の合言葉」で、本物のフォームにしか載っていないため、罠リンクからは合言葉がわからず防げます。
なぜ ウ が正解か
CSRF攻撃は認証済みユーザのブラウザを利用して、ユーザの意図しないリクエストを送信させる攻撃です。対策:サーバがランダムなトークン(CSRFトークン)を生成してフォームに埋め込み、リクエスト受信時にトークンを検証します。攻撃者のサイトはトークン値を知ることができないため、正規のリクエストと偽造リクエストを区別できます。ウが正解です。
出典: AI生成問題(学習用)