SahilBandhate7/Api-security-monitoring-platform
GitHub: SahilBandhate7/Api-security-monitoring-platform
一个基于 Java 21 与 Next.js 14 构建的生产级 API 安全测试与监控 SaaS 平台,提供自动化漏洞扫描、多租户团队协作、报告导出与订阅计费等完整能力。
Stars: 0 | Forks: 0
# APIScan — API 安全测试与监控平台
一个用于自动化 API 安全测试、漏洞检测和合规监控的生产级 **SaaS 平台**。后端基于 **Java 21 + Spring Boot 3** 构建,前端采用 **Next.js 14**。
## ✨ 功能特性
- **自动化安全扫描** — 内置 8 项检查:SQL Injection、XSS、SSRF、CORS 漏洞配置、Header 安全、Rate Limiting、Auth Bypass、敏感数据暴露
- **多租户组织** — 具备 RBAC(Owner / Admin / Tester)的团队工作区
- **实时扫描状态** — 通过 RabbitMQ 进行异步任务处理,并实时轮询状态
- **漏洞报告** — 包含严重程度评级、证据和修复建议的详细发现
- **PDF 导出** — 可下载的安全报告(Pro 及以上计划)
- **Stripe 计费** — 带有配额限制的订阅管理
- **审计日志** — 跟踪每个组织的所有敏感操作
- **仪表盘分析** — 漏洞趋势、扫描历史、使用量指标
## 🏗️ 技术栈
### 后端
| 层级 | 技术 |
|---|---|
| 运行时 | Java 21 LTS (虚拟线程) |
| 框架 | Spring Boot 3.2 |
| ORM | Spring Data JPA + Hibernate 6 |
| 数据库 | PostgreSQL 15 |
| 缓存 | Redis 7 (Lettuce) |
| 队列 | RabbitMQ 3.13 |
| 安全 | Spring Security 6 + JWT (jjwt) |
| 数据库迁移 | Flyway |
| API 文档 | SpringDoc OpenAPI 3 (Swagger UI) |
| 指标监控 | Actuator + Prometheus + Micrometer |
| 构建工具 | Maven |
### 前端
| 层级 | 技术 |
|---|---|
| 框架 | Next.js 14 (App Router) |
| 样式 | Tailwind CSS + shadcn/ui |
| 状态管理 | Zustand |
| 数据获取 | TanStack Query v5 |
| 表单 | React Hook Form + Zod |
| 图表 | Recharts |
| HTTP 客户端 | Axios |
### 基础设施
| 服务 | 技术 |
|---|---|
| 容器 | Docker + Docker Compose |
| 后端托管 | AWS ECS Fargate |
| 前端托管 | Vercel |
| 数据库 | AWS RDS PostgreSQL |
| 缓存 | AWS ElastiCache (Redis) |
| 队列 | Amazon MQ (RabbitMQ) |
| CI/CD | GitHub Actions |
| 监控 | Prometheus + Grafana |
| 错误追踪 | Sentry |
| 支付 | Stripe |
## 📋 前置条件
- **Java 21** — [下载 Temurin JDK](https://adoptium.net/)
- **Maven 3.9+** — [下载](https://maven.apache.org/download.cgi)
- **Node.js 18+** — [下载](https://nodejs.org/)
- **Docker Desktop** — [下载](https://www.docker.com/products/docker-desktop)
- **Git** — [下载](https://git-scm.com/)
## 🚀 快速开始
### 1. 克隆仓库
```
git clone https://github.com/your-org/apiscan.git
cd apiscan
```
### 2. 启动基础设施服务
```
# 启动 PostgreSQL、Redis、RabbitMQ
docker compose -f docker-compose.dev.yml up -d
```
### 3. 运行后端
```
cd backend
# 复制并配置环境变量
cp .env.example .env
# 使用本地设置编辑 .env
# 使用 Maven 运行
./mvnw spring-boot:run -Dspring-boot.run.profiles=dev
```
后端启动于 ****
Swagger UI 可通过 **** 访问
### 4. 运行前端
```
cd frontend
npm install
npm run dev
```
前端启动于 ****
### 5. 全栈运行 (Docker Compose)
```
# 构建并运行所有内容
docker compose up --build
```
## 📁 项目结构
```
SAAS/
├── frontend/ # Next.js 14 Application
│ ├── src/
│ │ ├── app/ # App Router pages
│ │ ├── components/ # React components
│ │ ├── hooks/ # Custom hooks
│ │ ├── lib/ # API client, utils
│ │ ├── store/ # Zustand stores
│ │ └── types/ # TypeScript types
│ └── package.json
│
├── backend/ # Spring Boot 3 Application
│ ├── src/main/java/com/apiscan/
│ │ ├── config/ # Spring configuration
│ │ ├── auth/ # Authentication module
│ │ ├── organization/ # Org & team management
│ │ ├── project/ # Project management
│ │ ├── scan/ # Scan orchestration
│ │ ├── scanner/ # Security scanning engine
│ │ │ └── checks/ # Individual security checks
│ │ ├── report/ # Report management
│ │ ├── billing/ # Stripe integration
│ │ ├── domain/ # JPA Entities
│ │ ├── repository/ # Spring Data Repositories
│ │ ├── security/ # JWT + RBAC components
│ │ ├── middleware/ # Interceptors (quota, rate-limit)
│ │ └── common/ # Shared utils, DTOs, enums
│ ├── src/main/resources/
│ │ ├── db/migration/ # Flyway SQL migrations
│ │ ├── application.yml # Base config
│ │ ├── application-dev.yml # Dev overrides
│ │ └── application-prod.yml # Production overrides
│ ├── pom.xml
│ └── Dockerfile
│
├── .github/workflows/ # CI/CD pipelines
├── docker-compose.yml # Full stack
├── docker-compose.dev.yml # Infrastructure only
└── README.md
```
## 🔌 API 参考
### 认证 — `POST /api/auth/*`
| 端点 | 描述 |
|---|---|
| `/signup` | 注册新用户 |
| `/login` | 登录 → 获取 access 和 refresh token |
| `/logout` | 吊销 refresh token |
| `/refresh` | 签发新的 access token |
| `/forgot-password` | 发送重置邮件 |
| `/reset-password` | 设置新密码 |
### 组织 — `/api/orgs`
| 方法 | 端点 | 描述 |
|---|---|---|
| POST | `/` | 创建组织 |
| GET | `/{orgId}` | 获取组织详情 |
| PATCH | `/{orgId}` | 更新组织设置 |
| DELETE | `/{orgId}` | 删除组织(仅限 Owner) |
| POST | `/{orgId}/invite` | 邀请团队成员 |
| GET | `/{orgId}/members` | 列出成员 |
### 项目 — `/api/orgs/{orgId}/projects`
| 方法 | 端点 | 描述 |
|---|---|---|
| GET | `/` | 列出项目(分页) |
| POST | `/` | 创建项目 |
| GET | `/{projectId}` | 获取项目及扫描历史 |
| PATCH | `/{projectId}` | 更新项目 |
| DELETE | `/{projectId}` | 删除项目 |
### 扫描 — `/api/orgs/{orgId}/scans`
| 方法 | 端点 | 描述 |
|---|---|---|
| POST | `/` | 触发新扫描 |
| GET | `/` | 列出扫描记录(分页) |
| GET | `/{scanId}` | 完整扫描及漏洞详情 |
| GET | `/{scanId}/status` | 轮询扫描状态 |
| GET | `/{scanId}/report` | 漏洞报告 |
| GET | `/{scanId}/export` | PDF 导出(Pro 及以上计划) |
### 计费 — `/api/billing`
| 方法 | 端点 | 描述 |
|---|---|---|
| GET | `/plans` | 列出可用计划 |
| POST | `/checkout` | Stripe 结账会话 |
| POST | `/portal` | 客户管理门户会话 |
| GET | `/usage` | 当前配额使用情况 |
## 🔐 RBAC 权限矩阵
| 操作 | Owner | Admin | Tester |
|---|---|---|---|
| 删除组织 | ✅ | ❌ | ❌ |
| 邀请 / 移除成员 | ✅ | ✅ | ❌ |
| 更改成员角色 | ✅ | ❌ | ❌ |
| 管理计费 | ✅ | ❌ | ❌ |
| 创建 / 删除项目 | ✅ | ✅ | ❌ |
| 触发扫描 | ✅ | ✅ | ✅ |
| 查看报告 | ✅ | ✅ | ✅ |
| 导出 PDF 报告 | ✅ | ✅ | ❌ |
| 查看审计日志 | ✅ | ✅ | ❌ |
## 💰 订阅计划
| 功能 | Free | Pro ($29/月) | Enterprise ($99/月) |
|---|---|---|---|
| 每月扫描次数 | 50 | 1,000 | 不限 |
| 团队成员 | 1 | 10 | 不限 |
| 项目数量 | 2 | 20 | 不限 |
| 安全检查 | 3 项基础检查 | 全部 8 项 | 全部 + 自定义 |
| PDF 导出 | ❌ | ✅ | ✅ |
| 审计日志 | ❌ | 30 天 | 1 年 |
| API 访问权限 | ❌ | ✅ | ✅ |
| 优先支持 | ❌ | ❌ | ✅ |
## 🌍 环境变量
完整列表请参见 [`backend/.env.example`](backend/.env.example)。主要变量:
| 变量 | 描述 |
|---|---|
| `DATABASE_URL` | PostgreSQL JDBC 连接字符串 |
| `REDIS_URL` | Redis 连接 URL |
| `RABBITMQ_HOST` | RabbitMQ 主机名 |
| `JWT_ACCESS_SECRET` | JWT 签名密钥(≥64 个字符) |
| `JWT_REFRESH_SECRET` | JWT 刷新密钥(≥64 个字符) |
| `STRIPE_SECRET_KEY` | Stripe API 密钥 |
| `STRIPE_WEBHOOK_SECRET` | Stripe webhook 签名密钥 |
| `SENTRY_DSN` | Sentry 错误追踪 DSN |
| `FRONTEND_URL` | 前端应用 URL(用于 CORS) |
## 📦 部署
### 后端 → AWS ECS Fargate
1. 推送 Docker 镜像到 ECR
2. ECS 服务在镜像更新时自动部署
3. 使用 AWS Secrets Manager 管理环境变量
4. RDS PostgreSQL + ElastiCache Redis + Amazon MQ
### 前端 → Vercel
1. 将 GitHub 仓库连接到 Vercel
2. 推送到 `main` 分支时自动部署
3. 在 Vercel 仪表盘中配置环境变量
### CI/CD → GitHub Actions
- **后端**:测试 → 构建 Docker → 推送至 ECR → 部署至 ECS
- **前端**:Lint → 构建 → 部署至 Vercel
## 📄 许可证
本项目为专有软件。保留所有权利。
标签:API安全, CISA项目, JSON输出, SaaS平台, Spring Boot, 后端开发, 搜索引擎查询, 测试用例, 自定义请求头, 请求拦截