JayBagdariya/CyberShield-AI-Powered-Vulnerability-Scanner
GitHub: JayBagdariya/CyberShield-AI-Powered-Vulnerability-Scanner
CyberShield 是一款基于 Web 的教育型被动漏洞扫描器,帮助用户对已授权网站进行非破坏性的安全检查并生成可下载的评分报告。
Stars: 0 | Forks: 0
# CyberShield 漏洞扫描器
一款基于 Web 的教育性漏洞测试工具,用于防御性网络安全目的。CyberShield 执行**被动、非破坏性的安全检查**,以帮助学生和安全爱好者了解常见的 Web 安全问题。
## 功能
- **现代响应式 UI**,采用暗色主题
- **简单的身份验证**,采用基于 JWT 的登录方式
- **仪表盘**,提供扫描统计信息和近期历史记录
- **漏洞扫描**,采用安全的被动检查方式:
- HTTP Security Headers 分析
- SSL/TLS 证书信息
- 常见开放端口检测
- 服务器信息披露
- 缺失的安全标头
- robots.txt 可用性
- security.txt 可用性 (RFC 9116)
- **清晰的结果表格**,包含严重程度、描述和建议
- **生成 PDF 报告**以供下载
- **SQLite 数据库**用于持久化扫描历史
- **搜索和筛选**之前的扫描记录
- 扫描操作期间的**加载动画**
- 针对无效 URL 和网络故障的**错误处理**
## 项目结构
```
cybershield-vulnerability-scanner/
├── backend/
│ └── server.js # Express server entry point
├── controllers/
│ ├── authController.js # Login/logout handlers
│ ├── scanController.js # Scan CRUD handlers
│ └── reportController.js # PDF report handlers
├── database/
│ ├── init.js # SQLite setup and seeding
│ └── cybershield.db # SQLite database (auto-created)
├── frontend/
│ ├── css/
│ │ └── styles.css # Application styles
│ ├── js/
│ │ ├── api.js # Shared API utilities
│ │ ├── auth.js # Login page logic
│ │ ├── dashboard.js # Dashboard page logic
│ │ ├── scan.js # Scan page logic
│ │ └── history.js # History page logic
│ ├── index.html # Login page
│ ├── dashboard.html # Dashboard
│ ├── scan.html # New scan page
│ └── history.html # Scan history page
├── middleware/
│ └── authMiddleware.js # JWT authentication middleware
├── routes/
│ ├── auth.js # Auth API routes
│ ├── scans.js # Scan API routes
│ └── reports.js # Report API routes
├── services/
│ ├── authService.js # Authentication logic
│ ├── scanService.js # Vulnerability scan engine
│ └── pdfService.js # PDF report generator
├── package.json
└── README.md
```
## 前置条件
- [Node.js](https://nodejs.org/) v18 或更高版本
- npm(随 Node.js 一起提供)
该项目使用 **sql.js**(纯 JavaScript 实现的 SQLite),因此在 Windows 上无需使用原生构建工具。
## 安装说明
1. **克隆或下载项目:**
cd cybershield-vulnerability-scanner
2. **安装依赖:**
npm install
3. **启动服务器:**
npm start
4. **在浏览器中打开:**
导航至 [http://localhost:3000](http://localhost:3000)
## 默认登录凭据
| 用户名 | 密码 |
|----------|-----------|
| admin | admin123 |
## 使用说明
### 运行扫描
1. 使用默认凭据登录。
2. 从侧边栏导航至 **New Scan**。
3. 输入**网站 URL**(例如 `https://example.com`)和/或 **IP 地址**(例如 `8.8.8.8`)。
4. 点击 **Start Scan** 并等待结果(通常需要 10–30 秒)。
5. 在结果表中查看发现的问题,并按严重程度排序。
6. 点击 **Download PDF** 保存报告。
### 查看历史记录
1. 从侧边栏导航至 **Scan History**。
2. 使用搜索栏按 URL 或 IP 地址进行筛选。
3. 使用严重程度下拉菜单筛选包含特定发现的扫描。
4. 点击任意扫描旁边的 **View** 即可查看详细结果。
5. 从详情面板下载 PDF 报告。
### 仪表盘
仪表盘显示:
- 执行的扫描总数
- 高、中、低严重程度的发现汇总计数
- 最近五次扫描的摘要数据
## 执行的安全检查
| 检查项目 | 描述 | 严重程度 |
|-------|-------------|----------|
| HTTP Security Headers | 检查 HSTS、CSP、X-Frame-Options 等 | High–Low |
| SSL 证书 | 验证证书过期时间和配置 | High–Low |
| 常见开放端口 | 对端口 21、22、25、80、443、3306、8080、8443 进行 TCP 连接检查 | Medium–High |
| 服务器信息 | 检测 Server 标头信息披露 | Low |
| robots.txt | 检查可用性及潜在的路径泄露 | Low |
| security.txt | 检查 RFC 9116 安全联系文件 | Medium |
## API Endpoints
| 方法 | Endpoint | 描述 |
|--------|----------|-------------|
| POST | `/api/auth/login` | 验证用户身份 |
| POST | `/api/auth/logout` | 清除会话 |
| GET | `/api/auth/me` | 获取当前用户 |
| POST | `/api/scans` | 运行新扫描 |
| GET | `/api/scans` | 列出扫描历史 |
| GET | `/api/scans/:id` | 获取扫描详情 |
| GET | `/api/scans/stats/dashboard` | 仪表盘统计信息 |
| GET | `/api/reports/:scanId/pdf` | 下载 PDF 报告 |
| GET | `/api/health` | 健康检查 |
## 环境变量
| 变量 | 默认值 | 描述 |
|----------|---------|-------------|
| `PORT` | `3000` | 服务器端口 |
| `JWT_SECRET` | (内置) | JWT 签名密钥 |
## 本工具不会执行的操作
本工具特意排除了以下行为:
- Exploit 代码或 payload
- 暴力破解或密码攻击
- SQL 注入或 XSS 利用
- 拒绝服务攻击
- 恶意软件或未经授权的访问尝试
所有检查都是**被动且非破坏性的**,旨在学习防御性安全概念。
## 许可证
MIT 许可证 — 仅供教育目的使用。
标签:GNU通用公共许可证, MITM代理, Node.js, SQLite, Web安全, 加密, 插件系统, 数据可视化, 漏洞扫描器, 网络安全教育, 蓝队分析, 调试辅助