七、开发博客之安全问题
7-1、开始和sql注入
- sql注入:窃取数据库的内容
- XSS攻击:窃取前端的cookie内容
- 密码加密:保障用户的信息安全(重要)
- server端的攻击常见的能通过web server (nodejs)层面的预防
- 有些需要运维支持,如DDOS
sql注入
- 从web2.0开始就有了
- 攻击方式:输入一个sql片段,最终拼接成一端攻击代码
- nodejs的escape函数可以预防
实例:
- 用户名(zhangsan‘ – )表示密码无效,可以随意登录成功
- (zhangsan’;delete from users; --)删除这个用户的所有信息
预防:
mysql自带的escape函数去特殊化符号
7-2、XSS攻击
server端更应该掌握
攻击方式:在页面中插入js代码,以获取网页信息
预防措施:转换生成js的特殊符号-------转换特殊字符
cnpm install xss --save
const title = xss(blogData.title)
7-3、密码加密
- 万一数据库被攻破,最不应该泄漏的就是用户信息(对应的用户名和密码)
- 攻击方式:获取用户名和密码,尝试去登录其他系统
- 预防措施:将密码加密,即便拿到密文也不知道明文
- 常用md5加密
总结:
如何预防sql注入
如何预防xss攻击
如何加密密码
7-4、不使用框架开发server的最后总结
- 开发了哪些功能模块、完整的流程
- 用到了哪些核心知识点
- 回顾“server和前端的区别”
功能模块:五部分
- 处理http接口
- 连接数据库
- 实现登录
- 安全
- 日志
核心知识点:
- http,nodejs处理http、处理路由,mysql
- cookie、session、redis、nginx反向代理
- sql注入、xss攻击、加密
- 日志、steam、contrab、readline
server端和前端的区别
五个:
服务稳定性
内存CPU(优化、扩展)
日志记录
安全(包括登录验证)
集群和服务拆分(设计已支持)