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)。

 总结

  1. 需求分析:想清楚系统需要存什么数据(用户、比赛、攻击记录等)。

  2. 概念设计:画ER图明确数据之间的关系(用户属于队伍、比赛包含靶机)。

  3. 逻辑设计:设计具体的表结构,用外键关联数据(如User表的TeamID)。

  4. 物理设计:优化存储和查询效率(加索引、分区、加密)。

 

AWD攻防竞赛系统用户界面需求分析与设计

 

设计目标:为管理员、裁判、参赛队三类用户提供直观、高效的操作界面,满足攻防对抗的实时性需求,同时降低学习成本。

 

一、用户界面需求分析

 

  1. 用户特性分析

    • 管理员:技术能力强,需要复杂配置功能(如创建竞赛、分配靶机、设置漏洞)。

    • 裁判:需实时监控比赛状态,审核攻击有效性,要求界面数据清晰、可快速操作。

    • 参赛队:聚焦攻防操作(攻击对手、修复漏洞),需要界面简洁、反馈实时。

  2. 功能任务分析

    • 管理员:竞赛管理、靶机配置、用户权限分配。

    • 裁判:攻击日志审核、手动扣分、暂停比赛。

    • 参赛队:靶机状态监控、发起攻击、查看实时得分。

  3. 确定用户界面类型

    • 管理后台:Web端仪表盘(适合复杂操作,如Ant Design Pro)。

    • 参赛界面:Web端单页应用(SPA),支持实时刷新(如Vue.js + WebSocket)。

 

二、用户界面设计原则

 

  1. 界面的合适性

    • 分角色设计

      • 管理员界面:左侧导航栏(竞赛管理、用户管理、系统设置),右侧表格/表单。

      • 参赛队界面:核心功能区居中(攻击按钮、靶机状态、实时得分),减少无关信息。

    • 示例:参赛队登录后,首页直接显示剩余比赛时间、本队靶机存活状态、快捷攻击入口。

  2. 简便易操作性

    • 高频功能一键化

      • 攻击操作:预设常见攻击类型(如“Web漏洞利用”),点击后自动填充目标队伍和攻击参数。

      • 防御反馈:靶机异常时,页面弹出“一键修复”按钮,自动提交修复请求。

    • 减少输入:使用下拉选择(如选择目标队伍)、开关控件(如启用/禁用漏洞)。

  3. 便于交互控制

    • 实时反馈

      • 攻击提交后,页面显示“攻击中…”动画,成功/失败后通过Toast提示(如“攻击成功!+10分”)。

      • 靶机状态用颜色区分(绿色=存活,红色=宕机),每秒自动刷新。

    • 异常处理:网络中断时,界面显示“断线重连中…”并自动恢复。

  4. 媒体组合恰当

    • 数据可视化

      • 管理员仪表盘:用折线图展示实时攻防流量,饼图显示队伍得分分布。

      • 裁判界面:时间轴形式展示攻击日志,支持点击查看详情。

    • 多终端适配

      • Web端为主,移动端适配关键功能(如参赛队可通过手机查看靶机状态)。

 

三、具体设计示例

 

  1. 参赛队攻击界面

    • 布局

      • 顶部:比赛倒计时、本队当前得分。

      • 左侧:靶机状态面板(IP、服务端口、存活状态)。

      • 右侧:攻击目标选择(队伍列表下拉框)、攻击类型选择(Web/SSH/PWN)、攻击参数输入框。

      • 底部:最近5条攻击记录滚动展示。

    • 交互

      • 点击“发起攻击”后,页面锁定操作,等待后端验证结果,避免重复提交。

  2. 裁判审核界面

    • 核心组件

      • 可筛选表格:按时间、攻击类型、队伍ID过滤日志。

      • 快速操作:勾选多条日志后批量标记为“有效/无效”。

      • 详情弹窗:展示攻击的原始数据(如HTTP请求内容、漏洞利用截图)。

  3. 管理后台-竞赛配置页

    • 功能模块

      • 基础信息:比赛名称、时间、描述。

      • 靶机模板:上传虚拟机镜像、设置初始漏洞。

      • 计分规则:设置攻击得分公式(如有效攻击+10分,被攻击扣5分)。

 

四、工具与实现建议

 

  1. 原型工具:使用Figma/Axure绘制交互原型,明确按钮、表格、图表的位置和逻辑。

  2. 前端框架

    • 管理后台:Ant Design Pro(React) + ECharts(可视化)。

    • 参赛界面:Vue3 + Element Plus(适合快速开发SPA)。

  3. 实时通信:WebSocket推送攻击日志和得分变化(如Socket.io库)。

 

补充与总结

 

通过分角色设计、简化高频操作、实时反馈与可视化,使AWD系统界面既满足管理员的高效配置需求,又让参赛队专注于攻防对抗。设计中需注意:

 

  1. 一致性:相同功能的按钮、图标在全系统保持统一样式。

  2. 容错性:关键操作(如结束比赛)需二次确认,防止误触。

  3. 性能优化:攻击日志列表采用虚拟滚动(如Vue-virtual-scroller),避免万级数据卡顿。

 

posted @ 2025-05-13 12:21  Cookiebae  阅读(58)  评论(0)    收藏  举报