|
10 | 10 |
|
11 | 11 | ## 🚀 快速开始 |
12 | 12 |
|
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方式(通用部署) |
14 | 32 |
|
15 | 33 | ```bash |
16 | 34 | # 1. 克隆项目 |
@@ -4365,3 +4383,248 @@ docker build -t javaweb-security:latest -f Dockerfile . |
4365 | 4383 | 4. 可以考虑将跳转链接改为实际的URL参数格式(如`?page=demo&payload=order&type=attack`) |
4366 | 4384 |
|
4367 | 4385 | --- |
| 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 | +--- |
0 commit comments