Tom&Jerry_team——项目系统设计和数据库设计

OMCP项目系统设计与数据库设计

—— TOM & JERRY 团队

这个作业属于哪个课程 https://edu.cnblogs.com/campus/zswxy/software-engineering-2017-1
这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/software-engineering-2017-1/homework/1082
团队名称 Tom&Jerry
这个作业的目标 项目系统设计与数据库设计
作业正文 https://www.cnblogs.com/TomJerry/p/13124279.html
其他参考文献 用户密码加密
常见web攻击方法及防御手段总结

一、团队项目预期开发时间安排

时间 团队目标与产出
6.14 - 6.15 初期,制作系统设计、数据库设计说明书 ,系统设计和数据库设计
6.16 - 6.20 分工,前端完成基础页面设计,后端完成 Java 代码
6.21 - 6.24 前端基本页面跳转完成 ,后端创建数据库,完成模块和数据库的连接
6.25 - 6.27 前端进行 UI 统一以及美化界面,后端测试并完善基础功能接口
6.28 - 6.30 前端连接后端接口,进行软件运行测试 ;后端进行完整性校验,根据不足之处更改后端代码,完善功能
7.1 - 7.5 收尾阶段,保证基本功能运行正常,页面效果对用户友好,检查 bug 和系统后期维护

二、预期开发计划分工安排

学号 姓名 工作内容
20177595 林金 项目需求规划、前端页面设计
20177598 李安娜 前端页面设计
20177603 高洁 统筹规划,后端设计,项目经理
20177615 刘超然 后端与前端交互设计、算法设计
20177625 黄波 数据库设计、测试
20177626 蒋晨 前端页面设计
20177629 刘丙亮 前端页面设计实现、测试
20177642 何昆佰 后端设计实现、算法设计、组长

三、项目系统及数据库设计

3. 1 体系结构设计 + 功能模块层次图

3. 1. 1 体系结构设计

OMCP系统由用户模块和管理员模块组成,用户模块由注册、登录、头像、搜索歌曲、点歌、投票切歌、聊天室讨论,我的收藏、查看歌单 9 个功能组成,管理员模块分为歌单管理员模块和数据库管理员模块,歌单管理员拥有用户的所有功能以外还由维护在线歌单、维护黑名单功能组成;数据库管理员由数据库信息管理以及服务器数据管理两个功能组成。用户可通过个人信息功能进行修改头像、查看我的收藏和管理我的收藏。歌单管理员可通过歌单管理按钮进入歌单管理页面,进行在线歌单以及黑名单的维护。数据库管理员则是在后台进行数据库以及服务器数据的维护和管理。

3. 1. 2 功能模块

Tom&Jerry_team——项目系统设计和数据库设计_第1张图片

3. 2 类图

3. 3 ER 分析 + 表结构设计

3. 3. 1 ER 图

  • 用户图

Tom&Jerry_team——项目系统设计和数据库设计_第2张图片

  • 管理员图

Tom&Jerry_team——项目系统设计和数据库设计_第3张图片

3. 3. 2 表结构设计

User表

字段名 数据类型 长度 主键 非空 描述
username varchar 8 用户名
password varchar 10 密码
avatar varchar 100 头像URL

Manager表

字段名 数据类型 长度 主键 非空 描述
username varchar 8 用户名
password varchar 10 密码
avatar varchar 100 头像URL

MyCollections表

字段名 数据类型 长度 主键 非空 描述
Id int 50 歌曲编号
songname varchar 25 歌名
singer varchar 15 歌手名

OnlinePlaylist表

字段名 数据类型 长度 主键 非空 描述
Id int 50 歌曲编号
songname varchar 25 歌名
singer varchar 15 歌手名

Blacklist表

字段名 数据类型 长度 主键 非空 描述
Id int 50 歌曲编号
songname varchar 25 歌名
singer varchar 15 歌手名

3. 4 系统安全和权限设置

3. 4. 1 用户密码的传输和存储的保护

  • 用户注册

    • 得到用户传过来的密码后,首先通过一段代码获取一个1-25之间的随机整数(偏移量)
    • 获取到随机数后,通过凯撒加密算法,对随机数与用户密码进行加密处理
    • 我们再对这个新的字符串进行哈希算法处理,得到一个新的密码,由于哈希算法的特殊性,该算法是不可逆的
    • 将加密后得到的HashCode(通过HashCode可以得到加密后的密码以及偏移量)保存到数据库中,用户注册成功
  • 用户登录

    • 服务端获取到用户的id和密码后,根据用户id从数据库中获得HashCode
    • 把用户填写的用户id和密码交给服务器后台的凯撒加密算法
    • 通过用户填写的密码以及用户id进行加密得到一个新的HashCode
    • 通过这个HashCode寻找加密后的密码桶
    • 通过遍历密码桶中的标识符——用户id得到加密后的原密码以及偏移量
    • 通过得到的加密密码和偏移量进行解密得到原密码,与用户填写的密码进行比较
    • 如果处理后的结果和原密码相同,那么该用户传过来的密码是正确的,登录成功,否则,登录失败

3. 4. 2 常见web攻击方法及防御手段总结

3. 4. 2. 1 CSRF(cross-site request forgery)跨站请求伪造

  • 概念

    • 全称是跨站请求伪造(cross site request forgery),指通过伪装成受信任用户的进行访问,通俗的讲就是说我访问了A网站,然后cookie存在了浏览器,然后我又访问了一个流氓网站,不小心点了流氓网站一个链接(向A发送请求),这个时候流氓网站利用了我的身份对A进行了访问
  • 被攻击的原因

    • 用户本地存储cookie,攻击者利用用户的cookie进行认证,然后伪造用户发出请求
  • 预防

    • 之所以被攻击是因为攻击者利用了存储在浏览器用于用户认证的cookie,那么如果我们不用cookie来验证不就可以预防了。所以我们可以采用token(不存储于浏览器)认证,为每一个提交的表单生成一个随机token, 存储在session中,每次验证表单token,检查token是否正确
    • 通过referer识别,HTTP Referer是header的一部分,当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器我是从哪个页面链接过来的,服务器基此可以获得一些信息用于处理

3. 4. 2. 2 XSS(cross site script)跨站脚本攻击

  • 概念

    • 全称是跨站脚本攻击(Cross Site Scripting),指攻击者在网页中嵌入恶意脚本程序。
  • 被攻击的原因

    • 用户输入的数据变成了代码,比如说上面的

你可能感兴趣的:(Tom&Jerry_team——项目系统设计和数据库设计)