讲师中心 微信公众号
AI工具推荐 视频效率加速

Phy Xss Audit

Polar Sponsor
爱发电 赞助
.NET 9.0

针对 JavaScript/TypeScript、React、Vue 等的 XSS 静态漏洞扫描器(OWASP A03:2021),可检测反射、存储和 DOM 型 XSS。

phy-xs- 审计 — XSS 易碎性 Static Scanner. 跨服务器侧渲染,客户端DOM操作等10项检查的跨 Scans 跨空间脚本(XSS)易碎

功能概述

phy-xs- 审计 — XSS 易碎性 Static Scanner. 跨服务器侧渲染,客户端DOM操作等10项检查的跨 Scans 跨空间脚本(XSS)易碎是一项面向实际任务的技能。它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。

核心要点

  • 使用时应结合输入条件选择合适的执行方式,核对必要参数、依赖环境与输出内容,并按原始要求处理异常情况。
  • 该技能适合需要稳定复用相关能力的场景,可作为自动化工作流的一部分,也便于后续检查、调整和扩展。
  • 从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。

使用与执行

实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。

结果检查与注意事项

执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。

phy-xss-audit — XSS 漏洞静态扫描器

对源代码执行跨 10 类规则的扫描,覆盖服务端渲染、客户端 DOM 操作及框架特有模式,识别 跨站脚本(XSS) 漏洞。映射至 OWASP A03:2021 — 注入 和 CWE-79。

快速开始

# 扫描整个项目
python3 ~/.claude/skills/phy-xss-audit/scripts/xss_audit.py .

# 扫描单个文件
python3 ~/.claude/skills/phy-xss-audit/scripts/xss_audit.py src/components/Post.tsx

# CI 模式 — 发现任意 CRITICAL 或 HIGH 级别问题即退出状态码 1
python3 ~/.claude/skills/phy-xss-audit/scripts/xss_audit.py . --ci

# JSON 输出(适用于 SARIF 流水线)
python3 ~/.claude/skills/phy-xss-audit/scripts/xss_audit.py . --format json

# GitHub Actions 注解格式输出
python3 ~/.claude/skills/phy-xss-audit/scripts/xss_audit.py . --format github

# 仅运行某一项检查
python3 ~/.claude/skills/phy-xss-audit/scripts/xss_audit.py . --check XV003

10 类检查项

ID 严重性 标题 CWE 支持语言
XV001 HIGH innerHTML / outerHTML 中使用用户数据 CWE-79 JS/TS/Vue/HTML
XV002 HIGH document.write() 中使用用户数据 CWE-79 JS/TS/HTML
XV003 CRITICAL eval() / setTimeout(string) 中使用用户数据 CWE-95 JS/TS/Vue
XV004 HIGH dangerouslySetInnerHTML 未配合 DOMPurify 使用 CWE-79 React JSX/TSX
XV005 CRITICAL Django mark_safe() / autoescape off CWE-79 Python/HTML
XV006 CRITICAL Jinja2 | safe 过滤器或 Markup() 绕过 CWE-79 Python/HTML
XV007 HIGH PHP echo/print 未调用 htmlspecialchars CWE-79 PHP
XV008 HIGH ERB raw / html_safe 未配合 sanitize 使用 CWE-79 Ruby/ERB
XV009 HIGH Vue v-html 中绑定动态表达式 CWE-79 Vue
XV010 HIGH Angular bypassSecurityTrust / Go template.HTML 类型转换 CWE-79 TS/Go

通过 / 部分通过 / 不通过判定标准

XV001 — innerHTML / outerHTML 中使用用户数据

  • 不通过(HIGH):存在 element.innerHTML = 或 .html()(jQuery)赋值操作,且用户可控数据(如 req.query、req.body、request.GET、location.search 等)在 ±20 行范围内流入,且附近无 DOMPurify.sanitize() 防护。
  • 通过:赋值前已使用 DOMPurify.sanitize(input) 进行净化,或数据来源为内部/静态内容。

XV002 — document.write() 中使用用户数据

  • 不通过(HIGH):在邻近代码行中,document.write() 或 document.writeln() 调用传入了用户可控数据。
  • 通过:document.write() 仅输出开发者控制的静态字符串(无任何用户输入路径)。

