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

php-csrf-audit

PHP WebソースコードのCSRF脆弱性を監査し、状態変更インターフェースの保護状況を識別し、トークンの生成・検証・回避条件を追跡して、利用可能性の分級、PoC、および修復提案を出力するSkill。

📜 元の英語説明(参考)

PHP Web 源码 CSRF 审计工具。识别状态变更接口是否受 CSRF 保护,追踪 token 生成、校验与绕过条件,输出可利用性分级、PoC 与修复建议(禁止省略)。

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

一言でいうと

PHP WebソースコードのCSRF脆弱性を監査し、状態変更インターフェースの保護状況を識別し、トークンの生成・検証・回避条件を追跡して、利用可能性の分級、PoC、および修復提案を出力するSkill。

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

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

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

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

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

💾 手動でダウンロードしたい(コマンドが難しい人向け)
  1. 1. 下の青いボタンを押して php-csrf-audit.zip をダウンロード
  2. 2. ZIPファイルをダブルクリックで解凍 → php-csrf-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-17
同梱ファイル
1

📖 Skill本文(日本語訳)

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

[Skill 名] php-csrf-audit

PHP CSRF 監査(php-csrf-audit)

PHP プロジェクトのソースコードを分析し、状態変更を引き起こす可能性のあるすべてのインターフェース(POST/PUT/PATCH/DELETE、または副作用のある GET)が CSRF 保護(トークン検証、SameSite/CORS 連携、二重送信 Cookie など)を実装しているかを確認します。

分類と番号付け

  • 詳細については、shared/SEVERITY_RATING.md を参照してください。
  • 脆弱性番号:{C/H/M/L}-CSRF-{連番}

保護ポイントと必須検査内容(強制)

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

  1. 状態変更エントリポイント:ルーティングの HTTP メソッド、副作用(データベースへの書き込み/権限更新/トランザクション開始/タスクトリガーなど)の有無
  2. CSRF トークン生成:トークンのソース(session/cookie/random)、フィールド名、フォームまたはリクエストヘッダーへの注入方法
  3. CSRF トークン検証:バックエンドの検証ロジックの位置と条件(ログインユーザーのみを検証するか、バイパスブランチが存在するか)
  4. 検証バイパス:「特定のブランチのみ検証しない」「特定の Content-Type のみ検証する」「AJAX 時のみ検証する」などの存在
  5. 同一オリジン/クロスサイト補助:SameSite、CORS/クロスドメイン設定、Referer/Origin 検証(注意:Referer/Origin 単独の依存も不安定な場合があります)

データフロー追跡要件

少なくとも以下のいずれかのチェーンを追跡する必要があります。

  • トークンソース(例:$_SESSION['csrf'])からフロントエンド出力まで
  • そしてバックエンドのトークン受信($_POST/headers)と検証(比較/ハッシュ検証)まで

レポート出力

以下に出力します。

{output_path}/vuln_audit/csrf_{timestamp}.md

脆弱性項目テンプレート(強制)

以下のセクションを必ず含める必要があります。

  • 位置の証拠(ルート + 検証関数/ミドルウェアの位置)
  • データフローチェーン(トークン生成 -> フロントエンドでの送信 -> バックエンドでの検証)
  • 悪用可能な前提条件(ログインが必要か、攻撃者がページを構築できるか、ブラウザの同一サイトポリシー)
  • 検証 PoC(実際のルートとリクエスト構造を必ず含めること。ログインが必要な場合は、Cookie/ログイン状態の説明を記載すること)
  • 推奨される修正(トークン検証の配置、失敗時の応答ポリシー、フィールド名の統一、バイパスブランチへのカバレッジ追加)

証拠の引用(強制:php-route-tracer から)

