流光悦影——项目系统设计与数据库设计

流光悦影 2024-04-23 23:08:45
这个作业属于哪个课程软件工程实践-2023学年-W班
这个作业要求在哪里团队作业 概要设计和数据库设计
这个作业的目标项目系统设计与数据库设计
其他参考文献《构建之法》

目录

  • 1. 相关链接
  • 2. 系统和数据库设计
  • 2.1 体系结构设计图
  • 2.2 功能模块层次图
  • 2.3 ER图设计
  • 2.4 表结构设计
  • 3. 类图、系统安全和权限设计
  • 3.1 类图
  • 3.2 系统安全性设计
  • 3.3 权限设计
  • 4. 改进分析
  • 5. 团队绩效
  • 6. 开发计划安排
  • 6.1 开发时间计划安排
  • 6.2 开发人员计划安排

1. 相关链接

GitCode团队仓库链接
系统设计说明书
数据库设计说明书
系统设计和数据库设计答辩PPT
接口文档

2. 系统和数据库设计

2.1 体系结构设计图

描述:

1.前端:

  • 负责与用户直接交互的界面。
  • 使用Typescript、React等技术栈实现动态的页面效果。
  • Mobx用于状态管理,Vite和Less提高开发效率和样式处理。
  • HTTPS保障数据传输的安全。

2.接入层:

  • 使用Nginx作为反向代理服务器,增强安全性和负载能力,同时可以提供CDN加速服务来提高全球用户的访问速度。

3.CI/CD:

  • 利用Vercel、Github Action等工具自动化代码的构建、测试和部署流程。
  • Maven、Docker等工具确保开发环境与生产环境的一致性。
  • JUnit、JMeter分别用于单元测试和性能测试,保障代码质量。

4.后端部分:

  • 实现业务逻辑,处理前端发来的请求。
  • 可能包括特定的服务,如邮件发送、消息队列(RabbitMQ)处理异步消息等。

5.中间件:

  • 提供附加的服务能力,如CRUD操作、搜索和文件服务。
  • 阿里云OSS用于存储大量的静态文件。

6.数据库技术:

  • MySQL、Redis和ElasticSearch分别用于数据存储、高速缓存和高效搜索。
    保障数据的可靠性、快速访问和搜索能力。

设计图:

在这里插入图片描述

2.2 功能模块层次图

前台功能模块层次图

在这里插入图片描述

后台功能模块层次图

在这里插入图片描述

2.3 ER图设计

在这里插入图片描述

2.4 表结构设计

设计思路:

通过对之前的类图和用况图进行分析,可以知道大致需要哪些实体类型,再结合ER图进行分析和设计就可以得到所需要的数据表结构。但具体到字段还需要结合实际情况分析,现在暂时只能分析出一些较为重要的字段,后续可能还有字段需要添加。

详细表结构:

视频标签表

在这里插入图片描述

视频标签映射表

在这里插入图片描述

视频组表

在这里插入图片描述

视频表

在这里插入图片描述

用户评论表

在这里插入图片描述

用户表

在这里插入图片描述

举报表

在这里插入图片描述


普通用户历史记录表

在这里插入图片描述

普通用户用户详情表

在这里插入图片描述


反馈表

在这里插入图片描述

弹幕表

在这里插入图片描述

番剧视频组表

在这里插入图片描述

3. 类图、系统安全和权限设计

3.1 类图

设计思路:

通过参考 spring mvc 架构进行总体结构的设计

类图:
Controller层

在这里插入图片描述


Service / Mapper层

在这里插入图片描述


总体类图

在这里插入图片描述

3.2 系统安全性设计

安全问题:

  • xss 攻击
  • csrf 攻击
  • sql 注入
  • ddos
  • 中间人攻击
  • 敏感数据相关

解决办法:

  1. 依托 react 自带的转义以及后端对风险内容的过滤来预防 xss 攻击
  2. 使用 token 进行登录验证来避免 csrf 攻击
  3. 使用 mybatis-plus 框架从而使用其附带的 jdbc prepareStatement 调用来预防 sql 注入攻击
  4. 依托阿里云基础云盾服务来一定程度上防御 ddos 攻击
  5. 使用 https,依托可信的 ca 机构来一定程度上预防中间人攻击
  6. 使用 https 实现服务端与客户端的加密通信,一定程度上保证数据传输安全
  7. 对用户密码字段进行加盐 hash 处理
  8. 对用户邮箱等敏感字段进行数据脱敏处理
  9. 进行简单的 ip 限流防止用户频繁恶意地调用接口

