Clipperone/owasp-web-security-inspector
GitHub: Clipperone/owasp-web-security-inspector
跨浏览器 MV3 扩展,提供基于 OWASP 最佳实践的被动安全审查,覆盖 cookies、JWT、存储机密、PII 检测及 HTTP 安全标头分析。
Stars: 0 | Forks: 0
# OWASP Web Security Inspector
[](https://github.com/Clipperone/owasp-web-security-inspector/actions/workflows/ci.yml)
[](LICENSE)
OWASP Web Security Inspector 是一款浏览器端扩展,用于受 OWASP 启发的安全审查,涵盖 cookies、JWTs、存储机密以及 HTTP 标头,并内置了 cookie 编辑器。它可以运行在 **Chrome、Firefox 和 Edge** (Manifest V3) 上。
它的**安全评估是被动的**:它只观察浏览器暴露的内容,从不探测端点,不强制发起请求,也不修改请求、响应或标头。**Cookies 标签页**额外提供了显式的、由用户主动发起的 cookie 管理(创建、编辑、删除)。评估结果有助于审查者将应用程序在浏览器中暴露的内容与 OWASP 指南进行比较,特别是 OWASP Cheat Sheet Series 以及更广泛的 OWASP Top 10 意识模型。
## 此扩展的用途
使用它来审查浏览器在应用程序流程中实际观察并存储的内容:
- cookies 及其与会话相关的属性
- 在 cookies 或 web 存储中发现的 token 和 JWTs
- 暴露在 web 存储中的机密和 PII(私钥、API keys、凭证、信用卡、IBANs、税务代码)
- 从活动标签页上下文中捕获的响应标头
- 一份汇总的评估报告,您可以将其导出为独立的 HTML 文件,用于 QA 或发布审查
其重点是基于浏览器的实用验证,以符合 OWASP 相关的最佳实践,例如:
- `Secure`、`HttpOnly`、`SameSite`、`Domain`、`Path` 以及 cookie 生命周期的选择
- 在适当时使用非持久性会话 cookies
- 避免在 `localStorage`、`sessionStorage` 和 IndexedDB 中采用有风险的 token 存储模式
- 安全标头配置,例如 CSP、HSTS、X-Frame-Options、X-Content-Type-Options、Referrer-Policy、COOP、COEP、CORP 和 Permissions-Policy
- 与登出相关的清理信号,例如 `Cache-Control: no-store` 和 `Clear-Site-Data`
- 针对供浏览器消费响应的保守 CORS 行为
## 它无法证明的内容
此扩展仅限浏览器端使用。它揭示了有用的发现和最佳实践差距,但它并不能证明完整的应用程序安全性或合规性。例如,它不验证以下内容:
- 后端上的 token 撤销或会话失效
- 超出 Tokens 标签页中可选的本地验证之外的 JWT 签名信任
- 机密强度或密钥管理质量
- 服务器上的会话轮换正确性
- 完全符合 OWASP ASVS 或其他标准的正式合规性
## 主要功能
### 评估
- 具有二级标签页模型的增量评估工作区:`Headers`、`Transport`、`Cookies`、`Tokens`、`Storage`。
- **Headers** 根据 OWASP Secure Headers 项目语义验证活动页面的响应,并按可折叠的 `Required`、`Advisory` 和 `Should Be Absent` 部分进行分组,每个部分都有 `Fail`/`Warn`/`Pass` 计数器。缺失的必需标头为 `Fail`;存在但不符合规范的值为 `Warn`。深入的逐指令 **Content-Security-Policy** 分析会标记 `unsafe-inline`/`unsafe-eval`、通配符和不安全方案的源,以及缺失的 `object-src`/`base-uri`/`frame-ancestors`/`default-src`,并支持识别 Trusted Types、违规报告、nonce/hash 缓解措施以及 report-only 模式。
- **Transport & TLS** 是针对 HTTPS 采用情况、敏感流程暴露、HSTS 配置、降级信号和传输证据质量的被动浏览器端审查——仅使用观察到的请求、响应标头、存储提示和当前文档的 DOM 元数据。它从不探测端点或强制发起请求。它还涵盖 **Subresource Integrity**、**mixed content**、不安全的 **`ws://` WebSockets** 以及尽力而为的**第三方来源/cookie 清单**(基于 eTLD+1 的启发式方法)。
- **Cookies / Tokens / Storage** 展示由相同引擎生成的 cookie、JWT/opaque-token 和 web 存储的发现结果,每个结果都在其自己的子标签页中。
- **本地 JWT 签名验证** —— Tokens 标签页包含一个可选的“Verify signature”面板,该面板完全通过 Web Crypto API 在浏览器中运行(HS/RS/PS/ES;明确选择算法以阻止算法混淆;始终拒绝 `alg: none`)。任何密钥材料都不会离开浏览器。
- 每项发现的**过滤器**(最低严重性、“仅显示可操作项”、文本搜索)会同时驱动屏幕视图和导出内容,因此您看到的就是您导出的。
- 当活动标签页导航(完整加载或 SPA 路由更改)或您切换标签页时,评估会**自动重新扫描** —— 无需额外权限。
### 存储机密和 PII 检测
- 除了 JWT/opaque-token 提示外,存储值还会通过防 ReDoS 的检测引擎进行扫描,以查找**私钥** (PEM)、**提供商 API keys** (AWS、GitHub、Google、Slack、Stripe、OpenAI)、**高熵机密**、**嵌入式凭证**(Basic auth、`user:pass@` URL、数据库连接字符串、JSON/query 值中的密码字段),以及 **PII**(电子邮件、通过 Luhn 算法校验有效的支付卡、电话号码、校验和有效的 IBANs、意大利 Codice Fiscale、欧盟 VAT 编号)。
- 检测到的机密和 PII 会在任何内容离开页面之前**在源头**(在 content script 中)进行脱敏处理,因此原始机密永远不会被缓存或显示——但完整的 JWT 值是个例外,因为 Tokens 标签页需要其保持完整才能进行解码。
### Cookies
- 检查和过滤活动页面的 cookies,并提供 `Secure`/`HttpOnly`/session/JWT 徽章。
- 创建、编辑和删除 cookies,或清除该网站的所有 cookies——并带有对 `SameSite=None`、`__Secure-`/`__Host-` 前缀以及分区 cookies 的验证。
- 将可见的 cookies 导出为 `curl` 或 Netscape `cookies.txt` 格式。
- 一键从 cookie 的 JWT 值跳转到 Tokens 标签页。
### Tokens
- 实时 JWT 解码,带有 `exp`/`nbf` 指示器和手动 token 风险预览。
- 对活动标签页进行存储扫描和手动重新扫描。
### 响应检查
- 捕获从活动标签页观察到的 document、iframe 和 XHR 响应,提供安全摘要以及针对主要响应的缺失与薄弱 OWASP 标头检查。
### HTML 报告导出
- 一键生成一个**独立的 HTML 文件** (`owasp-assessment--.html`),完全在浏览器中生成——无后端,无外部请求。它内联了所有样式,包含**零 JavaScript**,带有严格的 `Content-Security-Policy` meta 标签,并对每个值进行转义,因此打开和分享是安全的。它会遵循活动的过滤器,并携带一个稳定的 `schemaVersion`。
## 运行环境与技术栈
- Manifest V3 (Chrome、Firefox、Edge)
- 通过 `chrome.sidePanel` (Chromium) / `sidebar_action` (Firefox) 实现侧边栏 UI
- React 18、TypeScript 5 (strict)、Vite 5 结合 `@crxjs/vite-plugin`、Tailwind CSS 3
## 环境要求
- Node.js 20.19+ 或 22.12+,以及 npm 10+ (Vite 8 要求)
- Chrome/Edge 114+ (侧边栏要求) 或 Firefox 115+
## 开发工作流
```
npm install
```
推荐的本地验证流程:
```
npm run test
npm run lint
npm run eslint
npm run build:all
```
构建单一目标:
```
npm run build:chrome # → dist/chrome (also used by Edge)
npm run build:firefox # → dist/firefox (Chromium manifest + Firefox transform)
```
加载未打包的扩展:
- **Chrome / Edge**:打开 `chrome://extensions` (或 `edge://extensions`),启用 Developer mode,然后从 `dist/chrome` 中选择“Load unpacked”。
- **Firefox**:打开 `about:debugging` → This Firefox → “Load Temporary Add-on”,并选择 `dist/firefox/manifest.json`。首次使用时,在面板提示时授予网站访问权限。
## 打包与发布
```
npm run build:all # build Chrome/Edge + Firefox
npm run package # → artifacts/owasp-web-security-inspector--{chrome,edge,firefox}.zip
```
版本号更新与打标签(保持 `package.json`、`package-lock.json` 和 `manifest.json` 同步):
```
npm run release:patch
npm run release:minor
npm run release:major
git push --follow-tags
```
推送 `v*` 标签会触发 **Release** GitHub Action,它会构建所有三个目标,打包它们,并将 zip 文件附加到 GitHub Release 中。商店上传(Chrome Web Store、Firefox AMO、Edge Add-ons)作为 `.github/workflows/release.yml` 中注释掉的、受凭证保护的限制步骤提供。
## 权限
- `cookies`:读取 cookies 以进行检查,并为用户主动发起的 Cookies 标签页编辑器写入 cookies
- `storage`:保留本地设置并在临时会话存储中缓存观察结果
- `activeTab`:解析活动页面的上下文
- `webRequest`:捕获响应标头以进行检查(非阻塞,仅观察)
- `sidePanel`:在浏览器侧边栏中呈现审查 UI (Chromium)
- `host_permissions: `:跨站点观察(可选,并在 Firefox 上由用户授予)
该扩展**没有**请求/响应修改能力;cookie 的写入仅在您在 Cookies 标签页中操作时发生。
## 隐私
- 所有处理都在浏览器中进行。在 token 解码、评估逻辑、检测或报告生成中不使用任何后端或外部 API。
- 缓存的观察结果存在于 `chrome.storage.session` 中(仅存在于内存中,在浏览器关闭时清除)。
- 检测到的存储机密和 PII 在离开页面之前会被脱敏。
## OWASP 参考资料
- OWASP Cheat Sheet Series: https://cheatsheetseries.owasp.org/
- OWASP Top 10: https://owasp.org/Top10/2025/
- OWASP Session Management Cheat Sheet: https://cheatsheetseries.owasp.org/cheatsheets/Session_Management_Cheat_Sheet.html
- OWASP HTTP Security Response Headers Cheat Sheet: https://cheatsheetseries.owasp.org/cheatsheets/HTTP_Headers_Cheat_Sheet.html
- OWASP REST Security Cheat Sheet: https://cheatsheetseries.owasp.org/cheatsheets/REST_Security_Cheat_Sheet.html
- OWASP Content Security Policy Cheat Sheet: https://cheatsheetseries.owasp.org/cheatsheets/Content_Security_Policy_Cheat_Sheet.html
- OWASP HTTP Strict Transport Security Cheat Sheet: https://cheatsheetseries.owasp.org/cheatsheets/HTTP_Strict_Transport_Security_Cheat_Sheet.html
- OWASP Cross-Site Request Forgery Prevention Cheat Sheet: https://cheatsheetseries.owasp.org/cheatsheets/Cross-Site_Request_Forgery_Prevention_Cheat_Sheet.html
- OWASP Cross Site Scripting Prevention Cheat Sheet: https://cheatsheetseries.owasp.org/cheatsheets/Cross_Site_Scripting_Prevention_Cheat_Sheet.html
有关完整的组件映射和消息流,请参阅 [ARCHITECTURE.md](ARCHITECTURE.md),要开始贡献请参阅 [CONTRIBUTING.md](CONTRIBUTING.md)。
标签:Cookie管理, MV3, Snort++, Web安全, 浏览器扩展, 自动化攻击, 蓝队分析, 被动扫描