登陆鉴权
登陆鉴权的基本流程为:用户在客户端输入用户名密码,并通过表单提交到服务器,服务器通过查询对比数据库用户名密码信息判定用户输入的信息是否合法。然后根据与后台逻辑,向前端返回数据。
核心概念
鉴权
- session/cookie
- JWT
- Oauth
算法加密
- Base64
- Md5/SHA-1
- DES/AES
- RSA/ECC
HTTPS
- SSL
- HTTP劫持
- 数据篡改
- 敏感信息
- 中间人
常见的鉴权方式
Session Cookie
- 优点:易于拓展、使用简单
- 缺点:
安全性低
、性能低(服务端存储)、多服务同步session困难(可以通过Redis数据库解决)、跨平台困难
JWT
- 优点:易拓展、支持移动设备、跨应用调用、安全、承载信息丰富
- 缺点:
需要做刷新与过期处理
、Payload不易过大、中间人攻击
Oauth
- 优点:开放、安全、简单、权限制定
- 缺点:需要增加授权服务器、增加网络请求
什么是 JWT
JWT的全称JSON Web Token,一个JWT由三部分构成:Header、Palyload、Signature。
Header
{
"alg":"HS256", // 对称加密 公用一个密匙
"typ":"JWT"
}
Playload
{ // 用户信息
"sub":"2019-10-01",
"name":"zs",
"admin":true
}
Signature
HMACSHA256(
base64UrlEncode(header) +
"." +
base64UrlEncode(payload),
secret
)
JWT 特点
- 防CSRF(主要是防止伪造请求,带上Cookie)
- 适合移动应用
- 无状态,编码数据
JWT 工作原理
没有绝对的安全,只有相对的安全。🔐
JWT的token可能会被劫持,因此要在客户端与服务端传输时进行加密。
算法/加密
算法中的指令描述的是一个计算,当其运行时能从一个初始化输出(可能为空)开始,经过一系列有限而清晰定义的状态最终产生输出并停止与一个终态。
数据加密的基本过程,就是对原来的明文的文件或数据按照某种算法进行处理,使其成为不可睹的一段代码,通常称为“密文”。通过这样的途径来达到保护数据不被非法人窃取、阅读的目的。