mcpField
L
laravel:request-forgery-protection

laravel:request-forgery-protection

github.com/jpcaparasセキュリティ15737 回インストール17 週間前に更新
リポジトリ

laravel:request-forgery-protection について

laravel:request-forgery-protectionは、Laravelの状態変更ルートをクロスサイトリクエストフォージェリから守るセキュリティスキルです。Laravel 13のオリジン対応ミドルウェア、トークン検証、Webhookの除外、テスト方法を扱います。

主な機能

  1. 01Laravel 13 PreventRequestForgeryの利用指針
  2. 02トークンとオリジンによる検証
  3. 03範囲を限定したWebhook除外と署名検証
  4. 04CSRFテストの推奨事項

活用シーン

  1. 01Laravel 13の偽造防止ミドルウェアへの更新
  2. 02状態変更ルートの保護
  3. 03サードパーティWebhookの安全な除外
  4. 04CSRFトークンの欠落や無効をテスト

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/jpcaparas/superpowers-laravel --skill laravel:request-forgery-protection

インストール後、Claude Code で/laravel:request-forgery-protectionを入力して読み込まれたか確認します。

詳細

リクエスト偽造対策

クロスサイトリクエストフォージェリから状態変更ルートを保護します。Laravel 13 ではこれを PreventRequestForgery として正式に導入し、トークンベースの CSRF に加えて、オリジンを考慮した検証(Sec-Fetch-Site)を追加しています。

コマンド

# Blade forms still emit tokens
<form method="POST" action="/profile">
    @csrf
    ...
</form>

# Laravel 13+: reference the new middleware class
use Illuminate\Foundation\Http\Middleware\PreventRequestForgery;   // was: VerifyCsrfToken

->withoutMiddleware([PreventRequestForgery::class]);

# Optional origin-only mode (bootstrap/app.php)
->withMiddleware(function (Middleware $middleware) {
    $middleware->preventRequestForgery(originOnly: true);
})

# Exclude webhook URIs from verification
$middleware->validateCsrfTokens(except: ['stripe/*']);

パターン

  • フォームでは @csrf を使い続けてください。オリジン検証は追加の対策であり、トークンによるフォールバックは古いブラウザーや HTTP に対応します
  • すべてのクライアントが HTTPS 経由の最新ブラウザーである場合に限り、originOnly を有効にしてください
  • サードパーティの Webhook エンドポイントは明示的に除外し、代わりに署名を検証してください
  • 13.x にアップグレードする際は、VerifyCsrfToken の参照を PreventRequestForgery に置き換えてください(旧名は非推奨のエイリアスとして引き続き使用できます)
  • 統合の失敗を「修正」するために、偽造対策を全体で無効にしないでください。URI ごとに除外を設定してください

テスト

  • フィーチャーテストではデフォルトで CSRF がバイパスされます。除外された Webhook ルートとその署名検証について、明示的なテストを追加してください
  • 該当する場合は、トークンがない場合や無効な場合に 419 が返されることをアサートしてください

コメント