JWT 拓展

 

JWT适用场景

https://www.jianshu.com/p/af8360b83a9f

适用于一次性操作的认证,颁布一个很短过期时间的JWT给浏览器。

 

无状态的JWT无法实现精确的在线人数统计。

建议使用https协议,因开销问题取决于公司。

利用cookie存储token需要注意

1、cookie有大小限制(通常为4k);

2、和浏览器有cookie数量限制(例如Firefox每个域名cookie限制为50个);

3、若用localstorage存储token,需防止xss攻击;

 

刷新jwt token

https://www.jianshu.com/p/78e15a1ac7f2

jwt不能记录客户端信息,所以一旦token失效,客户端必须重新获取token

在token中加入refreshtoken,设置exp时间为t,设置refreshtoken为2t

如果客户端携带失效token请求服务器

服务器验证token失效,验证refreshtoken是否失效,若未失效则创建新的token,并放回给客户端

客户端接收请求内容,并将新返回的token覆盖原始token,下次访问携带新token

 

jwt token盗用

https://segmentfault.com/q/1010000010003323/a-1020000010004454

因为jwt属于无状态服务,所有信息都存储于客户端,对于token盗用问题可使用一下方案

1、使用HttpOnly提升cookie安全性,可防止XSS攻击、使用https协议、

将JWT通过HTTP header发送给服务端(而不是通过cookie自动发送)可以有效防护CSRF

2、使用有状态的session,同时可以解决服务器可控问题

 

扩充

cookie使用HttpOnly

在Cookie中包含httponly属性时为true,Cookie 不允许通过JS来读写。可防止XSS攻击。

为什么在请求头写token并且使用https就安全了

http协议传输的数据都是未加密的,为明文传输。

​http 是超文本传输协议,信息是明文传输,https 则是具有安全性的 ssl 加密传输协议。

http 和 https 使用的是完全不同的连接方式,用的端口也不一样,前者是 80,后者是 443。

http 的连接很简单,是无状态的;HTTPS 协议是由 SSL+HTTP 协议构建的可进行加密传输、身份认证的网络协议,比 http 协议安全。

https就是http的安全版本,但是https需要ca证书,一般需要收费

 

参考

https://www.cnblogs.com/zhangsanfeng/p/9125732.html

 

posted @ 2018-12-03 11:22  听雨的人  阅读(500)  评论(0编辑  收藏  举报