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

php-symfony-audit

Symfonyフレームワークのセキュリティ設定、CSRF対策、テンプレート処理、アクセス制御などの脆弱性を静的に分析し、一般的な脆弱性タイプに分類してリスクを特定するSkill。

📜 元の英語説明(参考)

Symfony 框架特效安全审计工具。针对 Symfony 常见 security.yaml、CSRF、Twig/Twig raw、表达式与访问控制等框架机制做白盒静态审计,并将风险映射到通用漏洞类型体系(AUTH/CSRF/CFG/XSS/TPL/LOGIC 等)。

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

一言でいうと

Symfonyフレームワークのセキュリティ設定、CSRF対策、テンプレート処理、アクセス制御などの脆弱性を静的に分析し、一般的な脆弱性タイプに分類してリスクを特定するSkill。

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

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

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

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

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

💾 手動でダウンロードしたい(コマンドが難しい人向け)
  1. 1. 下の青いボタンを押して php-symfony-audit.zip をダウンロード
  2. 2. ZIPファイルをダブルクリックで解凍 → php-symfony-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 自身は原文を読みます。誤訳がある場合は原文をご確認ください。

[Skill 名] php-symfony-audit

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

Symfony プロジェクトのソースコードにおける「フレームワーク固有のセキュリティメカニズム」と「設定/使用上の落とし穴」を分析し、以下の点を重点的にカバーします。

  • config/packages/security*.yamlaccess_controlfirewalls 設定の正確性
  • CSRF 防御メカニズム(フォーム送信とトークン検証)
  • Twig レンダリングの自動エスケープと raw 出力のリスク
  • Symfony アクセス式とセキュリティインターセプトチェーン(状況に応じて AUTH/EXPR/TPL にマッピング)
  • HttpClient の外部連携戦略(SSRF 関連のリスクは一般的な SSRF タイプにマッピング)

入力

ユーザーが提供するもの:

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

出力ディレクトリ

以下に出力されます。

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

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

Symfony であると識別された証拠点を提示する必要があります(根拠のない断言は許可されません)。

  • 典型的なディレクトリ:config/src/templates/
  • 依存関係の証拠:composer.json 内の symfony/framework-bundle など
  • エントリポイントの証拠:public/index.php または類似のフロントコントローラー

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

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

  • 適用される汎用タイプコード:AUTH / CSRF / CFG / XSS / TPL / LOGIC / SESS / SSRF / EXPR など
  • マッピング理由:なぜその Symfony リスクがそのタイプコードに該当するのか(一文で)

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

1) アクセス制御と認証ポリシー(AUTH)

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

  • security.yaml 内の access_control ルール
  • firewalls 設定(anonymous: true かどうか、stateless: true かどうか、および認証方法)
  • switch_userrole_hierarchy または voter/policy 関連の設定(存在する場合)

判定ルール:

  • 広すぎる許可(例:機密パスをカバーする汎用的な匿名ルール)が存在する場合、AUTH リスクを出力します。
  • 「認証はあるがロール/所属の検証が不足している」パターンが存在する場合、AUTH または LOGIC リスクを出力します。

2) CSRF 防御(CSRF)

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

  • Symfony CSRF 関連の設定(framework: csrf_protection またはコンポーネントレベルの設定)
  • フォームタイプ使用における CSRF token の生成と受信方法
  • token 検証失敗時の処理パス(早期終了するか、特定ブランチでのみ検証するか)

判定ルール:

  • 「特定のルート/フォームで CSRF が無効になっている、または CSRF token 受信フィールドが一致しない」場合、CSRF リスクを出力します。

3) Twig 自動エスケープと raw 出力(XSS/TPL)

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

  • Twig 設定:自動エスケープが無効になっているかどうか(グローバルまたはローカル)
  • テンプレート内の raw 出力点:|raw{% autoescape false %}、および「エスケープを回避する」すべてのディレクティブ
  • データソース:raw 出力される変数がどこから来ているか(request/session/データベースフィールド)

判定ルール:

  • raw 出力される変数のソースが制御可能であり、エスケープされていない場合、XSS または TPL にマッピングします(式実行/テンプレートエンジンが制御可能な場合)。

4) セキュリティ式と評価リスク(EXPR/TPL/AUTH)

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

  • ExpressionLanguage が security で使用されている場所(voter/policy 内の is_granted または式条件)
  • 式文字列のソースがユーザーによって制御される可能性があるかどうか(例:式連結)

判定ルール:

  • 式文字列が制御可能な場合、EXPR または TPL リスクとして出力します。

5) 外部 HTTP 接続と内部ネットワークアクセス(SSRF)

以下を特定し、出力する必要があります(フレームワーク関連のチェックのみ)。

  • HttpClient/KernelInterface などの外部呼び出しのラッパーエントリポイント
  • URL/ホストがユーザー入力に由来するかどうか、許可リストまたは内部ネットワークインターセプトが存在するかどうか

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

