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安全, 前端, 安全态势评估, 自动化攻击, 蓝队分析, 防御性安全