详细描述:

  • 为了确保用户的隐私安全,我们将在用户注册和登录过程中采用 RSA 加密
    技术对密码进行传输。这样做可以确保即使在数据传输过程中被截获,攻击者
    也无法轻易获取到用户的明文密码。在后端接收到用户密码后,我们会对用户
    的敏感信息进行脱敏处理,以进一步保护用户隐私。接下来,我们将对密码进
    行加盐哈希处理,然后将处理后的密码存储到数据库中。

  • 为了保证弹幕的匿名性,同时满足屏蔽特定用户发送的弹幕功能需求,我
    们将弹幕发送者的 ID 进行 CRC 32 循环校验。校验后,我们会保留 ID 的 8 位校
    验码作为识别用户身份的凭据。这样做既可以确保用户的匿名性,又可以让其
    他用户屏蔽特定用户发送的所有弹幕。这种设计在保护用户隐私的同时,也提
    高了弹幕系统的实用性和安全性。

  • 为了确保用户上传的视频内容符合法律法规以及平台政策,我们会采用先
    进的 AI 技术对其进行初步检测。在检测过程中,我们会对视频的标题、描述、
    内容等方面进行全面分析,以判断其是否涉及敏感信息、非法内容或违规行
    为。一旦检测到潜在问题,我们会立即采取相应措施,如限制用户观看、删除
    相关内容等,以确保平台的正常运行和用户的安全。

  • 同时,我们非常重视用户的参与和监督。为此,我们提供了一个便捷的举
    报功能,允许用户对疑似不合法合规的视频进行举报。用户在举报时,只需填
    写相关信息,如举报原因、举报证据等,然后提交给我们。我们会对用户的举
    报进行严格保密,确保举报人的安全和隐私。

  • 对于用户的举报,我们的后台管理团队会进行二次审查。在审查过程中,
    我们的专业团队会根据举报信息和 AI 检测结果,对视频进行更深入的分析和判
    断。一旦发现确实存在违规行为,我们会立即采取相应措施,如封禁账号、删
    除视频、追究法律责任等,以维护平台的公平、公正和法治环境。

  • 通过这种双层检测机制,我们能够更有效地确保用户上传的视频内容合法
    合规,为用户提供一个安全、健康的网络环境。同时,我们也鼓励用户积极参
    与举报,共同维护平台的良好秩序。

3.3 权限设计

使用简化版 RABC 权限模型进行设计,将角色分为 普通用户管理员,以及未登录的 访客

  • 访客:可以使用 视频观看搜索 等基本功能,但如果需要 收藏上传视频 等则需要 登录
  • 普通用户:可以使用访客的所有功能,还可以使用 收藏上传视频 等登录后才可以使用的功能
  • 管理员:可以使用后台相关接口,包括 举报审核删除特定评论删除弹幕下架视频上传番剧

4. 改进分析

Q:是否包含剧本推荐功能?
A:这里假定“剧本”指的是番剧。是的,目前计划使用简单的推荐功能实现,通过分析用户观看历史记录来获取用户最常看的番剧类型,并进行同类的推荐。根据之前的搜索,了解到的一些经典推荐算法如基于用户的协同过滤需要有一定的用户基数才能达到良好的效果,但由于我们预计本项目使用人数暂时还不会很多,可能效果不是很好,故没有采用。
经过老师的提示,应该存在一些对用户数量要求不是特别高的推荐算法,由于时间原因,暂时还未进行详细的查阅工作,在后续实践中我们会进行进一步的查阅和学习,如果能够实现将进行引入。

Q:需求文档缺少用例图
A:非常抱歉,由于之前对该知识点没有理解透彻,确实没有绘制用例图就直接上类图了。缺乏用例图也导致类的捕捉容易出现遗漏。
后续已经重新补充了用例图,并基于用例图对类图进行了复核。

5. 团队绩效

学号工作内容贡献度
222100415系统设计说明书11%
222100414类图完善以及系统设计说明书、体系结构设计14.5%
222100416系统设计说明书11%
222100428报告11%
222100423系统安全和权限设计、表结构设计、接口文档、博客撰写15%
222100113ppt12.5%
222100130数据库设计说明书12.5%
222100406功能模块层次图、ER分析12.5%

6. 开发计划安排

6.1 开发时间计划安排