以下のいずれか少なくとも2つを提示し、観測点を明確に記述する必要があります。

  • アクセス制御エラー:未ログイン/低権限ユーザーで保護されていると思われるルートにアクセスし、応答の違いを観察します。
  • CSRF エラー:CSRF token が欠落している、または偽造されたフォームリクエストを構築し、ステータスコード/エラーパスを観察します。

PoC 出力要件:

  • 実際のルートと実際のフォームアクション(またはルートパス)を含める必要があります。
  • 期待される観測点(例:403 が返されるか、状態変更が続行されるか)を説明する必要があります。

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

  • [ ] 出力に Symfony 識別証拠点が含まれていること
  • [ ] AUTH/CSRF/Twig(raw)/セキュリティ式/HttpClient(オプション) の5つのブロックすべてにチェック結果があること
  • [ ] すべてのリスクに、マッピングタイプコード + 位置の証拠 + 観測可能な検証フレームワーク + 修正提案があること
📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開

PHP Symfony 框架安全审计(php-symfony-audit)

分析 Symfony 项目源码中的“框架特效安全机制”和“配置/用法踩坑”,重点覆盖:

  • config/packages/security*.yaml 的 access_control、firewalls 配置正确性
  • CSRF 防护机制(表单提交与 token 验证)
  • Twig 渲染自动转义与 raw 输出风险
  • Symfony 访问表达式与安全拦截链(map 到 AUTH/EXPR/TPL 视情况)
  • HttpClient 外联策略(SSRF 类风险以通用 SSRF 类型映射)

输入

用户提供:

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

输出目录

输出到:

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

框架识别(必做)

必须给出识别为 Symfony 的证据点(不允许空口断言):

  • 典型目录:config/src/templates/
  • 依赖证据:composer.jsonsymfony/framework-bundle
  • 入口证据:public/index.php 或类似前端控制器

风险类型映射(必做)

每条发现都必须写明:

  • 适用的通用类型码:AUTH / CSRF / CFG / XSS / TPL / LOGIC / SESS / SSRF / EXPR
  • 映射原因:为什么该 Symfony 风险会落在该类型码(用一句话)

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

1) 访问控制与鉴权策略(AUTH)

必须定位并输出:

  • security.yaml 中的 access_control 规则
  • firewalls 配置(是否 anonymous: true、是否 stateless: true 与认证方式)
  • switch_userrole_hierarchy 或 voter/policy 类配置(如存在)

判定规则:

  • 若存在过宽允许(例如过于泛化的匿名规则覆盖敏感路径),输出 AUTH 风险
  • 若存在“有认证但缺少角色/归属校验”的模式,输出 AUTH 或 LOGIC 风险

2) CSRF 防护(CSRF)

必须定位并输出:

  • Symfony CSRF 相关配置(framework: csrf_protection 或组件级配置)
  • 表单类型使用中 CSRF token 的生成与接收方式
  • token 验证失败的处理路径(是否早退、是否仅在某些分支校验)

判定规则:

  • 若存在“某些路由/表单禁用了 CSRF 或 CSRF token 接收字段不一致”,输出 CSRF 风险

3) Twig 自动转义与 raw 输出(XSS/TPL)

必须定位并输出:

  • Twig 配置:自动转义是否被关闭(全局或局部)
  • 模板中 raw 输出点:|raw{% autoescape false %}、以及任何“绕过转义”的指令
  • 数据来源:raw 输出的变量来自哪里(request/session/数据库字段)

判定规则:

  • raw 输出变量来源可控且未做 escape,则映射到 XSS 或 TPL(若存在表达式执行/模板引擎可控)

4) 安全表达式与求值风险(EXPR/TPL/AUTH)

必须定位并输出:

  • ExpressionLanguage 用于 security 的位置(voter/policy 中 is_granted 或表达式条件)
  • 表达式字符串来源是否可能被用户控制(例如表达式拼接)

判定规则:

  • 若表达式字符串可控,按 EXPR 或 TPL 风险输出

5) 外联 HTTP 与内网访问(SSRF)

必须定位并输出(仅做框架关联检查):

  • HttpClient/KernelInterface 等外联调用的封装入口
  • URL/host 是否来源于用户输入,是否存在 allowlist 或内网拦截

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

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

  • 访问控制错误:用未登录/低权限用户访问疑似受保护路由,观察响应差异
  • CSRF 错误:构造表单请求缺失或伪造 CSRF token,观察状态码/错误路径

PoC 输出要求:

  • 必须包含真实路由与真实表单 action(或路由路径)
  • 必须说明预期观察点(例如是否返回 403、是否继续执行状态变更)

输出完整性检查(强制)

  • [ ] 输出包含:Symfony 识别证据点
  • [ ] AUTH/CSRF/Twig(raw)/安全表达式/HttpClient(可选) 五块均有检查结果
  • [ ] 每条风险都有:映射类型码 + 位置证据 + 可观测验证框架 + 修复建议