🔐 ITパスポート | セキュリティ

CSRFとは?

あなたのブラウザを"踏み台"にして、ログイン済みサービスに勝手にリクエストを送りつける攻撃。正式名称:クロスサイトリクエストフォージェリ。

🎬 こんなシーンを想像
ネットバンキングにログイン中のあなた。別タブで「無料クーポン!」という広告を開いたら、気づかないうちにネットバンキングへ「振込実行」リクエストが送信されてしまった。
…あなたは何もしていないのに、なぜ送信された?
🔺 CSRFの仕組み 正規サービス (ネットバンキング) 被害者のブラウザ (ログイン中) 罠サイト (攻撃者が準備) ① ログイン中 ② 罠ページを開く ③ 本人に見えない 不正リクエスト送信! Cookieが自動付与されるため サーバーは「本人の操作」と誤認する

ポイントは Cookie が自動送信 されること。ブラウザはリクエスト先に関係なく、そのサイトのCookieを自動で付けて送る仕様を悪用する。

🗺️ 攻撃の流れ(4ステップ)
① 被害者が正規サービスにログイン
ネットバンキング・SNS・ECサイトなどにログインし、セッションCookieがブラウザに保存される。
② 攻撃者が罠ページを準備・誘導
「無料クーポン」「面白い動画」などの罠URLにアクセスさせる。罠ページには隠しフォームや自動送信スクリプトが仕込まれている。
③ 被害者が罠ページを開く
ページを開いた瞬間、正規サービスへの「振込・変更・削除」リクエストが被害者のブラウザから自動送信される。
④ サーバーが「本人の操作」と誤認
リクエストには正規のCookieが付いているためサーバーは疑わず実行。被害者は何もしていないのに操作が完了してしまう。
⚠️ ひっかけ注意ポイント
XSS(クロスサイトスクリプティング)と混同しやすい
XSSは悪意あるスクリプトを被害者のブラウザで実行させる攻撃。CSRFは被害者を踏み台にしてサーバーへ不正操作させる攻撃。「Cross Site」という言葉が共通だが目的が違う。
「パスワードを盗む攻撃」ではない
CSRFはパスワードを盗まない。ログイン済みの状態を悪用して「操作を実行させる」攻撃。不正操作が目的。
主な対策はトークン検証
サーバーがページ表示時にワンタイムトークン(CSRFトークン)を発行し、リクエストに含まれるか検証する。罠サイトはこのトークンを知らないので偽リクエストを作れない。
判断のコツ
「ログイン中のユーザーに意図しない操作を実行させる」→ CSRF。「スクリプトを埋め込む」→ XSS。
🧠 覚え方(無理やりゴロ)
「シーサーフ(CSRF)=海の波に乗って勝手に送られる」
ログイン中のCookieが波(リクエスト)に乗って、勝手に正規サーバーへ届く

フォージェリ=偽造
Request Forgery(リクエスト偽造)=本人のふりした偽リクエスト
ITパスポート 詳細解説 / HTML+SVG(文字はすべてテキスト)