0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Day17 — CSRFとは?攻撃の仕組みとLaravelがどう守っているか

0
Last updated at Posted at 2025-12-16

はじめに

Day16 では、

✅ JWT(Bearer Token)認証の実装
✅ Authorization ヘッダーでの API 保護

まで到達しました。

ここで多くの人が疑問に思います。

❓「JWT なのに CSRF 対策って必要なの?」

今日はこの疑問を 完全に解消 します。

今日のゴール

・CSRF 攻撃の仕組みを図で説明できる

・なぜ Cookie 認証で問題になるのか理解する

・なぜ JWT(API) では不要と言われるのか分かる

・Laravel の CSRF 防御を説明できる

CSRF とは何か?

CSRF = Cross-Site Request Forgery

日本語にすると、

「ユーザーが意図しないリクエストを勝手に送らせる攻撃」

CSRF 攻撃の基本構造

① ユーザーがログイン中
② 攻撃者サイトにアクセス
③ 自動でリクエスト送信
④ サーバが本人と誤認

イメージ図(文章版)

[ユーザー]
  ↓ ログイン済み(Cookieあり)
[銀行サイト]

[攻撃サイト]
  ↓ 勝手にPOST
[銀行サイト] ← Cookie自動送信 😱

なぜ Cookie 認証は危険?

ブラウザは 自動で Cookie を送信 します。

POST /transfer
Cookie: session=xxxxx

👉 ユーザーの操作かどうか区別できない

CSRF 対策の基本思想

「そのリクエストは本当に正規画面から来ましたか?」

これを確認するために
👉 CSRF トークン を使います。

Laravel の CSRF 対策

Laravel は デフォルトで CSRF を防御 しています。

① CSRF トークン発行

<input type="hidden" name="_token" value="xxxxx">

② リクエスト時に検証

VerifyCsrfToken

・トークンが一致しない
→ 419 エラー

JWT 認証なのに CSRF は必要?

結論から言います。

JWT(Bearer Token)認証の API では基本不要

理由はこれ。

Authorization ヘッダーは自動送信されない

Authorization: Bearer xxx

・JavaScript が明示的に設定

・攻撃サイトから勝手に送れない

👉 CSRF 成立しない

じゃあ JWT + Cookie は?

もし JWT を Cookie に保存 すると…

⚠️ CSRF 対象になる

この場合は
👉 CSRF トークンが必要

方式別まとめ

認証方式 CSRF対策
Cookieセッション 必須
JWT(Authorization) 不要
JWT(Cookie保存) 必須

Laravel API で CSRF を無効化する理由

API では通常、

・セッションを使わない

・Authorization ヘッダー使用

そのため VerifyCsrfToken を通さない構成が多い。

protected $except = [
    'api/*',
];

ただし注意点

CSRF が不要でも
XSS は防ぐ必要がある

・JWT を盗まれると即アウト

・input のエスケープ

・CSP 設定

今日の重要ポイント

・CSRF は Cookie 自動送信が原因

・JWT(API) は手動送信なので安全

・保存場所によって必要対策が変わる

・Laravel はデフォルトで CSRF 防御済み

今日のまとめ

・CSRF は「なりすましリクエスト攻撃」

・Cookie 認証では必須対策

・Authorization ヘッダーは CSRF 対象外

・JWT × API は設計次第で安全

次回 Day18

次は API を守る最後の砦 です。

Day18 — APIのRate Limit(アクセス制限)を実装してみる

「叩き放題 API」を卒業します。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?