jpskill.com
🛠️ 開発・MCP コミュニティ

php-laravel-audit

Laravelフレームワークの認証、CSRF、セッション、モデル、Bladeレンダリングといった特性を静的に分析し、一般的な脆弱性タイプにマッピングすることで、セキュリティリスクを監査するSkill。

📜 元の英語説明(参考)

Laravel 框架特效安全审计工具。针对 Laravel 常见鉴权/CSRF/Session/模型填充/Blade 渲染等框架特性进行白盒静态审计,并将风险映射到你现有通用漏洞类型体系(AUTH/CSRF/LOGIC/XSS/CFG 等)。

🇯🇵 日本人クリエイター向け解説

一言でいうと

Laravelフレームワークの認証、CSRF、セッション、モデル、Bladeレンダリングといった特性を静的に分析し、一般的な脆弱性タイプにマッピングすることで、セキュリティリスクを監査するSkill。

※ jpskill.com 編集部が日本のビジネス現場向けに補足した解説です。Skill本体の挙動とは独立した参考情報です。

⚡ おすすめ: コマンド1行でインストール(60秒)

下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。

🍎 Mac / 🐧 Linux
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o php-laravel-audit.zip https://jpskill.com/download/6008.zip && unzip -o php-laravel-audit.zip && rm php-laravel-audit.zip
🪟 Windows (PowerShell)
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/6008.zip -OutFile "$d\php-laravel-audit.zip"; Expand-Archive "$d\php-laravel-audit.zip" -DestinationPath $d -Force; ri "$d\php-laravel-audit.zip"

完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。

💾 手動でダウンロードしたい(コマンドが難しい人向け)
  1. 1. 下の青いボタンを押して php-laravel-audit.zip をダウンロード
  2. 2. ZIPファイルをダブルクリックで解凍 → php-laravel-audit フォルダができる
  3. 3. そのフォルダを C:\Users\あなたの名前\.claude\skills\(Win)または ~/.claude/skills/(Mac)へ移動
  4. 4. Claude Code を再起動

⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。

🎯 このSkillでできること

下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。

📦 インストール方法 (3ステップ)

  1. 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
  2. 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
  3. 3. 展開してできたフォルダを、ホームフォルダの .claude/skills/ に置く
    • · macOS / Linux: ~/.claude/skills/
    • · Windows: %USERPROFILE%\.claude\skills\

Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。

詳しい使い方ガイドを見る →
最終更新
2026-05-17
取得日時
2026-05-18
同梱ファイル
1

📖 Skill本文(日本語訳)

※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。

[スキル名] php-laravel-audit

PHP Laravel フレームワークセキュリティ監査(php-laravel-audit)

Laravelプロジェクトのソースコードにおける「フレームワーク特有のセキュリティメカニズム」と「よくある落とし穴のパターン」を分析し、以下の点に重点を置きます。

  • 認証とルーティング保護(middleware/auth/Policies/Gates)
  • CSRFとトークン保護(VerifyCsrfToken、exceptリスト、APIとCookie認証の違い)
  • セッションとCookieのセキュリティ(session_regenerate_id、cookie flags、rememberメカニズムのリスクポイント)
  • Eloquentマスアサインメントとrequest-to-model書き込みの欠陥(Model::create/fill/updateと$request->all()チェーン)
  • Bladeテンプレートレンダリングにおける生の出力と式実行のリスク({!! !!}@php、およびエスケープされていない出力)
  • Laravel署名付きURLとルーティング署名検証がクローズドループであるか(Signed middlewareと生成位置)

入力

ユーザー提供:

  • source_path:Laravelプロジェクトのソースコードルートディレクトリ オプション:
  • output_path:出力ディレクトリパス(デフォルト {source_path}_audit

出力ディレクトリ

以下に出力されます。

{output_path}/framework_audit/
  laravel_{timestamp}.md

フレームワーク識別(必須)

このプロジェクトがLaravelであると識別した証拠点を提示する必要があります(根拠のない断言は許可されません)。

  • composer.json の依存関係
  • 典型的なディレクトリ:app/routes/config/
  • コアエントリポイント:public/index.phpbootstrap/app.php

リスクタイプマッピング(必須)

すべての発見について、以下を明記する必要があります。

  • 適用される汎用タイプコード:AUTH / CSRF / LOGIC / XSS / CFG / SESS / FILE など(shared/SEVERITY_RATING.md の利用可能なタイプコードから選択)
  • このLaravelリスクがなぜその汎用タイプコードに分類されるのか(マッピングロジックを1文で説明)

必須監査リスト(必須:各項目をチェックし、結果を出力)

1) 認証と権限保護(AUTH)

