Skip to content

Commit 2a89bdb

Browse files
committed
更新部署方式
1 parent 2bb7b33 commit 2a89bdb

157 files changed

Lines changed: 3603 additions & 205 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/docker-build.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -174,3 +174,5 @@ jobs:
174174
echo "Full Stack: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME_FULL }}"
175175
176176
177+
178+

Dockerfile.backend

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,3 +76,5 @@ ENV SERVER_PORT=8080
7676
ENTRYPOINT ["sh", "-c", "java $JAVA_OPTS -jar app.jar"]
7777

7878

79+
80+

Dockerfile.frontend

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,3 +43,5 @@ EXPOSE 80
4343
CMD ["nginx", "-g", "daemon off;"]
4444

4545

46+
47+

README.md

Lines changed: 264 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,25 @@
1010

1111
## 🚀 快速开始
1212

13-
### Docker方式(推荐:前后端分离部署)
13+
### Ubuntu 22.04 LTS 一键部署(推荐)
14+
15+
```bash
16+
# 1. 克隆项目
17+
git clone <repository-url>
18+
cd javaweb安全教学系统
19+
20+
# 2. 运行自动部署脚本(自动安装Docker、配置环境、启动服务)
21+
chmod +x scripts/ubuntu-docker-deploy.sh
22+
./scripts/ubuntu-docker-deploy.sh
23+
24+
# 3. 访问应用
25+
# 前端: http://localhost:80
26+
# 后端API: http://localhost:8080
27+
```
28+
29+
📖 **详细文档**: [Ubuntu 22.04 LTS 完整部署指南](docs/deployment/UBUNTU_DOCKER_DEPLOYMENT.md) | [快速开始](docs/deployment/UBUNTU_QUICK_START.md)
30+
31+
### Docker方式(通用部署)
1432

