JWT 理解记录

JWT 如何防止CSRF ?

先贴个网上搜索到的信息

使用JWT验证,由于服务端不保存用户信息,不用做sessonid复制,这样集群水平扩展就变得容易了。 同时用户发请求给服务端时,前端使用JS将JWT放在header中手动发送给服务端,服务端验证header中的JWT字段,而非cookie信息,这样就避免了CSRF漏洞攻击。

上面提到JWT有两个优点:

  1. 集群水平扩展容易;
  2. 避免CSRF漏洞攻击;

使用cookie方式存放认证信息时,可以通过 XSS方式, 利用JS 脚本, document.cookie 将cookie内容发送到 攻击者的伪站上面,来实施下一步攻击。
网上比较多的信息,大意是说,将 JWT存放到 Local Storage里面就防止了CSRF,JWT是服务端生成,攻击者无法获取。
疑问点在于: 通过JS脚本,JSON.stingify(localStorage) 不也是获取了信息吗, 如果JWT存放于localStorage,也有很高的风险;

因此JWT不是防止CSRF的手段,它是解决 分布式服务/跨域 场景下用户认证的问题。

JWT缺点

无法注销客户端的Token,客户端的Token 过期后,需要判断为无效,而在服务端, 可以通过黑名单机制, 将注销、过期、失效的Token放入黑名单,JWT Token验证时,排除掉黑名单的无效Token;

  • 8
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值