以下の証拠を特定し、出力する必要があります。

  • 保護されたルートのエントリポイント:routes/web.php および routes/api.php 内の middleware('auth') / middleware('can') / Route::middleware([{value}])->group({value})
  • 権限ロジック:Gate:: / Policy / authorize / can / ->can({value}) の位置の証拠
  • リスク判断:「ログイン済みだがリソースレベルの帰属検証がない」パターンが存在するか(例:userの存在のみを判断し、ownerを判断しない)
  • ルーティング命名とリソースバインディング:Route Model Binding が存在するが、帰属検証が行われていないか

出力要件:

  • 欠落が発見された場合:「欠落位置 + 迂回される可能性のあるリクエストタイプ(GET/POST/API)+ 修正提案」を提示する必要があります。
  • 発見されなかった場合:「未発見の判断根拠」(例:except/guardが空、機密ルートはすべてミドルウェアがあるなど)も出力する必要があります。

2) CSRFとトークン保護(CSRF)

以下を特定する必要があります。

  • CSRFミドルウェア:VerifyCsrfToken または同等のミドルウェア
  • exceptリスト:どのルートが除外されているか
  • APIとCookie認証の違い:プロジェクトがAPIにCookie/セッションを使用している場合、APIルートが依然としてCSRF保護されているかを確認する必要があります。

出力要件:

  • 「迂回される可能性のある分岐」をカバーする必要があります。例:一部のメソッドのみが検証されない、特定のContent-Typeのみが検証されない、AJAX時のみスキップされるなど。

3) セッションとCookieのセキュリティ(SESS)

以下を特定する必要があります。

  • ログイン後のセッション固定攻撃対策:session_regenerate_id またはLaravelの対応するメカニズムの証拠が存在するか
  • Cookieフラグ:HttpOnly/Secure/SameSite の設定位置(config/session.php またはカスタムミドルウェア)
  • logout:ログアウト時にセッションがクリアされるか

4) Eloquentマスアサインメント(LOGIC)

以下のデータフローチェーンの証拠を特定し、出力する必要があります。

  • リクエスト入力の取得:$request->all()$request->input({value})json_decode({value})
  • モデルへの書き込み点:Model::create({value}) / Model::update({value}) / $model->fill({value}) / ->save()
  • モデルのフィル戦略:$fillable / $guarded の設定位置

判定ルール:

  • $request->all() または同等の入力が create/fill/update に直接渡され、かつモデルに機密フィールドに対するデナイリスト(または$fillableが広すぎる)が欠けている場合、リスクを出力します。

5) Blade生出力(XSS)

以下を特定し、出力する必要があります。

  • 生出力:{!! {value} !!}@php、および「エスケープをスキップする」任意のディレクティブまたはコールバック
  • ユーザー入力元:$requestrequest()、データベースフィールドのバックフィルだがエスケープされていない場合の証拠

判定ルール:

  • 生出力の内容にユーザーが制御可能なフィールドが存在し、かつ e() または同等のエスケープが行われていない場合、リスクを XSS または関連するテンプレートインジェクションリスクにマッピングして出力します(プロジェクトでテンプレート式実行を使用している場合は TPL にマッピング)。

6) 署名付きURLと署名検証のクローズドループ(AUTH または CFG)

以下を特定する必要があります。

  • 署名付きURLの生成:URL::temporarySignedRoute / URL::signedRoute
  • 検証ミドルウェア:middleware('signed') または同等の検証メカニズム

判定ルール:

  • 生成のみで署名検証ミドルウェアがない場合、または検証ロジックが迂回される可能性がある場合、リスクを AUTH または CFG にマッピングして出力します。

観測可能なPoC(必須:フレームワーク特有の観測可能な検証フレームワーク)

以下のいずれか2つのタイプのうち少なくとも1つを提示し、観測点を明確に記述してください。

  • 認証の欠落/権限昇格の迂回:実際のルートとペイロードのターゲット(例:オブジェクトIDの切り替え)を提示
  • CSRFの欠落/迂回:実際のルートと、トークンを携帯する必要がある/ないシナリオを提示し、観測点を説明