开始时间截止时间任务内容
4.265.8项目搭建;前端:完成前台大致界面,实现简单的视频观看功能;后端:完成视频观看功能相关模块
5.85.25前端和后端:完成用户交互相关模块和视频上传模块;优化视频观看功能
5.256.15测试和优化

6.2 开发人员计划安排

学号角色工作内容
222100414前端负责人前端架构设计 组件库编写
222100416前端开发者前端后台界面实现
222100428前端开发/测试协助前端开发和测试
222100113前端开发/测试协助前端开发和测试
222100415测试后端接口测试
222100423后端负责人后端架构设计 接口设计 模块封装
222100130后端开发者后端接口实现
222100406后端开发者后端接口实现
...全文
102 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
FZU_SE_teacherW 教师 04-24
  • 打赏
  • 举报
回复

接口层设计比较详细,赞!
总体类图一个图确实很难看清,建议可以根据功能实现模块,给出某一功能模块实现相关的局部类图,这样有助于读者的阅读何理解。

流光4.71的使用方法,这里有使用说明可以下载自己看一下:http://www.yeshack.com/jc/200508/2345.html 工具这种东西本身就是一把双刃剑,如果因为自己的站点密码太过简单而被攻破然后归罪于因特网上一些免费或共享软件的话,恐怕是有些目光短浅了 。管辖的系统存在漏洞而不自知的话,就算没被人‘干掉',也只是一种暂时的‘虚假安全'。 一、小榕流光使用的简单说明 要谈流光还真找不着感觉——在小榕的帮助文件里已经把软件的使用方法详尽无比地描述过了(强烈建议使用者使用前将帮助文件多读两遍)——我就说三个方面吧——高手完全可以略过的...... 1、 对某FTP主机一次完整的在线安全检测过程 A、选定主机:右键单击FTP主机选项,从弹出菜单中选择添加——将目标的IP地址填入,如"210.142.192.13"...... B、选定用户:右键单击该IP地址,可选添加(将想测试的用户名逐个加入)添加方案(可在方案中编辑希望测试的用户名列表)从列表添加(直接从字典文件中导入)及从SMTP主机导入(导入SMTP主机探测到的用户名),假设你想探测的用户名为quack,便直接在"添加"中填入quack。 C、选择字典: a、简单模式探测:在选项菜单条中对字典及简单模式设置做适当修正以适应本次测试要求,当然你也可以在面板上的单词小写、简单后缀等按钮直接选定。 b、标准模式探测:在"解码字典或方案"中选定某一字典(方案)。 D、调整设置:检查选项菜单栏中的系统设置、连接选项和探测选项,将本次测试的各种选项调整至最优。 E、开始探测:在"探测"菜单中选定"简单模式"或"标准模式",开始此次安全检测。 F、注意事项:由于流光系统占用较高,最好不要再开其它应用程序;在在线检测时可能有时会出现假死机现象,这时你可以通过观察MODEM的RD与SD灯来判断程序是否正常运作。 2、密码字典的选用:在线探测相当耗时,所以一个合适的字典会大大降低你的"检测成本",流光里的工具菜单栏对生成适合自己使用的字典档是一个相当实用的工具——我个人觉得尤其值得使用的是"方案编辑工具",它能够在你锁定特定用户检测时发挥较大的作用,具体使用帮助文件中写得非常详细,我就不再多说了 ——当然流光里附带的XKEY也是一个相当不错的字典生成程序。 3、流光其实不仅仅是一个在线安全检测工具——而是一个"工具包",同时具有以下几个辅助功能 A、探测主机端口 B、探测主机类型 C、FINGER D、扫描POP3、FTP主机 E、验证主机用户 而其主要功能是对POP3、FTP、HTTP、PROXY主机进行在线密码安全检测。所以——一句话,功能强大,试过便知。 至于同样原理的在线密码破解软件国内流行的也并不少,如很早以前的emailcrack、wwwhack、网络刺客1 以及现在流传很广网络刺客2、Webcrack、Xavior等等,流光在很大程度上集成了这些软件的功能,但这些软件早期的产品也都缺乏IP隐藏或类似功能,而近期的Webcrack以及Xavior则都具备从代理服务器端进行探测的功能,我认为这应该是在线探测的一个方向——安全第一嘛——基于此想法,我对流光在探测中会留下的记录进行试验:对一位网管朋友的WINDOWS2000 Beta3 SERVER 英文版进行了一番测试,对其上已知的帐号进行密码强攻, 经探测得知其FTP端口是开放的,在未预先通知的情况下对其进行攻击,事后打电话询问其记录情况,在EVENT VIEWER里有如下信息:WARNING:The server was unable to logon the Windows NT account 'houxiourong' due to the following error: Logon failure: unknown user name or bad password.The data is the error code. 而甚至他告诉我,当我的攻击进行到一半时,他的主机上就弹出了The System log file is full.的信息提示框——失败的登陆次数太多以至于其默认为512K的记录文件被撑饱了!所以我要奉劝某些心怀叵测的人们——别做坏事...... 二、密码设置的基本常识及工具 1、有关口令的一些统计 A、数目:在UNIX系统里可以建立多于43,000,000,000,000,000个不同的口令,但如果仅仅组合10种主要 语言的字典,加上这些字的反向、大写、简单后缀等一些微小变形,仅能产生不到5,000,000个字......加 上一些俚语......也不会超出这个数量级。 B、国外某机构在对一个无约束环境的用户口令选择的调查中显示,只有1.4%的用户口令中含有控制符。 2、介绍几个工具 A、CrackLib 简介及应用举例 by JeffreyDong CrackLib 是什么? CrackLib: A ProActive Password Sanity Library By: Alec Muffett Address: alecm@crypto.dircon.co.uk CrackLib是一个可用于类UNIX系统下的函数库, 一般来说, 通常只使用其中的一个函数. :-) 它可以用于编写和passwd有关的程序中, 其基本思想是很简单的, 就是防止用户使 用过于简单, 容易被猜测出来或容易被一些工具搜索到的密码. 密码攻击是网络上最为常见的攻击手段. 随着国内计算机用户水平的提高, 有很多人学 会了使用工具搜索密码的方法, 由于某些原因, 含有被加密密码的文件会被某些用户获 取; 这时, 过于简单的密码就会成为攻击者的突破口. 网上有很多这方面的报道.(我的 一个朋友告诉我他曾用一个星期的时间算出了BTA一个管理员的密码. wow! :-P) 通过限 制用户使用不安全的密码, 可以提高你的系统的安全性. CrackLib的特点 CrackLib并不是一个可以直接运行使用的程序, 它是一个函数库, 你可以利用其中的函 数写自己的程序,或是加入其它程序中, 用来提高安全性. 比如, 你可以重写passwd, 使用户在选择密码时受到限制. CrackLib使用一个字典, 它查找字典以判断所选用密码是否是不安全的密码, 所以你也可 以加入其它信息, 使用自己的字典.比如, 加入公司的名称, 实验室墙上的单词等等潜在 的不安全密码. CrackLib的使用非常简单, 它可以被应用于很多地方, 只需加入简单的几行源码, 就可以 得到非常好的效果. CrackLib的安装 CrackLib可以很容易的在Internet上找到, 我现在使用的版本是2.7, 跑在我的i586/RedHat Linux和i386/Slackware Linux上. 如果你无法找到它的话, 赶紧去补一补如何在Internet 上查找特定的软件吧, 因为这是一项非常重要的基本功. CrackLib好象没有什么文档, 这也是GNU急需加强的地方. 但是它的安装非常简单, 只要按照 README文件 中所叙述的就可以了.如果你用的distribution中包含了这个包, 那它说不定已经 安装在你的机器上了,如RedHat 5.1等. :-) 需要注意的是, 不同版本中一些文件所处的目录位置不同, 你要先确定它们所处的位置. 比 如, 在RedHat 5.1中, 字典是在/usr/lib/中, 文件名为cracklib_dict.*, 而不是README中 所举例的/usr/local/lib/pw_dict.* 应用举例 这里我举一个很简单的例子, 试图用很短的篇幅来说明用法. char *FascistCheck(char *pw, char *dictpath); 这是CrackLib中最常用的函数. pw是用户选择的密码, 你要去验证它是不是不安全的. dictpath是字典所在路径, 注意, 要把文件名中"."之前的部分加上.以RedHat 5.1为例, 假设你已正确的安装了CrackLib 2.7和FireBird BBS 2.66M. 让我们来 看看如何把CrackLib加入BBS中去. :-) 首先, 改写bbs_src目录下的register.c: /* ----------- begin ---------- */ char *msg; /* ----------- end ---------- */ ...... while( 1 ) { getdata(0,0,"请设定您的密码 (Setup Password): ",passbuf,PASSLEN,NOECHO,YEA) ; if( strlen( passbuf ) < 4 || !strcmp( passbuf, newuser.userid ) ) { prints("密码太短或与使用者代号相同, 请重新输入\n") ; continue; } /* ----------- begin ---------- */ if (msg = (char*) FascistCheck(passbuf, CRACKLIBPATH)) { printf("请另选密码! (%s)\n",msg); continue; } /* ----------- end ---------- */ strncpy( newuser.passwd, passbuf, PASSLEN ); getdata(0,0,"请再输入一次你的密码 (Reconfirm Password): ",passbuf,PASSLEN,NOECHO,YEA); if( strncmp( passbuf, newuser.passwd, PASSLEN ) != 0 ) { prints("密码输入错误, 请重新输入密码.\n") ; continue; } passbuf[8] = '\0' ; strncpy( newuser.passwd, genpasswd( passbuf ), PASSLEN ); break; } begin和end注释所夹部分为改动处, 下同. 接着改写bbs_src目录下的userinfo.c: /* ----------- begin ---------- */ char *msg; /* ----------- end ---------- */ ...... getdata(i++,0,"请设定新密码: ",buf,PASSLEN,NOECHO,YEA); if( buf[0] == '\0' ) { prints("\n\n密码设定取消, 继续使用旧密码\n"); fail++; break; } strncpy(genbuf,buf,PASSLEN) ; /* ----------- begin ---------- */ if (msg = (char*) FascistCheck(buf, CRACKLIBPATH)) { printf("\n请另选密码! (%s)\n", msg); prints("\n密码设定取消, 继续使用旧密码\n"); fail++; break; } /* ----------- end ---------- */ getdata(i++,0,"请重新输入新密码: ",buf,PASSLEN,NOECHO,YEA); if(strncmp(buf,genbuf,PASSLEN)) { prints("\n\n新密码确认失败, 无法设定新密码。\n"); fail++; break; } 接着在bbs.h中加入: #ifndef CRACKLIBPATH #define CRACKLIBPATH "/usr/lib/cracklib_dict" #endif 注意这里是字典所处的位置. 最后改动bbs的Makefile: OS_DEF = -DLINUX -DTERMIOS CC = gcc CFLAGS = -O2 /* ----------- begin ---------- */ LIBS = -ltermcap -lbsd -lcrack /* ----------- end ---------- */ 然后make, make install就可以了. :-) 很简单, 不是吗? 注意:本段关于cracklib的说明转载于[网络工作室] B、Proactive Checking 这个程序能在输入口令时进行一系列的口令检查,这会对避免不安全口令出现于你的系统有帮助作用。它与一般的shadow和NIS(也就是yellow page)口令系统共同工作。 C、Shadow 这个程序取代了原来系统的口令保护机制,它将/etc/passwd文件中的口令信息转移到文件/etc/shadow中,还有一些如口令到期机制、允许16字符口令等功能。 D、Passwd+ 这是一个典型的增强型口令系统。 三、应有的措施及其基本知识 1、日志文件 大多数日志文件都是由系统一行接着一行写入的文本文件。比如sulog会记录用户使用su命 令试图进入系统的情况,在sulog文件尾部附加一条信息,以记录su命令是否被成功使用。不同版本的UNIX系统存放日志文件的目录不同,常见目录如下:/usr/adm 早期的UNIX系统/var/adm 较新版本的UNIX系统/var/log 用于Solaris\Linux\BSD等系统中在这些目录或其子目录下,你可以找到下列文件acct 或 pacct 记录每个用户使用过的命令aculog 拨出"猫"的记录lastlog 记录用户最后一次成功登陆时间及最后一次失败登陆时间loginlog 不良登陆记录messages 输出到主控台及由syslog系统服务程序产生的消息sulog su的使用情况 utmp 记录当前登陆的每个有户 utmpx 扩展的utmp wtmp 记录每一次用户登陆和注销的历史信息及系统开关信息 wtmpx 扩展wtmp vold.log 使用外部介质产生的错误 xferlog FTP存取情况 2、定期运行如crack之类的口令破解程序以检查系统中是否存在弱帐户。

300

社区成员

发帖
与我相关
我的任务
社区描述
福州大学的软件工程实践-2023学年-W班
软件工程需求分析结对编程 高校 福建省·福州市
社区管理员
  • FZU_SE_teacherW
  • Pity·Monster
  • 助教张富源
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