300
社区成员
这个作业属于哪个课程 | 软件工程实践-2023学年-W班 |
---|---|
这个作业要求在哪里 | 软件工程实践团队作业三 |
这个作业的目标 | 项目系统设计与数据库设计 |
其他参考文献 | 《构建之法》 |
设计思路:系统采用 MVC模式进行设计 ,前后端分离 。当后端团队与前端团队共同设计协调好接口后 ,可实现前后端并行开发 ,提高开发效率 。由于视图层与业务层分离 ,耦合性 低 ,业务层的各层次职责单一 ,所以更易于后期维护。
设计思路:本项目前台(用户端)主要分成五个模块(个人页面模块、主页模块、文章模块、注册登录模块和创作中心模块,其中文章模块又包含笔记、学习、问答三个模块)。
后台管理系统(管理员端)主要分为账号管理模块、文章管理模块、反馈中心模块
设计思路:根据需求中所画类图实体,以及关系,结合实际场景以及数据库具体存储形式进行分析,分为用户模块、管理员模块、文本模块、内容模块(内涵评论、回答等小模块)。
数据表结构图
设计思路:首先通过解读ER图(实体-关系图)来定义数据库的概念模型和逻辑模型。接着,利用数据库可视化工具如Navicat来设计并实现数据库的主要表结构。最后,根据ER图展示的各实体间的关系,为这些表添加适当的外键约束,从而完成数据库的物理模型的构建。
用户表
问题表
前台接口
后台接口
每个类及类的属性:
针对系统可能产生的安全问题进行分析与说明
CSRF(跨站请求伪造)
CSRF 用户 A 请求了正常的网站 C ,之后产生了 cookie 保存在客户端 ,之后用户A ⼜ 浏览的恶意网站 B ,网站 B 接收到用户请求后,返回一些攻击性代码,并发出一个请求 要求访问第三方站点 C,恶意网站 B 产生恶意的请求去请求网站 C,由于 cookie 是浏览 器自动携带的结果 C 只能看到 cookie 是正确的, 以为就是用户 A 的行为 ,从而产生损失。
目前防御 CSRF 有四种方案:
. 检查Referer或Origin头
. 在请求地址中添加 token 并验证
. 在 HTTP 头中自定义属性并验证
. 双重验证(如验证码)
XSS 攻击
跨站脚本攻击(Cross Site Script)指的是恶意攻击者往 Web 页面里插入恶意 html 代码,当用户浏览该页之时,嵌入其中 Web 里面的 html 代码 会被执行 ,从而达到恶意用户的特殊目的。
预防:
转移和过滤用户提交的信息,将输入的数据进行转义处理,比如说讲 < 转义成<;
SQL 注入
sql 注入是指在 sql 语句预编译过程中混入了恶意 sql 代码导致 sql 错误执行,以不正当的手段对数据库信息进行操作。
预防:
后端会对要执行的 sql 语句进行预编译,保证预编译过程没有用户传来的参数,且执行的时候只需传参不会再次进行编译,不会导致恶意 sql 执行。
避免在代码中拼接SQL语句,使用ORM、查询构建器等工具,遵循安全编程规范。
数据加密
知福后端在收集到用户密码等关键数据后,通过结合哈希与随机盐来对这些关键数据进行加密处理,以确保用户关键信息在知福数据库中的安全性。每一个关键数据对应的随机盐都会被存取至数据库中备用。
特点:盐值(Salt)是指在密码哈希过程中加入的一个额外的、随机生成的字符串。这个字符串与用户的实际密码组合在一起,然后再通过哈希函数生成最终的哈希值。通过哈希算法加密每次加密后的密文都不相同且不可逆,保证了用户密码不能被解密。
认证策略: 用户可以通过账号密码登录或者用户输入手机号后利用验证码验证登录。
鉴权:
在身份验证通过后,检查用户是否具备执行请求所需的具体权限。
根据鉴权结果,后端决定是否允许请求执行,对合法请求放行,对非法请求则拒绝并可能返回错误信息。
权限设计:知福分两种角色 用户,管理员。每个角色有相应的权限,具有 相应的权限才能访问相应的方法
用户可通过前台 Web操作相应的创作模块 ,个人资料模块 ,登录模块和问答/学习/笔记模块。
管理员可通过后台 Web 对用户账号管理,平台数据分析,以及反馈举报处理,以及应用 管理。
Q:老师类和学生类有什么区别?
A:我们计划将用户按照权限分为权限用户类和普通用户类。我们应该解用户的不同需求和访问权限,有效设计系统的功能和权限控制。上面附上新的相关用况图,用于更清晰地展示系统中各个用户类别的功能和互动方式。
Q:类图太多,控制类甲方怎么理解?
A:在解释和传达复杂的类图或控制图时,我们应该采用浅显易懂的方式,将重点放在让甲方能够理解我们的总体思想上。我们需要使用简单明了的语言。通过提供直观的解释和实际示例,我们可以帮助甲方建立起对图表的直观认知,并确保他们能够理解系统的设计原则、关键功能和交互流程。
• 召开全体线上会议:类图的修改、工作分配
• 小组成员根据分配的工作内容开始搜集资料,完成分配的工作
• 初步完成系统设计说明书&数据库设计说明书
• 修改完善系统设计说明书和数据库设计说明书
• 组员间按照制定的绩效考核表确定团队贡献度
• 编写博客、制作答辩PPT
• 制作评审表,准备答辩
学号 | 分工内容 |
---|---|
222100228 | 前台功能模块、数据库表结构设计、web端接口设计、时间安排、ER图、系统设计说明书4.2、4.3.2、数据库设计说明书3 |
222100231 | ER图、系统设计说明书4.3.1、数据库设计说明书3.3 |
222100210 | 系统设计说明书123、数据库设计说明书1 |
222100215 | 系统设计说明书、数据库设计说明书 |
222100214 | 数据库表结构设计、时间安排、系统设计说明书4.2、数据库设计说明书 |
222100208 | 体系结构设计图、前台功能模块、数据库表结构设计、时间安排、系统设计说明书4.1、数据库设计说明书2、4.1 |
222100112 | 汇报每日完成情况、系统设计说明书整合、数据库设计说明书整合、编写博客、制作答辩PPT |
222100415 | 系统设计说明书6、数据库设计说明书 |
学号 | 分工内容 |
---|---|
222100228 | 15.5 |
222100231 | 15.5 |
222100210 | 8.5 |
222100215 | 10.5 |
222100214 | 14.5 |
222100208 | 15.5 |
222100112 | 8.5 |
222100415 | 11.5 |
激励得分:4
时间 | 活动产出 | 里程碑 |
---|---|---|
第一周(4.18~4.24)系统设计和数据库设计 | 系统设计说明书、数据库设计说明书系统设计和数据库设计答辩PPT | 完成数据库和系统设计 |
第二周(4.25~5.1)协作学习 | 准备团队协作上机实训 | 完成团队协作上机实训 |
第三周(5.2~5.8)Alpha版本开发第一周 | 实现基本逻辑设计、知福主界基本界面UI、完成笔记功能的UI设计 | |
第四周(5.9~5.15)Alpha版本开发第二周 | 注册登录功能、准备Alpha版本答辩 | 完成网页Alpha版本 |
第五周(5.16~5.22)Beta版本开发第一周 | 完成个人页面模块和主页模块基本功能、实现文章和问答模块功能 | |
第六周(5.23~5.29)Beta版本开发第二周 | 基本完成创作中心模块 | |
第七周(5.30~6.5)Beta版本开发第三周 | 账号管理模块和文章管理模块以及反馈中心模块 | |
第八周(6.6~6.13)Beta版本开发第四周 | 对知福进行测试和优化 | 完成网页Beta版本 |
Text接口类没有与其他类联系?
如果想根据”Title“和”Author“联合搜索,可以做到吗?
接口设计部分需要更多的细节,包括路由,请求参数等,可以参考做得好的小组。