清风不知道——项目系统设计与数据库设计
这个作业属于哪个课程 | https://edu.cnblogs.com/campus/zswxy/software-engineering-2017-1 |
---|---|
这个作业要求在哪里 | https://edu.cnblogs.com/campus/zswxy/software-engineering-2017-1/homework/10829 |
这个作业的目标 | 项目系统设计与数据库设计 |
作业正文 | 下文 |
其他参考文献 |
一.团队项目的预期开发计划时间安排
6.15~6.25 | 完成项目雏形 |
6.25~6.30 | 系统优化 |
6.30~7.5 | 连接数据库,进行测试 |
二. 团队项目的预期开发计划分工安排
前端,原型,开发 | 黄浩,金澳威,申彪 |
测试,完善 | 颜悠,李宁,康翔宇 |
三.给出体系结构设计+功能模块层次图、设计类图、ER分析+表结构设计、系统安全和权限设计
体系结构设计图
功能模块图
设计类图
ER分析
表结构设计
表名 |
功能说明 |
STUDENT |
学生表,用于验证是否是学生 |
USER_INFO |
用户信息表 |
SEAT |
座位表,座位信息和情况 |
STUDENT表(学生表)
表名 |
STUDENT |
|
|
|
列名 |
数据类型(精度范围) |
空/非空 |
约束条件 |
其他说明 |
STUDENT_ID |
VARCHAR(22) |
非空 |
PRIMARY KEY |
学号 |
STUDENT_NAME |
VARCHAR(40) |
非空 |
|
学生姓名 |
IS_REGISTER |
VARCHAR(22) |
|
|
是否已注册(没注册为空,已注册为用户账号) |
USER_INFO表(用户信息表)
表名 |
USER_INFO |
|
|
|
列名 |
数据类型(精度范围) |
空/非空 |
约束条件 |
其他说明 |
USER_ID |
VARCHAR(22) |
非空 |
PRIMARY KEY |
账号 |
USER_NAME |
VARCHAR(40) |
非空 |
UNIQUE |
用户名 |
USER_PASSWORD |
VARCHAR(40) |
非空 |
|
密码 |
USER_PICTRUE |
IMAGE |
|
|
头像(空的话,用默认头像) |
SEAT表(座位表)
表名 |
SEAT |
|
|
|
列名 |
数据类型(精度范围) |
空/非空 |
约束条件 |
其他说明 |
SEAT_ID |
VARCHAR(20) |
非空 |
PRIMARY KEY |
座位号 |
SEAT_ADD |
VARCHAR(40) |
非空 |
|
座位位置 |
SEAT_INFO |
VARCHAR(400) |
非空 |
|
座位信息 |
SEATY_STATUS |
INT |
非空 |
|
座位是否为空 |
系统安全和权限设计
常见web攻击方法及防御手段总结
1. CSRF (cross-site request forgery)跨站请求伪造
预防
之所以被攻击是因为攻击者利用了存储在浏览器用于用户认证的cookie,那么如果我们不用cookie来验证不就可以预防了。所以我们可以采用token(不存储于浏览器)认证,为每一个提交的表单生成一个随机token, 存储在session中,每次验证表单token,检查token是否正确。。
通过referer识别,HTTP Referer是header的一部分,当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器我是从哪个页面链接过来的,服务器基此可以获得一些信息用于处理。那么这样的话,我们必须登录银行A网站才能进行转账了。
2. XSS (cross site script)跨站脚本攻击
预防
- 转移和过滤用户提交的信息,将输入的数据进行转义处理,比如说讲 < 转义成<
3. session攻击,会话劫持
防御方法:
- 每次登陆重置sessionID
- 设置HTTPOnly,防止客户端脚本访问cookie信息,阻止xss攻击
- 关闭透明化sessionID
- user-agent头信息验证
- token校验
4.SQL注入
预防
在java中,我们可以使用预编译语句(PreparedStatement),这样的话即使我们使用sql语句伪造成参数,到了服务端的时候,这个伪造sql语句的参数也只是简单的字符,并不能起到攻击的作用。
很多orm框架已经可以对参数进行转义
做最坏的打算,即使被’拖库‘('脱裤,数据库泄露')。数据库中密码不应明文存储的,可以对密码使用md5进行加密,为了加大破解成本,所以可以采用加盐的(数据库存储用户名,盐(随机字符长),md5后的密文)方式
5.DDOS
预防
- 最直接的方法增加带宽。但是攻击者用各地的电脑进行攻击,他的带宽不会耗费很多钱,但对于服务器来说,带宽非常昂贵。
- 云服务提供商有自己的一套完整DDoS解决方案,并且能提供丰富的带宽资源
用户注册
1. 得到用户传过来的密码后,首先在计算机中获取一个随机数,
2. 获取到随机数后,设计一个任意算法,对随机数与用户密码进行拼接处理,比如最简单的(用户密码+随机数),者将得到一个全新的字符串
3. 我们再对这个新的字符串进行哈希算法处理,得到一个新的密码,由于哈希算法的特殊性,该算法是不可逆的。
4. 将用户id,新密码和随机数保存到数据库中。用户注册成功。
用户登录
1. 服务端获取到用户的id和密码后,根据用户id从数据库中取出该用户的新密码和随机数。
2. 把用户传过来的旧密码和随机数交给用户注册第2步中的随机数和密码拼接算法,拼接后,得到一个新的字符串(和用户注册第2步得到的全新字符串是一模一样的)。
3. 将新字符串交给哈希算法处理将得到一个处理结果。
4. 如果处理后的结果和数据库中存储的新密码相同,那么,该用户传过来的密码是正确的,登录成功,否则,登录失败。
四.工作流程、组员分工、组员贡献度比例
工作流程:组长分配任务,各组员合作完成
组员分工:
黄浩:体系结构和功能模块图,设计类图
金澳威:ER分析和表结构设计,博客园编辑
申彪:表结构设计
李宁:完善
颜悠:完善
康翔宇:完善
组员贡献度:
黄浩 | 30% |
金澳威 | 25% |
申彪 | 15% |
李宁 | 10% |
康翔宇 | 10% |
颜悠 | 10% |
五.《系统设计说明书》《数据库设计说明书》github 链接
https://github.com/jindaxiayes/group-work