PoC出力要件:

  • 実際のルート(routes/*.php の実際にヒットする位置から抽出)を含める必要があります。
  • 実際のフィールド名(例:csrf フィールド、またはフォームアクション)を含める必要があります。

出力完全性チェック(必須)

  • [ ] 出力にLaravel識別証拠点が含まれています。
  • [ ] CSRF/Auth/Session/Mass Assignment/Blade raw/Signed URL の6つの主要な項目すべてに「チェック結果」があります。
  • [ ] すべてのリスクに「マッピングタイプコード + 位置証拠 + 観測可能な検証フレームワーク + 修正提案」があります。
📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開

PHP Laravel 框架安全审计(php-laravel-audit)

分析 Laravel 项目源码中的“框架特效安全机制”和“常见踩坑模式”,重点覆盖:

  • 鉴权与路由保护(middleware/auth/Policies/Gates)
  • CSRF 与 token 保护(VerifyCsrfToken、except 列表、API 与 Cookie 认证差异)
  • Session 与 Cookie 安全(session_regenerate_id、cookie flags、remember 机制的风险点)
  • Eloquent mass assignment 与 request-to-model 写入缺陷(Model::create/fill/update 与 $request->all() 链)
  • Blade 模板渲染中的 raw 输出与表达式执行风险({!! !!}@php 以及未转义输出)
  • Laravel signed URL 与路由签名校验是否闭环(Signed middleware 与生成位置)

输入

用户提供:

  • source_path:Laravel 项目源码根目录 可选:
  • output_path:输出目录路径(默认 {source_path}_audit

输出目录

输出到:

{output_path}/framework_audit/
  laravel_{timestamp}.md

框架识别(必做)

必须给出你识别该项目为 Laravel 的证据点(不允许空口断言):

  • composer.json 依赖
  • 典型目录:app/routes/config/
  • 核心入口:public/index.phpbootstrap/app.php

风险类型映射(必做)

每条发现都必须写明:

  • 适用的通用类型码:AUTH / CSRF / LOGIC / XSS / CFG / SESS / FILE 等(从你的 shared/SEVERITY_RATING.md 可用类型码中选)
  • 这条 Laravel 风险为什么落到该通用类型码(用一句话解释映射逻辑)

必审清单(必做:逐项检查并输出结果)

1) 鉴权与权限保护(AUTH)

必须定位并输出以下证据:

  • 受保护路由进入点:routes/web.phproutes/api.php 中的 middleware('auth') / middleware('can') / Route::middleware([{value}])->group({value})
  • 权限逻辑:Gate:: / Policy / authorize / can / ->can({value}) 的位置证据
  • 风险判断:是否存在“已登录但无资源级归属校验”的模式(例如只判断 user 存在,不判断 owner)
  • 路由命名与资源绑定:是否存在 Route Model Binding 但未做归属校验

输出要求:

  • 若发现缺失:必须给出“缺失位置 + 可能被绕过的请求类型(GET/POST/API)+ 修复建议”
  • 若未发现:也必须输出“未发现的判定依据”(例如 except/guard 为空、敏感路由均有 middleware 等)

2) CSRF 与 token 保护(CSRF)

必须定位:

  • CSRF middleware:VerifyCsrfToken 或等价中间件
  • except 列表:哪些路由被排除
  • API 与 Cookie 认证差异:若项目对 API 使用 Cookie/session,需要确认 API 路由是否仍受 CSRF 保护

输出要求:

  • 必须覆盖“可能绕过分支”:例如仅部分方法不校验、仅某些 Content-Type 不校验、仅在 AJAX 时跳过等

3) Session 与 Cookie 安全(SESS)

必须定位:

  • 登录后会话固定防护:是否存在 session_regenerate_id 或 Laravel 对应机制证据
  • Cookie flags:HttpOnly/Secure/SameSite 的配置位置(config/session.php 或自定义中间件)
  • logout:退出是否清理 session

4) Eloquent mass assignment(LOGIC)

必须定位并输出数据流链证据:

  • request 输入获取:$request->all()$request->input({value})json_decode({value})
  • 写入模型点:Model::create({value}) / Model::update({value}) / $model->fill({value}) / ->save()
  • 模型填充策略:$fillable / $guarded 的配置位置

判定规则:

  • $request->all() 或等价输入直接进入 create/fill/update,且模型缺少针对敏感字段的 denylist(或 $fillable 过宽),则输出风险

5) Blade raw 输出(XSS)

必须定位并输出:

  • raw 输出:{!! {value} !!}@php 以及任何“跳过转义”的指令或回调
  • 用户输入来源:来自 $requestrequest()、数据库字段回填但未转义时的证据

判定规则:

  • 若 raw 输出内容存在用户可控字段,且未做 e() 或等价 escape,则输出风险映射到 XSS 或相关模板注入风险(若你项目用到模板表达式执行则映射到 TPL

6) Signed URLs 与签名校验闭环(AUTH 或 CFG)

必须定位:

  • 签名 URL 生成:URL::temporarySignedRoute / URL::signedRoute
  • 验证中间件:middleware('signed') 或等价校验机制

判定规则:

  • 若仅生成但无签名验证中间件,或验证逻辑可被绕过,输出风险映射到 AUTHCFG

可观测 PoC(必做:框架特效可观测验证框架)

至少给出以下两类其一并写清观察点:

  • 鉴权缺失/越权绕过:给出真实路由与 payload 目标(例如切换对象 id)
  • CSRF 缺失/绕过:给出真实路由与需要携带/不携带的 token 场景,并说明观察点

PoC 输出要求:

  • 必须包含真实路由(从 routes/*.php 真实可命中位置抽取)
  • 必须包含真实字段名(如 csrf 字段、或表单 action)

输出完整性检查(强制)

  • [ ] 输出包含:Laravel 识别证据点
  • [ ] CSRF/Auth/Session/Mass Assignment/Blade raw/Signed URL 六大块均有“检查结果”
  • [ ] 每条风险都有:映射类型码 + 位置证据 + 可观测验证框架 + 修复建议