这是我参与「第三届青训营 -后端场」笔记创作活动的的第2篇笔记
青训营GO极简版本抖音项目简介
功能实现与需求分析
Part1
- 视频Feed流、视频投稿、个人信息:
支持所有用户刷抖音,按投稿时间倒叙推出,登录用户可自己拍视频投稿,查看自己的基本信息和投稿列表,注册用户流程简化。
- 支持所有用户刷抖音,按投稿时间倒叙推出,单次最多30个视频
- 注册登录功能
- 实现登录用户投稿功能
- 查看自己基本信息和投稿列表
根据分析,第一步进行了设计数据库的表结构的基础设计:
- 首先实现基础功能:
- 应包含用户表、视频表
Part 1 已全部完成
实现中存在的问题以及解决结果: 1.只有重启程序才能刷新首页,没有刷新功能 2.封面图没有上传(随着app的版本更新大多数问题得以解决)
Part2
- **点赞列表,用户评论 **
- 对视频点赞
- 对视频评论
- 个人主页有视频点赞列表
功能实现:
- 点赞功能:
- 点赞时,将视频id加入用户喜爱表中,如果喜爱表不存在则建立喜爱表,显示个人喜欢页面时,读取喜爱表,返回喜爱列表中的视频,同时修改视频点赞数量,同时需要写入数据库
- 取消赞时,将视频id从喜爱表中去掉,同时减少视频点赞数量,利用数据库进行相关操作
- 用户登录之后,每个显示视频初始化时,判断该视频在不在该用户喜爱表中,从而来决定是否显示爱心
- 评论功能:
- 评论时将评论放入到评论列表显示到界面上,根据视频id建立对应评论表,将新的评论写入数据库 完成点赞和评论功能后,应修改视频初始化,需要读取是否点赞,评论数,以及点赞数
- 在完成这部分功能时,需要在数据库video表中增加内容,同时点赞和评论需要动态增加用户的喜爱视频表和对应视频的评论内容表,
- 表名建议为favorite_用户id,comment_视频id
Part3
- 关注列表,粉丝列表
- 关注功能
- 和点赞功能类似, 点击 +(加号)进行关注操作时,将视频的发布用户加入登录用户的关注表中,没有关注表则动态建立关注表,同时修改用户关注数,和对应用户粉丝数,将登录用户加入到发布视频用户的粉丝表中,没有粉丝表则动态生成粉丝表,修改发布用户粉丝数
- 可以在客户端长按的方式来实现对自己评论的删除
- 关注数和粉丝数加入用户信息中
- 数据库的user表需要添加关注数和粉丝数
- 能够显示关注列表和粉丝列表
- 显示关注列表和粉丝列表只需要读数据库对应表就行 需要注意的是初始化视频显示时,需判断“+”即关注符号需不需要显示,和点赞功能类似,读取登录用户的关注列表判断是否应该显示“+”
- 表名规则同上
应用测试文档
数据库结构测试
-
更改utf8mb4_0900_ai_ci为utf8mb4_general_ci以解决数据库版本问题导致的可视化应用导入失败问题
-
更改tools下数据库相关用户名以及密码配置情况
-
创建索引,为大用户量同时从服务端获取请求时,提高查询速度
黑箱测试
-
在app中已经登陆有一个账户时,后端并未检测这个用户是否存在。(大概率是app问题)
-
点赞功能正常
-
喜欢功能正常
-
关注:(新注册用户)在关注一个人后,在主页观察到人数变化,但是点进去无法获得具体人数
-
评论功能正常
- 输入正常评论输入 ok
- 输入emoji表情 ok
- 评论删除功能正常,数据库操作正常
白箱测试
1.登录密码
数据库的密码在服务端源文件中写入,若为云端数据库,在开源时有数据库被爆破的风险。
2.sql注入测试
- 经过测试,查看源码后暂时未发现有效的注入手段
其主要原因为,在前端能够操作的部分为两个方面:
- 注册
- 添加评论
-
而以上两个功能,并不提供查询功能,大部分客户端的键入都会由insert语句输入,且,查询环节并不需要通过我们来输入某一个参数来获得某一组数据,或是结果。
-
但是仍然在可能的位置进行如下注入分析以及尝试:
-
- 在服务端最敏感的表 user 表返回语句处进行测试,采取最近点的 sql注入语句 : 设置用户为 1' or '1'='1' ,密码为 1 这时,由于客户端在登陆时,后台服务器端不允许密码长度小于 6 ,无法通过sql注入创造一个万能用户
-
-
评论的返回与写入
- 评论的get方法,利用的为视频id,这个位置并不能由用户处理。
-
注 :在测试的范围内暂未检查出有效的sql注入手段