XV003 — eval() / setTimeout(string) 中使用用户数据

  • 不通过(CRITICAL):出现 eval(userVar)、setTimeout(userVar + "...") 或 new Function(...) 等调用,且参数中直接包含用户数据;测试/规格文件(*.test.js / *.spec.ts)中的此类调用被跳过。
  • 通过:eval() 仅用于静态字符串(如 JSON Schema),或用户数据通过安全的 JSON.parse() 传入。

XV004 — dangerouslySetInnerHTML 未配合 DOMPurify 使用

  • 不通过(HIGH):React 组件中使用 dangerouslySetInnerHTML={{ __html: ... }},但该值在 ±5 行范围内未被 DOMPurify.sanitize() 包裹。
  • 通过:该值为 DOMPurify.sanitize(html) 的返回结果 —— 即代码中在 ±5 行内出现 DOMPurify.sanitize( 模式。

XV005 — Django mark_safe() / autoescape off

  • 不通过(CRITICAL):出现 mark_safe(user_data) 调用,且用户可控数据在 ±10 行范围内流入;同时,模板中任意位置出现 {% autoescape off %} 均触发告警。
  • 通过:mark_safe() 仅包裹开发者定义的静态 HTML 字符串,或数据已先经 bleach.clean() 净化。

XV006 — Jinja2 | safe 过滤器或 Markup() 绕过

  • 不通过(CRITICAL):模板变量通过 | safe 过滤器或被 Markup() 包裹,且用户可控数据在 ±10 行范围内流入。
  • 通过:| safe 仅用于开发者控制的内容(例如:无用户输入参与的静态站点生成器输出)。

XV007 — PHP echo/print 未调用 htmlspecialchars

  • 不通过(HIGH):出现 echo $_GET['key'] 或 echo $var 等输出语句,且同一行未调用 htmlspecialchars() / htmlentities() / strip_tags() / filter_input() 等函数进行转义。
  • 通过:所有用户输入在输出前均被 htmlspecialchars($var, ENT_QUOTES, 'UTF-8') 包裹。

XV008 — ERB raw / html_safe 未配合 sanitize 使用

  • 不通过(HIGH):ERB 模板中出现 <%== user_var %>、user_var.html_safe 或 raw user_var,且用户输入在 ±10 行范围内流入,且附近无 sanitize() 或 strip_tags() 防护。
  • 通过:输出使用 h(var) / escape_html(),或用户值被 sanitize() 显式包裹。

XV009 — Vue v-html 中绑定动态表达式

  • 不通过(HIGH):出现 v-html="someVar",且该值为动态计算所得,且周围 10 行内未见 DOMPurify.sanitize() 调用。
  • 通过:该值在绑定至 v-html 前已通过 DOMPurify.sanitize(rawHtml) 计算得出。

XV010 — Angular bypassSecurityTrust / Go template.HTML 类型转换

  • 不通过(HIGH):Angular 中调用 bypassSecurityTrustHtml(userVar) 或 bypassSecurityTrustScript(userVar),且用户数据在邻近范围内流入;Go 中对用户可控输入执行 template.HTML(userStr) 或 template.JS(userStr) 类型转换。
  • 通过:Angular — 未调用任何 bypass 方法,改用标准 [innerHTML] 绑定;Go — 交由 html/template 自动处理转义(绝不将用户字符串强制转换为 template.HTML 类型)。

覆盖的 XSS 类型

XSS 类型 对应检查项
反射型 XSS XV001, XV002, XV005, XV006, XV007
存储型 XSS XV001, XV004, XV008, XV009
基于 DOM 的 XSS XV001, XV002, XV003
服务端模板注入 → XSS XV005, XV006
框架绕过型 XSS XV004, XV009, XV010

支持的语言与框架

语言 框架 检查项
JavaScript / TypeScript Vanilla, React, Vue, Angular XV001–XV004, XV009, XV010
Python Django, Jinja2 (Flask/FastAPI) XV005, XV006
PHP Vanilla, WordPress XV007
Ruby Rails, Sinatra XV008
Go html/template, Gin XV010

污染源模式(用户可控数据)

若某变量上下 ±15–20 行内出现以下任一模式,则该变量被判定为“用户可控”:

req.query / req.body / req.params / req.headers       (Node.js/Express)
request.GET / request.POST / request.args / request.json  (Django/Flask)
params[ / query_params[ / @query_params               (Rails/FastAPI)
$_GET[ / $_POST[ / $_REQUEST[ / $_COOKIE[             (PHP)
location.search / location.hash / URLSearchParams(    (Browser DOM)
c.Query( / c.Param( / r.URL.Query(                    (Go Gin/stdlib)

净化防护模式(自动抑制告警)

以下模式若出现在危险目标(sink)附近,将自动抑制该处告警:

防护模式 适用上下文
DOMPurify.sanitize( JS/TS/Vue 中的 DOM XSS
sanitize_html( 基于 Python bleach 的净化
bleach.clean( Python Django
htmlspecialchars( PHP
htmlentities( PHP
h( / html_escape( Rails ERB
sanitize( Rails, Vue
xss.filterXSS( Node.js xss 库
escape( 通用
strip_tags( PHP / Rails

CI 集成

# GitHub Actions
- name: XSS audit
  run: python3 scripts/xss_audit.py . --format github --ci

# GitLab CI
xss-audit:
  script:
    - python3 scripts/xss_audit.py . --ci
  allow_failure: false
# Pre-commit hook
#!/bin/sh
python3 ~/.claude/skills/phy-xss-audit/scripts/xss_audit.py . --ci

示例输出

======================================================================
  phy-xss-audit — XSS 漏洞扫描报告
======================================================================
  总数:3  |  CRITICAL:1  |  HIGH:2
======================================================================

🔴 [XV005] CRITICAL — Django mark_safe() / autoescape off (CWE-79)
   文件 :app/views.py:47
   代码 :return mark_safe(request.GET.get('content', ''))
   修复 :切勿对用户输入调用 mark_safe()。应先使用 bleach.clean() 净化。

🟠 [XV001] HIGH — innerHTML / outerHTML 中使用用户数据 (CWE-79)
   文件 :src/components/Comment.tsx:23
   代码 :el.innerHTML = comment.body
   修复 :在 innerHTML 赋值前使用 DOMPurify.sanitize(userInput) 进行净化。

🟠 [XV004] HIGH — dangerouslySetInnerHTML 未配合 DOMPurify 使用 (CWE-79)
   文件 :src/components/Post.jsx:61
   代码 :dangerouslySetInnerHTML={{ __html: post.content }}
   修复 :dangerouslySetInnerHTML={{ __html: DOMPurify.sanitize(post.content) }}

OWASP 覆盖情况

本能力覆盖 OWASP A03:2021 — 注入(XSS 向量)。

OWASP ID 描述 检查项
A03:2021 注入 — 跨站脚本 XV001–XV010

本技能加入后,phy- suite 的 OWASP Top 10 覆盖情况:

  • A01 — phy-path-traversal-audit ✅
  • A02 — phy-crypto-audit ✅
  • A03 — phy-xss-audit ✅ ← 当前技能
  • A04 — phy-cors-audit ✅
  • A05 — phy-security-headers ✅
  • A06 — phy-dep-upgrade ✅
  • A07 — phy-session-audit ✅
  • A08 — phy-deserialization-audit ✅
  • A09 — phy-otel-audit ✅(可观测性/日志)
  • A10 — phy-ssrf-audit ✅

已实现完整的 OWASP Top 10 覆盖。

配套技能

技能 关联说明
phy-cors-audit CORS 配置错误 → OWASP A04
phy-session-audit Cookie/会话安全 → OWASP A07
phy-ssrf-audit 服务端请求伪造 → OWASP A10
phy-crypto-audit 弱密码学实现 → OWASP A02
phy-security-headers 缺失可缓解 XSS 的 CSP 等安全响应头

技术说明

  • 零外部依赖 — 完全基于 Python 3 标准库(re、pathlib、argparse、json)
  • 自动跳过目录:.git/、node_modules/、__pycache__/、dist/、build/、.venv/
  • 编码处理:优先尝试 utf-8,失败则回退至 latin-1
  • XV003(eval):跳过文件名匹配 *.test.js / *.spec.ts 的文件,以降低测试工具误报率
  • 邻近窗口(Proximity window):用户输入必须位于危险目标(sink)的 ±10–20 行范围内(各检查项可独立配置)
  • 误报抑制:当检测到上述“净化防护模式”在危险目标附近时,自动抑制告警

作者

Canlah AI — 在不损害品牌前提下高效开展效果营销。

  • GitHub:github.com/PHY041
  • 全部技能:clawhub.ai/PHY041
目录

热门AI工具

更多
WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

UP简历
UP简历 Hot

一款AI办公效率工具,主要用于基于AI技术的免费在线简历制作工具,适合需要提升相关任务效率的用户。

音述AI
音述AI Hot

一款AI音频处理工具,主要用于音述AI是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区,适合需要提升相关任务效率的用户。

Seko
Seko Hot

一款AI视频创作工具,主要用于商汤科技推出的创编一体的AI短视频创作Agent,适合需要提升相关任务效率的用户。

PixPix
PixPix Hot

PixPix是一款面向电商视觉生产的AI商品图生成工具。

Atoms
Atoms Hot

Atoms是一款AI智能体工具,第一支自动构建真实业务的 AI 团队。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

讯飞绘文

讯飞绘文是一款由科大讯飞推出的一站式 AIGC 内容运营平台。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

相关专题

更多
Gradle插件开发入门教程
Gradle插件开发入门教程

本专题介绍Gradle插件开发的基本流程,涵盖插件类编写、自定义任务注册、扩展参数设计和插件应用方法,帮助你理解插件如何组织构建逻辑,减少多个项目之间的重复配置。

0

2026.10.22

Gradle Wrapper配置教程
Gradle Wrapper配置教程

本专题介绍Gradle Wrapper的基本作用,涵盖文件组成、生成方法、版本配置和任务调用,帮助你理解项目如何使用指定的Gradle版本,减少不同开发环境带来的构建差异。

0

2026.10.22

Golangci-lint检查器使用教程
Golangci-lint检查器使用教程

本专题整理Golangci-lint常用Linters的用途与配置方法,覆盖错误处理、无效代码、安全、复杂度、命名和依赖检查,帮助项目合理选规则。

0

2026.10.22

Gradle怎么构建Java项目
Gradle怎么构建Java项目

本专题介绍Gradle Java项目构建方法,涵盖Java插件配置、依赖声明、源码编译、测试执行和打包检查,帮助你理解各阶段的任务关系,逐步完成项目构建。

0

2026.10.22

PHP时间戳漏洞修复教程
PHP时间戳漏洞修复教程

本专题汇总PHP常见时间戳漏洞,包括2038年溢出、时区漂移、时间戳伪造、重放攻击、时间盲注与日志审计失效等,并给出升级64位环境、使用 DateTimeImmutable、统一UTC、严格超时校验、预处理绑定、hash_equals 比对等修复方案,帮助开发者快速排查和加固时间相关代码。

0

2026.10.22

Golangci-lint配置文件与规则设置
Golangci-lint配置文件与规则设置

本专题聚焦Golangci-lint YAML配置文件,讲清运行参数、规则启停、目录排除、问题过滤及严重级别设置,便于团队统一检查标准。

0

2026.10.22

Golangci-lint安装与入门教程
Golangci-lint安装与入门教程

本专题讲解Golangci-lint的安装、初始化、基础命令和首次代码检查,覆盖本地环境、Docker及多平台用法,帮助Go开发者快速上手。

0

2026.10.22

PHP2Shell高危漏洞修复教程
PHP2Shell高危漏洞修复教程

PHP2Shell漏洞是什么,哪些PHP版本和运行环境会受到影响,服务器应该如何检测与修复?本专题提供版本自查脚本、Linux与Docker升级命令、PHP-FPM和Apache排查步骤,以及修复验证、临时缓解和应急响应方案。

0

2026.10.22

剧云人物设定与关系管理教程
剧云人物设定与关系管理教程

本专题介绍剧云人物设定与关系管理,讲解角色小传、性格职业、人物目标、背景资料和关系网络的创建及维护方法。

0

2026.10.22

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn