AWD系统软件设计描述
AWD系统数据库设计步骤
一、数据库需求分析
目标:明确系统需要存储哪些数据,以及数据之间的关系。
1. 系统功能模块分析
假设我们要开发一个AWD(攻防对抗)竞赛平台,核心功能包括:
用户管理:区分管理员(设置比赛)、裁判(监督)、参赛队伍(攻击/防守)。
比赛管理:创建比赛、分配靶机(每个队伍一个虚拟机)、设置比赛时间。
攻防对抗:记录攻击行为(如Web漏洞利用、SSH爆破)、验证攻击是否有效。
实时得分:根据攻击成功/防御成功自动计算队伍得分。
2. 数据需求举例
需要存储的具体数据:
用户数据:用户ID、账号、加密密码、角色(管理员/裁判/队伍)、所属队伍。
比赛数据:比赛ID、名称、开始时间、结束时间、状态(未开始/进行中/已结束)。
靶机数据:靶机IP地址、所属比赛、关联队伍、是否存活(是否被攻破)。 攻击日志:攻击时间、攻击类型、攻击方队伍、被攻击方队伍、攻击是否有效。
得分数据:队伍ID、比赛ID、当前得分、扣分记录。
二、概念结构设计(ER图)
目标:用图形化的方式描述数据之间的关系,类似画思维导图。
1. 核心实体和属性
用户(User)
属性:用户ID、用户名、密码、角色、所属队伍ID。
比赛(Contest)
属性:比赛ID、名称、开始时间、结束时间、状态。
靶机(Instance)
属性:靶机ID、IP地址、所属比赛ID、关联队伍ID、存活状态。
攻击日志(AttackLog)
属性:日志ID、攻击类型、时间、攻击方队伍、被攻击方队伍、是否有效。
2. 实体间的关系
用户和队伍:一个队伍有多个用户(1:N)。
比赛和靶机:一场比赛包含多个靶机(1:N)。
攻击日志和得分:一次有效攻击会导致得分变化(扣分/加分)。
示例: 用户“张三”属于“红队”,红队参加了“2023网络安全大赛”,比赛中红队的靶机IP是192.168.1.101。 红队对蓝队发起了一次Web攻击,攻击有效,红队加10分,蓝队扣5分。
三、逻辑结构设计(关系模型)
目标:将ER图转化为具体的数据库表结构,并保证数据不重复。
1. 核心表设计
- 用户表(User)
|
字段名 |
类型 |
说明 |
|
UserID |
整数(主键) |
用户唯一ID,自动增长 |
|
Username |
字符串 |
用户名(不可重复) |
|
Password |
字符串 |
加密存储(如bcrypt) |
|
Role |
枚举类型 |
Admin(管理员)/Judge(裁判)/Team(参赛队) |
|
TeamID |
整数 |
关联到队伍表(Team) |
- 攻击日志表(AttackLog)
|
字段名 |
类型 |
说明 |
|
LogID |
整数(主键) |
日志唯一ID |
|
AttackType |
枚举类型 |
Web/SSH/PWN(攻击类型) |
|
Timestamp |
时间戳 |
攻击发生时间 |
|
SourceTeam |
整数 |
攻击方队伍ID |
|
TargetTeam |
整数 |
被攻击方队伍ID |
|
IsValid |
布尔值 |
攻击是否有效(True/False) |
2. 表关联示例
- 用户表 → 队伍表:通过TeamID关联,表示用户属于哪个队伍。
- 攻击日志表 → 得分表:当IsValid=True时,触发得分更新(如扣分)。
3. 如何避免数据冗余?
- 用ID代替名称:例如用户表中存TeamID(整数),而不是直接存队伍名称(字符串)。
- 枚举字段:如Role字段直接用Admin/Judge/Team,而不是单独建角色表。
四、物理结构设计
目标:优化数据库的存储和查询效率,让系统跑得更快。
1. 数据库选型
-
选择MySQL 8.0,因为它免费、稳定,适合学生项目。
2. 索引优化(加速查询)
-
用户表:对Username字段加唯一索引(快速登录验证)。
-
攻击日志表:对Timestamp字段加索引(按时间查攻击记录更快)。
3. 分区与分表
- 攻击日志表按时间分区:例如每月一个分区,避免单表数据过大。
-
类似把日记按月份分文件夹存放,找起来更快。
-
4. 安全设计
-
密码加密:使用bcrypt算法加密,即使数据库泄露,密码也不明文显示。
-
定期备份:每天自动备份数据到云存储(如阿里云OSS)。
总结
-
需求分析:想清楚系统需要存什么数据(用户、比赛、攻击记录等)。
-
概念设计:画ER图明确数据之间的关系(用户属于队伍、比赛包含靶机)。
-
逻辑设计:设计具体的表结构,用外键关联数据(如User表的TeamID)。
-
物理设计:优化存储和查询效率(加索引、分区、加密)。
AWD攻防竞赛系统用户界面需求分析与设计
设计目标:为管理员、裁判、参赛队三类用户提供直观、高效的操作界面,满足攻防对抗的实时性需求,同时降低学习成本。
一、用户界面需求分析
-
用户特性分析
-
管理员:技术能力强,需要复杂配置功能(如创建竞赛、分配靶机、设置漏洞)。
-
裁判:需实时监控比赛状态,审核攻击有效性,要求界面数据清晰、可快速操作。
-
参赛队:聚焦攻防操作(攻击对手、修复漏洞),需要界面简洁、反馈实时。
-
-
功能任务分析
-
管理员:竞赛管理、靶机配置、用户权限分配。
-
裁判:攻击日志审核、手动扣分、暂停比赛。
-
参赛队:靶机状态监控、发起攻击、查看实时得分。
-
-
确定用户界面类型
-
管理后台:Web端仪表盘(适合复杂操作,如Ant Design Pro)。
-
参赛界面:Web端单页应用(SPA),支持实时刷新(如Vue.js + WebSocket)。
-
二、用户界面设计原则
-
界面的合适性
-
分角色设计:
-
管理员界面:左侧导航栏(竞赛管理、用户管理、系统设置),右侧表格/表单。
-
参赛队界面:核心功能区居中(攻击按钮、靶机状态、实时得分),减少无关信息。
-
-
示例:参赛队登录后,首页直接显示剩余比赛时间、本队靶机存活状态、快捷攻击入口。
-
-
简便易操作性
-
高频功能一键化:
-
攻击操作:预设常见攻击类型(如“Web漏洞利用”),点击后自动填充目标队伍和攻击参数。
-
防御反馈:靶机异常时,页面弹出“一键修复”按钮,自动提交修复请求。
-
-
减少输入:使用下拉选择(如选择目标队伍)、开关控件(如启用/禁用漏洞)。
-
-
便于交互控制
-
实时反馈:
-
攻击提交后,页面显示“攻击中…”动画,成功/失败后通过Toast提示(如“攻击成功!+10分”)。
-
靶机状态用颜色区分(绿色=存活,红色=宕机),每秒自动刷新。
-
-
异常处理:网络中断时,界面显示“断线重连中…”并自动恢复。
-
-
媒体组合恰当
-
数据可视化:
-
管理员仪表盘:用折线图展示实时攻防流量,饼图显示队伍得分分布。
-
裁判界面:时间轴形式展示攻击日志,支持点击查看详情。
-
-
多终端适配:
-
Web端为主,移动端适配关键功能(如参赛队可通过手机查看靶机状态)。
-
-
三、具体设计示例
-
参赛队攻击界面
-
布局:
-
顶部:比赛倒计时、本队当前得分。
-
左侧:靶机状态面板(IP、服务端口、存活状态)。
-
右侧:攻击目标选择(队伍列表下拉框)、攻击类型选择(Web/SSH/PWN)、攻击参数输入框。
-
底部:最近5条攻击记录滚动展示。
-
-
交互:
-
点击“发起攻击”后,页面锁定操作,等待后端验证结果,避免重复提交。
-
-
-
裁判审核界面
-
核心组件:
-
可筛选表格:按时间、攻击类型、队伍ID过滤日志。
-
快速操作:勾选多条日志后批量标记为“有效/无效”。
-
详情弹窗:展示攻击的原始数据(如HTTP请求内容、漏洞利用截图)。
-
-
-
管理后台-竞赛配置页
-
功能模块:
-
基础信息:比赛名称、时间、描述。
-
靶机模板:上传虚拟机镜像、设置初始漏洞。
-
计分规则:设置攻击得分公式(如有效攻击+10分,被攻击扣5分)。
-
-
四、工具与实现建议
-
原型工具:使用Figma/Axure绘制交互原型,明确按钮、表格、图表的位置和逻辑。
-
前端框架:
-
管理后台:Ant Design Pro(React) + ECharts(可视化)。
-
参赛界面:Vue3 + Element Plus(适合快速开发SPA)。
-
-
实时通信:WebSocket推送攻击日志和得分变化(如Socket.io库)。
补充与总结
通过分角色设计、简化高频操作、实时反馈与可视化,使AWD系统界面既满足管理员的高效配置需求,又让参赛队专注于攻防对抗。设计中需注意:
-
一致性:相同功能的按钮、图标在全系统保持统一样式。
-
容错性:关键操作(如结束比赛)需二次确认,防止误触。
-
性能优化:攻击日志列表采用虚拟滚动(如Vue-virtual-scroller),避免万级数据卡顿。

浙公网安备 33010602011771号