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)** ![Scanner 截图](https://raw.githubusercontent.com/francovillagra/web-vulnerability-scanner/main/public/screenshot.webp) ## ✨ 功能 ### 🔍 漏洞检测 - **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安全, 加密, 安全插件, 漏洞扫描器, 自动化攻击, 蓝队分析