1533
```bash
1634
# 1. 克隆项目
@@ -4365,3 +4383,248 @@ docker build -t javaweb-security:latest -f Dockerfile .
43654383
4. 可以考虑将跳转链接改为实际的URL参数格式(如`?page=demo&payload=order&type=attack`
43664384

43674385
---
4386+
4387+
## 2025-01-XX 会话总结:修复注册重复提示和安全风险分析
4388+
4389+
### 会话主要目的
4390+
1. 修复注册成功后出现两个重复提示的问题
4391+
2. 分析系统在公网环境下无限制注册和登录的安全风险
4392+
3. 提供安全加固方案和实施建议
4393+
4394+
### 完成的主要任务
4395+
4396+
#### 1. 修复注册成功重复提示问题
4397+
**问题描述**
4398+
- 注册成功后跳转到登录页面时,前端会显示两个"注册成功"的提示消息
4399+
- 一个在`RegisterView.vue`组件中,另一个在`auth.ts` store中
4400+
4401+
**解决方案**
4402+
- 删除了`RegisterView.vue`中的重复提示(第487行)
4403+
- 保留`auth.ts` store中的统一消息提示,符合单一职责原则
4404+
- 消息提示统一在store中管理,便于维护
4405+
4406+
**修改文件**
4407+
- `src/frontend/src/views/auth/RegisterView.vue`
4408+
- 删除重复的`ElMessage.success()`调用
4409+
- 添加注释说明成功消息已在store中显示
4410+
4411+
#### 2. 安全风险分析
4412+
**发现的安全问题**
4413+
4414+
1. **无速率限制(Rate Limiting)** 🔴 高危
4415+
- 注册接口无频率限制,可被恶意批量注册
4416+
- 登录接口无频率限制,可被暴力破解攻击
4417+
- 可能导致数据库资源耗尽、系统性能下降
4418+
4419+
2. **无验证码保护** 🔴 高危
4420+
- 注册和登录接口都没有验证码验证
4421+
- 无法防止自动化攻击
4422+
4423+
3. **无IP级别限制** 🟡 中危
4424+
- 同一IP可无限制注册和登录
4425+
- 无法防止分布式攻击
4426+
4427+
4. **无账户注册频率限制** 🟡 中危
4428+
- 同一邮箱可多次尝试注册(虽然有唯一性检查)
4429+
- 无每日注册次数限制
4430+
4431+
**已实现的安全措施**
4432+
- ✅ BCrypt密码加密(强度10)
4433+
- ✅ 登录失败保护(5次失败锁定30分钟)
4434+
- ✅ JWT认证机制
4435+
- ✅ CORS配置
4436+
4437+
#### 3. 安全加固方案文档
4438+
**创建文档**`docs/security-analysis.md`
4439+
4440+
**文档内容**
4441+
1. 当前安全状况分析(已实现和缺失的安全措施)
4442+
2. 安全风险影响分析(无限制注册和登录的具体影响)
4443+
3. 安全加固方案(速率限制、验证码、IP限制等)
4444+
4. 实施优先级建议(高、中、低优先级)
4445+
5. 监控和告警建议
4446+
4447+
**推荐方案**
4448+
- **速率限制**:使用Bucket4j + Redis实现
4449+
- 注册:每个IP每小时最多5次
4450+
- 登录:每个IP每分钟最多10次
4451+
- **验证码保护**:使用Google reCAPTCHA v3
4452+
- **IP黑名单**:自动封禁恶意IP
4453+
4454+
### 关键决策和解决方案
4455+
4456+
1. **消息提示统一管理**
4457+
- 决策:将消息提示统一在store中管理
4458+
- 原因:符合单一职责原则,便于统一管理和维护
4459+
- 效果:避免重复提示,代码更清晰
4460+
4461+
2. **安全风险评估**
4462+
- 决策:创建详细的安全分析文档
4463+
- 原因:帮助理解风险,提供可执行的解决方案
4464+
- 效果:为后续安全加固提供指导
4465+
4466+
3. **优先级划分**
4467+
- 高优先级:速率限制(注册和登录)
4468+
- 中优先级:验证码保护、IP黑名单
4469+
- 低优先级:账户注册频率限制、异常检测
4470+
4471+
### 使用的技术栈
4472+
- **前端**:Vue 3 + TypeScript + Element Plus
4473+
- **后端**:Spring Boot + Spring Security + JWT
4474+
- **安全分析**:OWASP安全标准
4475+
4476+
### 修改的文件
4477+
1. `src/frontend/src/views/auth/RegisterView.vue`
4478+
- 删除重复的注册成功提示
4479+
- 添加注释说明
4480+
4481+
2. `docs/security-analysis.md`(新建)
4482+
- 完整的安全风险分析文档
4483+
- 包含问题分析、影响评估、解决方案和实施建议
4484+
4485+
### 代码风格
4486+
- 保持与现有代码风格一致
4487+
- 添加清晰的注释说明
4488+
- 遵循单一职责原则
4489+
4490+
### 安全建议总结
4491+
4492+
**如果系统发布到公网,无限制注册和登录会造成以下重大影响**
4493+
4494+
1. **数据库资源耗尽**
4495+
- 恶意用户批量注册大量账户
4496+
- 数据库存储空间快速耗尽
4497+
4498+
2. **系统性能下降**
4499+
- 大量请求占用服务器资源
4500+
- 数据库连接池耗尽
4501+
- 响应时间变慢
4502+
4503+
3. **暴力破解攻击**
4504+
- 攻击者可无限次尝试密码
4505+
- 弱密码容易被破解
4506+
4507+
4. **DDoS攻击风险**
4508+
- 大量请求导致服务器过载
4509+
- 可能导致服务不可用
4510+
4511+
**建议立即实施**
4512+
1. 注册和登录接口的速率限制(高优先级)
4513+
2. 验证码保护(高优先级)
4514+
4515+
这两项措施可以有效防止批量注册和暴力破解攻击,保护系统安全。
4516+
4517+
---
4518+
4519+
## 2025-01-XX 会话总结:移除Vue DevTools确保生产环境安全
4520+
4521+
### 会话主要目的
4522+
1. 分析Vue DevTools在生产环境的安全风险
4523+
2. 决定完全移除DevTools以避免安全风险
4524+
3. 清理所有DevTools相关配置和依赖
4525+
4526+
### 完成的主要任务
4527+
4528+
#### 1. 安全风险分析
4529+
**发现的风险**
4530+
- 🔴 **高风险**:如果DevTools泄露到生产环境,可能导致:
4531+
- 应用内部结构泄露(组件树、路由、Store状态)
4532+
- API端点泄露
4533+
- 业务逻辑泄露
4534+
- 调试能力暴露
4535+
- 敏感数据泄露(用户token、业务数据)
4536+
4537+
**用户担忧**
4538+
- 未使用过DevTools
4539+
- 担心误用开发环境配置作为生产环境
4540+
- 希望从根本上消除风险
4541+
4542+
#### 2. 完全移除DevTools
4543+
**移除内容**
4544+
1. ✅ 删除 `package.json` 中的 `vite-plugin-vue-devtools` 依赖
4545+
2. ✅ 删除 `vite.config.ts` 中的DevTools导入和配置
4546+
3. ✅ 删除 `env.d.ts` 中的DevTools类型声明
4547+
4. ✅ 删除构建验证脚本(不再需要)
4548+
5. ✅ 更新安全分析文档
4549+
4550+
**修改文件**
4551+
- `src/frontend/package.json`
4552+
- 删除 `vite-plugin-vue-devtools` 依赖
4553+
- `src/frontend/vite.config.ts`
4554+
- 删除 `VueDevTools` 导入
4555+
- 删除DevTools插件配置
4556+
- `src/frontend/env.d.ts`
4557+
- 删除 `__VUE_DEVTOOLS_GLOBAL_HOOK__` 类型声明
4558+
- `scripts/verify-build.js`
4559+
- 删除文件(不再需要)
4560+
- `docs/devtools-security-analysis.md`
4561+
- 更新文档,说明已完全移除
4562+
4563+
### 关键决策和解决方案
4564+
4565+
1. **完全移除 vs 环境控制**
4566+
- 决策:选择完全移除DevTools
4567+
- 原因:
4568+
- 用户未使用过DevTools
4569+
- 避免误用开发环境配置的风险
4570+
- 从根本上消除安全风险
4571+
- 效果:无论使用什么环境配置,都不会包含DevTools
4572+
4573+
2. **安全保证**
4574+
- 不再依赖环境变量控制
4575+
- 即使误用开发环境配置,也不会包含DevTools
4576+
- 简化项目依赖,减少安全隐患
4577+
4578+
### 使用的技术栈
4579+
- **前端**:Vue 3 + TypeScript + Vite
4580+
- **构建工具**:Vite
4581+
4582+
### 修改的文件
4583+
1. `src/frontend/package.json`
4584+
- 删除DevTools依赖
4585+
4586+
2. `src/frontend/vite.config.ts`
4587+
- 删除DevTools配置
4588+
4589+
3. `src/frontend/env.d.ts`
4590+
- 删除DevTools类型声明
4591+
4592+
4. `scripts/verify-build.js`
4593+
- 删除文件
4594+
4595+
5. `docs/devtools-security-analysis.md`
4596+
- 更新文档说明
4597+
4598+
### 代码风格
4599+
- 保持代码简洁
4600+
- 删除不必要的依赖和配置
4601+
- 确保生产环境安全
4602+
4603+
### 后续操作建议
4604+
4605+
**需要执行的操作**
4606+
```bash
4607+
# 更新package-lock.json,移除DevTools相关依赖
4608+
cd src/frontend
4609+
npm install
4610+
```
4611+
4612+
**验证**
4613+
- ✅ 确认 `package-lock.json` 中不再包含 `vite-plugin-vue-devtools`
4614+
- ✅ 确认构建时不会包含DevTools相关代码
4615+
- ✅ 确认生产环境部署安全
4616+
4617+
### 安全建议总结
4618+
4619+
**移除DevTools的优势**
4620+
1.**从根本上消除风险**:不再依赖环境变量控制
4621+
2.**避免配置错误**:即使误用开发环境配置,也不会包含DevTools
4622+
3.**简化依赖**:减少不必要的开发依赖
4623+
4.**生产环境安全**:无论使用什么配置,都不会包含DevTools
4624+
4625+
**最终状态**
4626+
- 🟢 **无风险**:DevTools已完全移除
4627+
-**GitHub安全**:可以安全上传到GitHub
4628+
-**生产部署安全**:可以安全部署到公网
4629+
4630+
---

docker/nginx.conf

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,3 +47,5 @@ server {
4747
}
4848

4949

50+
51+

scripts/cleanup.sh

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,3 +156,5 @@ echo " git status --ignored"
156156
echo ""
157157

158158

159+
160+

0 commit comments

Comments
 (0)