Uttam-Mahata/RootAccess

GitHub: Uttam-Mahata/RootAccess

基于Go和Angular构建的全栈CTF竞赛平台,支持团队协作和动态积分机制。

Stars: 2 | Forks: 0

# RootAccess CTF 平台 一个高性能、全栈的 Capture The Flag (CTF) 平台,后端使用 Go (Gin) 构建,前端使用 Angular (v21) 构建。通过 Redis 缓存和 Turso DB (LibSQL) 实现高性能数据存储,专为可扩展性而设计。 ## 🚀 功能特性 - **动态积分**:挑战的分数随着更多团队解出而减少(CTFd 公式)。 - **团队赛制**:创建或加入团队,共同解决挑战并攀登排行榜。 - **实时记分板**:缓存的全球和团队排名。 - **后台管理**:用于创建挑战、广播通知和用户管理的专用控制面板。 - **强大的安全性**: - 带有 HTTP-only Cookie 的 JWT 身份验证。 - Flag 提交的速率限制。 - 邮箱验证和安全密码重置。 - 基于角色的访问控制 (RBAC)。 - **性能优化**: - **Redis 缓存**:频繁访问的数据(如记分板)在内存中缓存。 - **Turso DB (LibSQL)**:边缘数据库集成,确保全球快速读取和高并发。 ## 🏗️ 架构图 [![架构图](https://raw.githubusercontent.com/Uttam-Mahata/RootAccess/main/rootaccess-aws.png)](https://raw.githubusercontent.com/Uttam-Mahata/RootAccess/main/rootaccess-aws.png) ### 后端 - **语言**:Go 1.24 - **框架**:Gin (HTTP web framework) - **主数据库**:Turso DB (LibSQL) - **缓存**:Redis 7.x - **邮件**:用于验证和重置的 SMTP 集成。 ### 前端 - **框架**:Angular 21 - **样式**:Tailwind CSS v4 & SCSS - **UX/UI**:Material Design 原则,支持自定义深色/浅色主题。 ## 📋 前置条件 - **Docker & Docker Compose**(推荐用于生产环境) - **Go**:版本 1.24+(用于本地开发) - **Node.js**:版本 22+(用于本地开发) - **Turso CLI**:可选(用于 DB 管理) - **Redis**:版本 6.0+ ## 🛠️ 设置说明 ### 生产部署 (Docker) 1. **克隆仓库:** git clone https://github.com/Uttam-Mahata/RootAccess.git cd RootAccess 2. **配置环境:** 复制示例 compose 文件并更新您的凭据: cp docker-compose.prod.example.yml docker-compose.prod.yml # 使用您的 SMTP, DB 和 JWT 密钥编辑 docker-compose.prod.yml ### 本地开发 #### 后端 1. `cd backend` 2. `cp .env.example .env`(配置您的 Turso DB/Redis/SMTP) 3. `go mod download` 4. `go run cmd/api/main.go` #### 前端 1. `cd frontend` 2. `npm install` 3. `npm start` ## 🔑 管理员设置 注册用户默认为普通用户。要创建初始管理员: ## 🌐 API 端点 ### 公开 - `POST /auth/register` - 用户注册 - `POST /auth/login` - 用户登录(设置 HTTP-only Cookie) - `GET /scoreboard` - 获取缓存的排行榜 - `GET /notifications` - 查看活动的管理员广播 ### 受保护 (用户) - `POST /challenges/:id/submit` - 提交 Flag(有速率限制) - `POST /teams` - 创建团队 - `POST /teams/join/:code` - 通过邀请码加入团队 ### 管理员 - `POST /admin/challenges` - 创建新挑战 - `POST /admin/notifications` - 广播公告 - `POST /admin/notifications/:id/toggle` - 激活/停用广播 ## 📁 项目结构 ``` RootAccess/ ├── backend/ │ ├── cmd/api/main.go # API Entry point │ ├── cmd/admin/main.go # Admin CLI tool │ ├── internal/ │ │ ├── database/ # Turso DB & Redis logic │ │ ├── services/ # Business logic (Caching, Auth, etc.) │ │ └── handlers/ # HTTP Controllers ├── frontend/ │ ├── src/app/components/ # Angular UI Components │ └── src/app/services/ # Frontend API services ├── docker-compose.prod.yml # Production orchestration └── README.md ``` ## 🛡️ 安全注意事项 - **密钥**:永远不要将 `.env` 或 `docker-compose.prod.yml` 提交到版本控制。 - **JWT**:在生产环境中,确保 `JWT_SECRET` 是一个随机的 32 位以上字符串。 - **SMTP**:端口 25 通常被 ISP 屏蔽;请使用端口 587 (STARTTLS) 或 465 (SSL)。 为 CTF 社区用 ❤️ 制作
标签:Angular, CISA项目, CTF平台, Gin框架, Go语言, Grype, HTTPX, JWT认证, LibSQL, Material Design, RBAC, Redis缓存, Tailwind CSS, Turso数据库, Web安全, 动态积分, 后端开发, 团队竞赛, 实时记分板, 性能优化, 搜索引擎查询, 教育平台, 日志审计, 检测绕过, 用户管理, 程序破解, 竞赛系统, 管理后台, 网络安全, 蓝队分析, 角色访问控制, 请求拦截, 边缘数据库, 限流, 隐私保护, 高并发