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 [![CI](https://static.pigsec.cn/wp-content/uploads/repos/cas/ad/ad5834178f7599af9fdda11629d49cae07f2997beec49821b2920eff5bfd50e7.svg)](https://github.com/Clipperone/owasp-web-security-inspector/actions/workflows/ci.yml) [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](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安全, 浏览器扩展, 自动化攻击, 蓝队分析, 被动扫描