songjianyang/xss-audit
安全面向 React/TypeScript/JavaScript 项目的静态 XSS 审计清单,以 Agent 技能形式提供。
如果你已经在用带技能机制的编程 Agent,并且想要一份结构化的静态 XSS 排查清单来对照 React/TypeScript/JavaScript 代码库,这个项目值得看一眼。它是技能包,不是扫描器:安装方式是把技能文件复制到 Agent 的技能目录,输出是一份还需要你人工核实的 Markdown 报告。
解决什么问题
开发者或安全评审人员想在发布前、或做漏洞赏金时,把前端代码里的 XSS 风险过一遍。通常的做法是手动搜索 innerHTML、dangerouslySetInnerHTML、href、postMessage 这类 sink,再逐条回溯来源、判断有没有校验;过程慢,而且容易半途而废。这个技能改变的是搜索之后的那一步:它给审查用 Agent 提供 14 层检查提示和固定报告格式,要求写清 source、sink、数据流和修复建议,人拿到的是一份可核对的清单,而不是一堆 grep 命中。最终产物是评审文档,不是已确认的漏洞列表。
有什么不同
检查覆盖面是主要卖点。它不止于 DOM 注入,还覆盖属性和事件处理器、URL 与导航校验、SSR 启动数据与 JSON-LD 的脚本逃逸、props 透传、postMessage 来源校验、原型污染链、eval/Function/Blob 执行、CSS 注入、SVG/MathML 命名空间、Markdown 与 sanitizer/mXSS、Vue v-html 和 Lit unsafeHTML 等框架信任钩子、Trusted Types/CSP,以及框架绑定与模板注入路径。README 说明这些内容来自作者在漏洞赏金中的实战,并给出 2025 Q3 至 2026 Q2 连续四个季度进入 Microsoft MSRC 研究者排行榜前十的记录(排行榜、作者主页)。这能说明作者的方法论背景,但不等同于独立验证该技能能找全问题。
输出格式体现了取舍。每条发现要记录位置、source/sink/数据流、脆弱代码、修复建议、置信度和验证状态,复现说明还要区分理论步骤与真正执行过的步骤;不完整的数据流会单列到人工复核区,每层搜索摘要则区分“模式匹配”和“已确认漏洞”(示例报告)。这种结构便于分诊,但也说明工具只做静态分析:README 明确说搜索命中不等于确认漏洞,并提醒运行时行为、构建期变换、被排除代码和框架执行时机都会带来误报漏报。你需要预留人工验证的时间,报告只是起点。
谁值得试
适合:已经使用带技能机制的编程 Agent、想要一套可重复的 XSS 清单、并且愿意手工核实结论的前端或应用安全工程师。对想拿自己的审查流程和更广的 sink 列表做对照的漏洞赏金研究者,也算合适。
不适合:期待接入 CI、自动拦截合并或给出确定漏洞数量的人。README 没有提供自动化测试框架、依赖安装或运行时检查,并明确说不保证覆盖率。如果你的代码库主要是别的语言做服务端渲染,或者你需要动态 PoC 来证明可利用性,这份清单的目标不在那里。
使用条件与边界
安装很简单:把 xss-audit/SKILL.md 复制到 Agent 的技能目录,然后用 /xss-audit 或 /xss-audit src/ 调用(项目 README、SKILL.md)。没有包管理器步骤,也不需要跑服务,但前提是你的 Agent 支持技能文件;不支持的话,这份清单就只能当阅读材料。
更大的限制是只做静态分析。发现需要人工确认,报告还可能包含敏感路径、源码、内网域名或凭证,分享前要审查和清理。项目采用 MIT 许可证(许可证),想按自己的审查流程改造清单并不麻烦。README 除了目标路径参数外没有记录按项目配置的方法,因此要准备按自己的框架组合调整各层描述。
HotRepo 点评
HotRepo 从 2026-10-24 开始追踪该仓库;到 2026-10-25,它有 339 个总 star,在新项目榜(全语言)排第 20(仓库)。这只是一个带日期的快照,不是增长序列,无法据此判断热度能否持续。作为采用决策,更值得先确认的是这 14 层是否覆盖你实际使用的技术栈,尤其是信任钩子列表里没有的框架,再决定是否投入时间运行。
本文由 AI 根据项目 README 生成,更新于 2026年10月25日,以项目官方文档为准。