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

php-xss-audit

PHPのウェブサイトのソースコードを分析し、ユーザー入力がHTMLやJavaScriptなどの出力コンテキストにどのように影響するかを特定し、XSS脆弱性の悪用可能性の評価、PoC、修正提案を提供するSkill。

📜 元の英語説明(参考)

PHP Web 源码 XSS 审计工具。识别用户输入进入输出上下文(HTML/属性/JS/URL/模板),分析转义与防护策略,输出可利用性分级、PoC 与修复建议(禁止省略)。

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

一言でいうと

PHPのウェブサイトのソースコードを分析し、ユーザー入力がHTMLやJavaScriptなどの出力コンテキストにどのように影響するかを特定し、XSS脆弱性の悪用可能性の評価、PoC、修正提案を提供するSkill。

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

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

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

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

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

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

PHP XSS 監査(php-xss-audit)

PHP プロジェクトのソースコードを分析し、クロスサイトスクリプティング(XSS)を特定します。これは、ユーザー入力が出力コンテキストに入り、適切にエスケープ/エンコードされていない場合、またはフレームワークが自動エスケープを無効にしているために式が実行されたり HTML が挿入されたりする場合に発生します。

分類と番号付け

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

XSS シンク(必須)

以下の出力点を特定します。

  • ネイティブ出力:echo/print/printf/<?= ?>(変数をレスポンスに出力)
  • レスポンスへの文字列連結:header() / setcookie()(制御可能なコンテンツを含む場合)
  • テンプレートレンダリング:
    • Twig:{{ }}(エスケープ)と {% autoescape false %} / |raw のリスクポイント
    • Smarty:fetch/display と安全でない変数出力
    • Blade クラス:{!! !!}(エスケープなし出力)
  • 動的スクリプト/イベント属性:on* 属性、<script> 内、URL パラメータへの出力

エスケープ/保護チェック(必須)

疑わしい各チェーンについて、以下を分析する必要があります。

  • htmlspecialchars/htmlentities またはフレームワークの自動エスケープが存在するかどうか
  • コンテキストエンコーディング(HTML、属性、JS、URL)が存在するかどうか
  • エスケープが無効になっているかどうか(raw/raw filter/unescaped output)

トレーサーのトリガー条件(必須)

  • ユーザー入力が多層処理を経て HTML フラグメントに連結される場合
  • 分岐が存在する場合:ある分岐はエスケープし、別の分岐はエスケープしない場合
  • 出力点がテンプレート層にあり、入力がコントローラー層にある場合

レポート出力

以下に出力します。

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

脆弱性項目テンプレート(必須)

php-sql-audit とほぼ同じですが、データフローチェーンでは以下を明確にする必要があります。

  • 出力コンテキスト:HTML body/attribute/script/URL パラメータ/テンプレートフラグメント
  • 具体的なエスケープ関数またはエスケープ無効化の位置と証拠
  • PoC には実行可能な XSS ペイロードを含め、必要なエンコーディング方法を区別する必要があります。

証拠の引用(必須:php-route-tracer から)

各 XSS の疑わしい脆弱性について、トレース出力の ## 9) Sink Evidence Type ChecklistXSS 行に対応する証拠の要点を個別に引用する必要があります(ステータスは検証待ちでも構いませんが、証拠の引用は必須です)。

  1. EVID_XSS_OUTPUT_POINT:レスポンス出力点の位置の証拠(echo/テンプレート出力/<script>または属性/URL コンテキスト)
  2. EVID_XSS_USER_INPUT_INTO_OUTPUT:ユーザー入力が出力に入った証拠
  3. EVID_XSS_ESCAPE_OR_RAW_CONTROL:エスケープ/エスケープ無効化の証拠(htmlspecialchars など、または raw/raw モードの証拠)

トレーサーの証拠欠落処理(必須)

  • 上記 1~3 のいずれかの重要な証拠の要点が見つからない場合、その脆弱性のステータスは ⚠️検証待ち としかマークできず、直接 ✅悪用可能と確認済み とすることはできません。
📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開

PHP XSS 审计(php-xss-audit)

分析 PHP 项目源码,识别跨站脚本(XSS):用户输入进入输出上下文且未做正确转义/编码,或框架禁用了自动转义导致表达式执行/HTML 注入。

分级与编号

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

XSS Sink(必做)

识别以下输出点:

  • 原生输出:echo/print/printf/<?= ?>(输出变量到响应)
  • 字符串拼接到响应:header() / setcookie()(若包含可控内容)
  • 模板渲染:
    • Twig:{{ }}(转义)与 {% autoescape false %} / |raw 风险点
    • Smarty:fetch/display 与不安全变量输出
    • Blade 类:{!! !!}(不转义输出)
  • 动态脚本/事件属性:输出到 on* 属性、<script> 内、URL 参数

逃逸/防护检查(必做)

对每条疑似链必须分析:

  • 是否存在 htmlspecialchars/htmlentities 或框架自动转义
  • 是否存在上下文编码(HTML、属性、JS、URL)
  • 是否禁用了转义(raw/raw filter/unescaped output)

tracer 触发条件(必做)

  • 用户输入经历多层处理、拼接成 HTML 片段
  • 存在分支:某分支转义,另一分支不转义
  • 输出点在模板层,输入在 controller 层

报告输出

输出到:

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

漏洞条目模板(强制)

php-sql-audit 基本一致,但在数据流链里必须明确:

  • 输出上下文:HTML body/attribute/script/URL 参数/模板片段
  • 具体转义函数或转义关闭点的位置与证据
  • PoC 必须包含可执行 XSS payload,并区分需要的编码方式

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

每条 XSS 疑似漏洞必须逐项引用 trace 输出中 ## 9) Sink Evidence Type ChecklistXSS 行对应证据要点(允许状态为待验证,但证据引用必须存在):

  1. EVID_XSS_OUTPUT_POINT:响应输出点位置证据(echo/模板输出/<script>或属性/URL 上下文)
  2. EVID_XSS_USER_INPUT_INTO_OUTPUT:用户输入进入输出的证据
  3. EVID_XSS_ESCAPE_OR_RAW_CONTROL:转义/禁用转义证据(htmlspecialchars 等或 raw/raw 模式证据)

tracer 证据缺失处理(强制)

  • 若无法定位上述 1~3 任一关键证据要点:该漏洞状态只能标记为 ⚠️待验证,不得直接给出 ✅已确认可利用