immanuelgn/TraceLattice

GitHub: immanuelgn/TraceLattice

TraceLattice 是一款防御性 Web 安全扫描器,通过对公开主页进行静态扫描来评估 HTTP 安全标头、Cookie 卫生和第三方暴露情况,生成可解释的安全态势报告。

Stars: 0 | Forks: 0

# TraceLattice TraceLattice 是一个防御性 Web 安全项目,它对公开主页运行有界静态扫描,并将可观察到的信号转化为可解释的安全态势报告。 在线演示:[https://tracelattice.vercel.app](https://tracelattice.vercel.app) ## 功能 TraceLattice 会在运行任何目标 JavaScript 之前,检查网站的可见部分: - HTTPS 状态和重定向行为 - HTTP 安全标头 - `Set-Cookie` 名称和属性,不存储 cookie 值 - 静态脚本、iframe、图像、链接、表单和 meta refresh 引用 - 第一方与第三方根域名 - 已知的分析、广告、社交、会话回放、标签管理器、CDN 以及未知的提供商模式 最终结果是一份静态安全态势报告,包含针对标头态势、cookie 卫生和第三方暴露情况的组件评分。它不是漏洞扫描程序、合规审计或手动审查的替代品。 ## 技术亮点 - 使用 Next.js App Router、React、TypeScript、Tailwind CSS 和 Vercel Functions 构建 - 针对公开 URL 扫描的 DNS 感知 SSRF 防护机制 - 带有三跳上限的手动重定向验证 - 请求超时和响应大小限制,以控制 Serverless 成本和滥用 - 针对安全性的上下文 cookie 分析,涵盖 `Secure`、`HttpOnly`、`SameSite`、作用域、保留期以及类似标识符的名称 - 针对 CSP、HSTS、帧保护、`X-Content-Type-Options`、`Referrer-Policy`、`Permissions-Policy` 和跨域隔离标头的 HTTP 标头检查 - 静态第三方资源映射和跟踪器分类 - 带有透明证据的 0-100 加权态势评分 - 避免得出绝对“更安全的网站”结论的并排比较 - JSON 导出、可复制的摘要以及浏览器本地扫描历史记录 - 针对 URL 验证、cookie 分析、标头分析、跟踪器检测、第三方提取和评分的单元测试 ## 架构 ``` Browser -> POST /api/scan -> Normalize and validate URL -> Reject private, local, reserved, and unsafe targets -> Resolve DNS and validate every resolved address -> Fetch one public document with controlled redirects -> Parse static HTML without executing JavaScript -> Analyze headers, cookies, trackers, and third parties -> Return component scores, findings, limitations, and recommendations <- Structured JSON report Recent scan summaries stay in localStorage. ``` ## API `POST /api/scan` ``` { "url": "https://example.com" } ``` 响应包含标准化和最终的 URL、耗时、HTTPS 状态、评分组件、标头发现、cookie 发现、跟踪器、第三方域名、资源、建议以及明确的限制说明。 ## 评分模型 最终得分是一个加权静态快照: - 标头态势:45% - Cookie 卫生:25% - 第三方暴露:30% Cookie 的发现是基于上下文的。例如,缺少 `HttpOnly` 的潜在会话或安全 cookie 的权重要高于客户端可读的首选项 cookie。可选的高级标头(如 COOP、CORP 和 COEP)会被作为证据包含在内,但不会像每个网站缺少核心控制措施那样对待。 每个结果都被标记为有限置信度,因为 TraceLattice 不执行 JavaScript、不抓取页面、不进行身份验证、不提交表单、不检查运行时网络流量,也不测试可利用性。 ## 演示的安全概念 - SSRF 防御 - DNS 和 IP 范围验证 - 逐次重定向的信任检查 - HTTP 安全标头 - Content Security Policy - HSTS - 安全的 cookie 属性 - SameSite 和 HttpOnly cookie 处理 - 静态跟踪器检测 - 第三方 JavaScript 和供应链暴露 - 防御性风险评分 - 安全的 Serverless API 设计 ## 本地开发 ``` npm install npm run dev ``` 打开 `http://localhost:3000`。 质量检查: ``` npm run lint npm run test npm run build npm audit --omit=dev ``` ## 部署 该项目作为 Next.js 应用程序部署在 Vercel 上。当前版本不需要数据库、队列、cron job 或付费 API。 ``` npx vercel npx vercel --prod ``` ## 限制 TraceLattice 是有意限定范围的: - 每次只扫描一个公开主页。 - 不执行目标 JavaScript。 - 不抓取链接页面或获取引用的资源。 - 可能会遗漏动态的、经过身份验证的、特定区域的或受同意门控限制的行为。 - 不证明网站是安全的、不安全的、合规的、恶意的或被入侵的。 - 它比较的是观察到的静态暴露情况,而不是组织整体的安全成熟度。 ## 未来改进 - 版本化的跟踪器模式源 - 可共享的签名报告快照 - 可选的基于浏览器的抓取模式 - CSP 指令可视化 - 辅助功能和视觉回归测试 - 针对生产流量的分布式速率限制 ## 关键词 网络安全、Web 安全、隐私工程、HTTP 安全标头、Content Security Policy、HSTS、安全 Cookie、SameSite、HttpOnly、跟踪器检测、第三方 JavaScript、风险评分、TypeScript、Next.js、React、Tailwind CSS、Serverless Functions、Vercel、SSRF 防护、安全编码、数据隐私、OWASP、威胁建模。
标签:HTTP安全, Web安全, 前端, 安全态势评估, 自动化攻击, 蓝队分析, 防御性安全