didrod205/csp-doctor
GitHub: didrod205/csp-doctor
本地离线的 CSP 策略静态分析 CLI 工具,用于检测 Content-Security-Policy 中的 XSS 绕过风险并支持 CI 门控。
Stars: 1 | Forks: 0
# 🛡️ csp-doctor
### 在本地为你的 Content-Security-Policy 进行 XSS 漏洞 Lint —— 无需将内容粘贴到任何网站。
[](https://www.npmjs.com/package/csp-doctor)
[](https://bundlephobia.com/package/csp-doctor)
[](https://github.com/didrod205/csp-doctor/actions/workflows/ci.yml)
[](https://www.npmjs.com/package/csp-doctor)
[](./LICENSE)
**[🌐 试试浏览器端演练场 →](https://didrod205.github.io/csp-doctor/)** · 粘贴一条 CSP,查看按严重程度排序的 XSS 漏洞。不会上传任何数据 —— 全部在客户端运行。
你添加了 `Content-Security-Policy` 来阻止 XSS。但是,`script-src` 中一个单一的 `'unsafe-inline'` 就会悄无声息地使整个策略失效;一个通配符或光秃秃的 `https:` 会让任何主机都可以提供脚本;而像 `ajax.googleapis.com` 这样的 CDN 白名单则会开启 JSONP/AngularJS 绕过漏洞 —— 因此攻击者*尽管*有你的策略,依然可以运行脚本。
唯一好用的分析器 Google CSP Evaluator 是**一个需要你粘贴内容的网站** —— 而不是你可以在 CI 中运行的东西。
**csp-doctor 可以在本地确定性地 lint 一个 CSP 的这些漏洞** —— 无论它是一个字符串、一个 HTML `` 标签,还是一个 headers 文件 —— 而且它**支持 nonce / hash / strict-dynamic**,因此它不会对现代浏览器已经忽略的 `'unsafe-inline'` 大惊小怪。
```
npx csp-doctor scan -p "default-src 'self'; script-src 'self' 'unsafe-inline' ajax.googleapis.com"
```
```
policy 57/100 (F)
✗ 'unsafe-inline' in script-src defeats XSS protection [script-src]
⚠ Allowlisted host enables a CSP bypass: ajax.googleapis.com [script-src]
⚠ No base-uri [base-uri]
⚠ No frame-ancestors [frame-ancestors]
```
## 为什么选择 csp-doctor?
- 🎯 **它了解各种绕过手法。** 内置的破坏白名单的主机列表(JSONP 端点、托管的 AngularJS)是 Google CSP Evaluator 背后的核心洞察 —— 现已内置以供离线使用。
- 🧠 **支持 nonce / hash / strict-dynamic。** 它明白 nonce 会使 `'unsafe-inline'` 成为一个无害的回退选项,并且 `'strict-dynamic'` 会忽略主机白名单 —— 因此它能正确评估*现代* CSP,而不是把所有东西都标记为有问题。
- 🔒 **本地且具有确定性。** 无需网站,无需 API 密钥,可离线运行并在 CI 中使用。相同的策略 → 相同的结果。拦截提交了 `'unsafe-inline'` 的 PR。
- 🧩 **从任何地方读取。** 可以是原始策略、HTML ``、`_headers` 文件、nginx `add_header`、Apache `Header set` 或 `vercel.json`。
为什么不把它粘贴到 LLM 中呢?可绕过主机的列表和指令回退规则(`script-src` → `default-src`,`base-uri` 不回退)是精确且不断演变的事实,聊天机器人通常会弄错这些 —— 而你需要的是对*每一次* CSP 变更进行门控,而不是仅此一次。
## 安装
```
# 立即运行
npx csp-doctor scan -p "标签:CSP, GNU通用公共许可证, MITM代理, Node.js, Web安全, XSS, 代码检查工具, 安全标准, 文档结构分析, 暗色界面, 漏洞情报, 自动化攻击, 蓝队分析