JWT流程
1.浏览器使用用户名密码请求接口登录;
2.服务器验证通过后会利用JWT生成一个token返回给浏览器;
3.浏览器请求用户资料接口时会带着这个token;
4.服务器会用jwt对这个token进行验证,验证通过则浏览器可以获取数据
JWT和session的区别
注:CSRF:你登陆了网站A,结果没等退出又去登陆了网站B,而网站B中含有恶意请求,借着你在网站A的合法身份,一个劲的给网站A发送攻击数据。
1.JWT存储在客户端,而session存储在浏览器;
2.session存储在cookie中,存在CSRF(Cross-site request forgery,中文名称:跨站请求伪造)的风险;
3.有了payload部分,JWT可以存储非敏感信息;
4.扩展性。JWT不需要在服务器保存会话信息,所以易于应用的扩展
JWT的组成
JWT的数据格式为header.payload.signature
header:声明加密的算法和类型
payload:主体部分:标准声明+公共声明+私有声明
signature:签证信息,公式 signature = 加密算法(header + "." + payload, 密钥);注:密钥是一种参数,它是在明文转换为密文或将密文转换为明文的算法中输入的参数。密钥分为对称密钥与非对称密钥。
加强JWT的安全型
1.缩短jwt有效时间;
2.使用安全系数高的加密算法;
3.token不要放在Cookie中,有csrf风险;
4.使用https加密协议;