# CSRF — ログイン中を悪用して「勝手な操作」をさせる

> レベル: 初級 ／ 対象: 大人
> 出典: Kotowary — https://kotowary.com/learn/units/csrf?level=beginner&audience=adult
**CSRF**（クロスサイトリクエストフォージェリ）は、**ログイン中の人を利用して、本人のふりで勝手な操作をさせる**攻撃です。

## どう起きる？

ブラウザは、あるサイトへのリクエストに、そのサイトの**Cookie（ログイン状態）を自動で付けます**。攻撃者はこれを悪用します。

1. あなたが銀行サイトにログイン中
2. 別の「罠ページ」を開く
3. 罠ページが、こっそり銀行への「送金リクエスト」を送らせる
4. ブラウザは銀行のCookieを自動で付けるので、銀行は**本人の操作だと勘違い**する

::diagram{name="csrf-attack"}

## どう防ぐ？

1. **CSRFトークン** — 正規の画面に「予測できない合言葉」を埋め、送信時に照合する。罠ページはこの合言葉を知らないので弾ける
2. **SameSite Cookie** — 他サイト起点のリクエストにはCookieを付けない設定
3. **重要操作は再確認** — 送金などはパスワード再入力やMFAを挟む

## ⚠️ 気をつける

- **認証と混同** — ログイン（認証）していても防げない。CSRFは別対策が要る
- **GETで状態変更** — 「クリックしただけ」で操作が起きる作りは危険（副作用のある操作はGETにしない）
