课程名称:6大角度 开拓前端进阶之路
课程章节:第6章 场景四:通用Nodejs后台打通全栈第一脉 6-1 API接口安全相关知识(加密&算法&HTTPS)
课程讲师: Brian
课程内容:
登录鉴权
查看有没有这个权限,这个工作是出现在服务器端
鉴权
Oauth鉴权,扫二维登录。中间人,传输密文信息被别人截取了,然后转发。seesion/cookie session服务器端 cookie浏览器。老式。现在JWT,移动端和跨端,head部分带一个token,最大特点无状态,不需要在服务器端去存储session,也不用去考虑多服务器时候session的同步啦。
算法/加密 把明文的信息按某种算法进行加密变得不可读。对称加密,非对称加密
HTTPS 对通信的信道进行一个加密
常见的鉴权方式
- Session/Cookie
优点:较易扩展 简单
缺点:安全性低,性能低,服务端存储,多服务器同步session困难,跨平台困难 - JWT
优点:易扩展,支持移动设备,跨应用调用,安全,承载信息丰富(json)
缺点:刷新与过期处理(传输的时间过去了),Payload不易过大(对网络的资源占用多),中间人攻击(在token没有过期的时候,发送到服务器的请求都是有权限的) - Oauth
优点:开放(任何的服务器商都可以去实现,任何的软件商都可以去使用,微信登录,QQ登录),安全,简单,权限指定。
缺点:需要增加授权服务器,增加网络请求(有回调的存在,耗费更多的时间)。
什么是JWT
JWT的全称是JSON Web Token(Json格式中的网络传输的token),一个JWT又三部分构成:Header,Payload,Signature。头部 载荷 签名
Header {‘alg’:‘HS256’,‘typ;‘JWT’} token使用的加密的方式以及token的类型
Payload 是JSON中用户的一些信息 比如用户名过期时间 {‘sub’:‘2022-01-01’,‘name’:‘Brian’,‘admin’:true}
Signature HMACSHA256(base64UrlEncode(header)+’’
+’.’+base64UrlEncode(payload),secret)是由 header base64的值加上 Payload Base64的值再加secret生成的一个字符串
JWT特点
- 防CSRF(主要是伪造请求,带上Cookie)
- 适合移动应用(这里指的是app,因为cookie是要存放在浏览器上的,app对其支持不好)
- 无状态,编码数据(不需要像session一样存储会话状态,传输数据进行编码保证安全性)
典型的JWT样子
最后是签名
网址:https:jwt.io 在线产生,解密jot
主要是去比对Signature签名是否一致
JWT工作原理
确实是在过期时间内携带,但安全是相对的。通过中间信道进行加密,也更安全。
算法/加密
算法中的指令描述的是一个计算,当其运行时能从一个初始状态和初始输入(可能为空)开始,经过一系列有限而清晰定义的状态最终产生输出并停止于一个终态。function 参数
数据加密的基本过程,就是对原本为明文的文件或数据按某种算法进行处理,使其成为不可读的一段代码,通常称为’密文‘。通过这样的途径,来达到保护数据不被非法人窃取,阅读的目的。
中间的FN加密过程分为对称性加密和非对称型加密,对称型的加密和解密是一套算法,非对称的需要公私钥。对称的双方拿到的是同一个密钥。
安全传输协议HTTPS
HTTPS(HyperText Transfer Protocl Secure)超文本传输安全协议,常称为HTTP over TLS,HTTP over SSL或HTTP Secure)是一种计算机网络进行安全通信的传输协议
课程总结:
本章节通过对鉴权,加密/算法,HTTPS三个方面讲述了API接口安全的相关知识,对于前端小白来说比较通俗易懂,有了个大致的概念,着重介绍了现在主流的鉴权方式JWT,它因为更适合移动端和多端的鉴权而称为现在最主流的鉴权方式。后面还会简单的去直接写个JWT鉴权,前端多了解下这方面的内容对平时的日常开发和升级确实是有好处。