francovillagra/web-vulnerability-scanner
GitHub: francovillagra/web-vulnerability-scanner
一款基于 Next.js 的 Web 漏洞扫描工具,无需安装即可在线检测网站的 SSL 证书、安全响应头和 Cookie 配置等常见安全隐患。
Stars: 0 | Forks: 0
# 🛡️ Web Vulnerability Scanner
一款用于检测网站安全漏洞的 Web 工具。它可分析 HTTP headers、SSL 证书、cookies、重定向等——无需注册或安装。
🔗 **[在线演示](https://web-vulnerability-scanner-red.vercel.app)**

## ✨ 功能
### 🔍 漏洞检测
- **SSL/TLS** — 验证证书:检测无效、过期或证书链不完整的证书
- **Security Headers** — 检查是否包含关键 headers:
- `Content-Security-Policy` (CSP)
- `Strict-Transport-Security` (HSTS)
- `X-Frame-Options`
- `X-Content-Type-Options`
- `Permissions-Policy`
- **不安全的 Cookies** — 检测缺少 `Secure`、`HttpOnly` 或 `SameSite` 标志的 cookies
- **Information Disclosure** — 识别 HTML 注释、headers 中暴露的版本信息以及 stack traces
- **Open Redirect** — 检测可被利用的开放重定向
- **Server Info Disclosure** — 检测包含敏感信息的 `Server` 和 `X-Powered-By` headers
### 📊 可视化仪表盘
- 按严重程度(严重 / 高 / 中 / 低)分布的环形图
- 带有各严重级别动画计数器的 Cards
- 包含描述和建议的详细漏洞列表
- 保存在 `localStorage` 中的扫描历史记录(最近 20 条)
- 导出为 **JSON** 格式的完整报告
### 🔒 扫描器安全性
- 防止 **SSRF**(屏蔽 localhost、私有 IP 和云服务的 metadata endpoints)
- 要求带有协议(`http://` 或 `https://`)的 URL 验证
- 健壮的错误处理:timeout、无效 SSL、DNS、unreachable
## 🛠️ 技术栈
| 技术 | 用途 |
|------------|-----|
| **Next.js 16** | 带有 App Router 的全栈 Framework |
| **React 19** | 结合 hooks 和函数式组件的 UI |
| **TypeScript** | 全项目范围内的静态类型检查 |
| **Tailwind CSS 4** | 实用工具类样式 |
| **Axios** | 支持高级 SSL 功能的 HTTP requests |
| **Cheerio** | 用于内容分析的 HTML 解析 |
| **Zod** | schemas 和 inputs 验证 |
| **date-fns** | 历史记录中的日期格式化 |
| **Recharts** | 用于严重程度分布的环形图 |
| **Vercel** | 生产环境的部署与托管 |
## 🚀 演示
无需注册即可访问在线演示:
**[https://web-vulnerability-scanner-red.vercel.app](https://web-vulnerability-scanner-red.vercel.app)**
### 推荐的测试网站:
- `https://example.com` — 具有基础漏洞的简单网站
- `https://google.com` — 采用良好安全实践的真实网站
- `https://github.com` — 拥有强大安全 headers 的网站
- `http://testphp.vulnweb.com` — 专为测试设计的不安全网站 ⚠️
## 💻 本地运行
### 前置条件
- Node.js 18+
- npm 或 yarn
### 安装说明
```
# 1. 克隆仓库
git clone https://github.com/francovillagra/web-vulnerability-scanner.git
cd web-vulnerability-scanner
# 2. 安装依赖
npm install
# 3. 创建环境变量文件
cp .env.example .env.local
# 基础 scanner 不需要环境变量
# 4. 以开发模式运行
npm run dev
```
在浏览器中打开 [http://localhost:3000](http://localhost:3000)。
### 生产环境构建
```
npm run build
npm start
```
## 📁 项目结构
```
web-vulnerability-scanner/
├── app/
│ ├── page.tsx # Página principal con el scanner
│ └── api/
│ └── scan/
│ └── route.ts # Endpoint del scanner
├── components/
│ ├── ScanHistory.tsx # Historial de scans
│ └── ExportButton.tsx # Exportar reporte JSON
├── lib/
│ ├── scanner.ts # Lógica principal del scanner
│ └── validations.ts # Schemas de validación con Zod
└── public/
└── screenshot.png # Screenshot para el README
```
## 🔐 安全注意事项
此扫描器专为**道德和负责任**的使用而设计:
- ✅ 仅在你拥有或获得明确授权的网站上使用
- ✅ 扫描器不会在服务器上保存数据——所有历史记录均保存在本地(localStorage)
- ✅ 已实施 SSRF 防护,屏蔽对内部网络的访问
- ❌ 未经授权,请勿用于扫描网站
## 📈 路线图
- [ ] 反射型 XSS 检测
- [ ] SQL Injection 检测
- [ ] 带有云端历史记录的身份验证
- [ ] 带有 rate limiting 的公共 API
- [ ] PDF 报告
- [ ] CLI 模式
## 👨💻 作者
**Franco Villagra**
- 作品集:[francoverse.vercel.app](https://francoverse.vercel.app)
- GitHub:[@francovillagra](https://github.com/francovillagra)
## 📄 许可证
MIT — 可自由使用、修改和分发。
标签:React, Syscalls, TypeScript, Web安全, 加密, 安全插件, 漏洞扫描器, 自动化攻击, 蓝队分析