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, 后端开发, 搜索引擎查询, 测试用例, 自定义请求头, 请求拦截