各 CSRF リスクは、トレース内の証拠ポイントを個別に引用する必要があります(状態が「検証待ち」であっても、証拠の引用は必須です)。

  1. EVID_CSRF_STATE_CHANGE_HANDLER_EXEC:状態変更ハンドラーの実行証拠(トレースのブランチパス証拠)
  2. EVID_CSRF_TOKEN_SOURCE:CSRF トークンのソースと生成証拠(session/cookie/random など)
  3. EVID_CSRF_TOKEN_RECEIVE:リクエストにおける CSRF トークンの受信/検証ロジックへの入力位置証拠(トレースのパラメータ入力点/ブランチ証拠)
  4. EVID_CSRF_TOKEN_VERIFY:CSRF 検証の比較/ハッシュ判断位置証拠(トレースの条件と早期終了証拠)
  5. EVID_CSRF_BYPASS_BRANCH:バイパスブランチ証拠(例:特定の Content-Type のみ検証、または AJAX のみ検証)

tracer 証拠の欠落処理(強制)

  • トレース契約の検証に失敗した場合、または上記の 1~5 のいずれかの重要な証拠ポイントが欠落している場合:そのリスクは ⚠️検証待ち とマークされるだけであり、「悪用可能であることが確認された」という断言はできません。
📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開

PHP CSRF 审计(php-csrf-audit)

分析 PHP 项目源码中,所有可能造成状态变更的接口(POST/PUT/PATCH/DELETE,或含副作用的 GET)是否实现了 CSRF 防护(token 校验、SameSite/CORS 配合、双提交 cookie 等)。

分级与编号

  • 详见:shared/SEVERITY_RATING.md
  • 漏洞编号:{C/H/M/L}-CSRF-{序号}

保护点与必检内容(强制)

必须识别并输出:

  1. 状态变更入口:路由的 HTTP 方法、是否包含副作用(写数据库/更新权限/发起交易/触发任务等)
  2. CSRF token 生成:token 来源(session/cookie/random)、字段名、注入到表单或请求头的方式
  3. CSRF token 校验:后端验证逻辑位置与条件(是否只校验登录用户、是否存在绕过分支)
  4. 校验绕过:是否存在“某些分支不校验”“仅校验特定 Content-Type”“只在 AJAX 时校验”等
  5. 同源/跨站辅助:SameSite、CORS/跨域设置、Referer/Origin 校验(注意:Referer/Origin 单独依赖也可能不稳)

数据流追踪要求

必须追踪至少一条链:

  • 从 token 来源(如 $_SESSION['csrf'])到前端输出
  • 再到后端的 token 接收($_POST/headers)与校验(比较/哈希校验)

报告输出

输出到:

{output_path}/vuln_audit/csrf_{timestamp}.md

漏洞条目模板(强制)

必须包含以下部分:

  • 位置证据(路由 + 校验函数/中间件位置)
  • 数据流链(token 生成 -> 前端携带 -> 后端校验)
  • 可利用前置条件(是否需要登录;攻击者能否构造页面;浏览器同站策略)
  • 验证 PoC(必须包含真实路由与请求结构;若需配合登录,给出 cookie/登录态说明)
  • 建议修复(token 校验放置、失败响应策略、字段名统一、对绕过分支加覆盖)

证据引用(强制:来自 php-route-tracer)

每条 CSRF 风险必须逐项引用 trace 中的证据点(允许状态为待验证,但证据引用必须存在):

  1. EVID_CSRF_STATE_CHANGE_HANDLER_EXEC:状态变更 handler 的执行证据(trace 的分支路径证据)
  2. EVID_CSRF_TOKEN_SOURCE:CSRF token 来源与生成证据(session/cookie/random 等)
  3. EVID_CSRF_TOKEN_RECEIVE:CSRF token 在请求中的接收/进入校验逻辑的位置证据(trace 的参数进入点/分支证据)
  4. EVID_CSRF_TOKEN_VERIFY:CSRF 校验比较/哈希判断位置证据(trace 的条件与早退证据)
  5. EVID_CSRF_BYPASS_BRANCH:绕过分支证据(如仅校验某些 Content-Type 或仅对 AJAX 校验)

tracer 证据缺失处理(强制)

  • 若 trace 契约校验失败或缺失上述 1~5 任一关键证据点:该风险只能标记为 ⚠️待验证,不得给出“已确认可利用”的断言。