travondatrack/scanvul-Platform

GitHub: travondatrack/scanvul-Platform

一款集成传统扫描引擎与 AI 分析的 Web 端源代码漏洞检测平台,帮助团队自动化发现安全缺陷并获取修复建议。

Stars: 1 | Forks: 0

# ScanVul AI ScanVul AI 是一个用于创建项目、触发安全扫描以及审查漏洞发现结果的 Web 平台。 当前项目分为以下几个部分: - `apps/web`:Next.js 15 仪表板、身份验证、项目、扫描、报告 - `apps/api`:FastAPI 扫描器 API 及后台扫描执行 - `docker-compose.yml`:可选的 full stack 服务 ## 主要功能 - 通过 NextAuth 进行邮箱/密码身份验证,并通过 OTP 邮件进行验证 - Google OAuth 登录,并包含已验证的 Google 邮箱检查 - 针对 GitHub 仓库的项目管理 - 针对每个项目进行手动扫描触发 - 扫描历史和报告详情页面 - 包含严重程度、证据、修复建议和状态操作的发现结果面板 - 支持 repo URL、压缩包或粘贴的源代码作为输入的扫描器 API - 已认证仪表板内的浅色/深色主题 - 公开的登录/注册页面固定为浅色模式 ## 技术栈 前端: - Next.js 15 - React 19 - Tailwind CSS - NextAuth - Prisma Client 后端: - FastAPI - SQLAlchemy - 支持 Celery/Redis - Semgrep、Bandit、secret 扫描、AI 审查器适配器 - 本地存储或与 MinIO 兼容的 object storage ## 项目结构 ``` apps/ web/ Next.js app, auth, dashboard, Prisma schema api/ FastAPI app, scanner engines, worker tasks docker-compose.yml .env.example ``` ## 环境变量 复制示例文件并根据您的机器编辑相关值: ``` Copy-Item .env.example .env ``` 重要提示: - `apps/web/prisma/schema.prisma` 当前使用 `provider = "mysql"`。 - 在使用 Prisma 运行 Web 应用时,请将 `DATABASE_URL` 设置为兼容 MySQL 的 URL。对于当前的 Aiven 设置,请使用 `mysql://avnadmin:@mysql-3ad09837-vlogsnqt720-e2a0.h.aivencloud.com:23011/defaultdb?ssl-mode=REQUIRED`。 - FastAPI API 可以使用 SQLite 进行本地扫描器开发,但 Next.js 仪表板的身份验证/项目表使用的是 Prisma。 - 仅当您希望启用 AI 分类时,才需要设置 `LLM_API_KEY`。 - 将 `NEXTAUTH_URL` 设置为 Web 源,并生成一个高强度的 `NEXTAUTH_SECRET`。 - 配置 `SMTP_HOST`、`SMTP_PORT`、`SMTP_USER`、`SMTP_PASS` 和 `SMTP_FROM`,以便在注册时可以发送 OTP 邮件。 - 仅当设置了 `GOOGLE_CLIENT_ID` 和 `GOOGLE_CLIENT_SECRET` 时,才会启用 Google 登录。 Google Cloud OAuth 回调 URL: - 本地:`http://localhost:3000/api/auth/callback/google` - 生产环境:`https://YOUR_DOMAIN/api/auth/callback/google` 身份验证流程: 1. 用户使用邮箱/密码进行注册。 2. 应用会对密码进行哈希处理,创建一个 `emailVerified = null` 的活跃用户,生成一个经过哈希处理的 6 位 OTP,并通过 SMTP 发送该 OTP。 3. 用户在注册页面上提交 OTP。有效的 OTP 会设置 `emailVerified` 并消耗掉该 OTP。 4. UI 使用凭证登录并重定向到 `/projects`。 OTP 验证码在 10 分钟后过期,仅以哈希形式存储,并且在连续 5 次错误尝试后会被拒绝。 ## 本地开发 安装并准备 Web 应用: ``` cd apps/web npm install npx prisma generate npx prisma db push npm run dev ``` PowerShell 本地设置示例: ``` Copy-Item .env.example .env # 编辑 .env:设置 Aiven DATABASE_URL、NEXTAUTH_SECRET、SMTP_*,以及可选的 GOOGLE_*。 cd apps/web npm install npx prisma generate npx prisma db push npm run dev ``` 在另一个终端中启动 API: ``` cd apps/api python -m venv .venv .\.venv\Scripts\Activate.ps1 python -m pip install -r requirements.txt python -m uvicorn app.main:app --reload --host 0.0.0.0 --port 8000 ``` 打开: - Web:http://localhost:3000 - API 文档:http://localhost:8000/docs ## 实用命令 前端类型检查: ``` cd apps/web npx tsc --noEmit --pretty false ``` 前端测试: ``` cd apps/web npm test -- --runInBand ``` 前端构建: ``` cd apps/web npm run build ``` API 冒烟测试: ``` cd apps/api python -m pytest ``` ## Docker compose 文件会启动 web、API、worker、Redis、MinIO 以及一个数据库服务。 ``` docker compose up --build ``` 在使用 Docker 进行完整运行之前,请确保 `.env` 数据库设置与 `apps/web/prisma/schema.prisma` 使用的 Prisma provider 匹配。 ## 当前注意事项 - 构建可能需要网络访问权限,因为 `apps/web/app/layout.tsx` 通过 `next/font` 导入了 Google `Geist` 字体。 - 仪表板主题切换仅在登录后才有效。 - 登录和注册页面被特意强制设置为浅色模式。
标签:AI代码审计, AV绕过, FastAPI, 搜索引擎查询, 源代码扫描, 自动化攻击, 请求拦截, 逆向工具, 静态应用安全测试