Token泄露引发的问题


想学习架构师构建流程请跳转:Java架构师系统架构设计
在这里插入图片描述

1 如何防止token劫持或者说是泄露?

token肯定会存在泄露的问题。比如我拿到你的手机,把你的token拷出来,在过期之前就都可以以你的身份在别的地方登录。

解决这个问题的一个简单办法
在存储的时候把token进行对称加密存储,用时解开。
将请求URL、时间戳、token三者进行合并加盐签名或者缓存用户的ip地址也是不错的选择,服务端校验有效性。
这两种办法的出发点都是:窃取你存储的数据较为容易,而反汇编你的程序hack你的加密解密和签名算法是比较难的。然而其实说难也不难,所以终究是防君子不防小人的做法。

总结
在Web应用中,别再把JWT当做session使用,在绝大多数场景下,传统的cookie-session机制工作得更好;
JWT适合一次性的安全认证,颁发一个有效期极短的JWT,即使暴露了危险也很小。

2 使用JWT代替cookie-session还有如下缺点:

由于JWT要求有一个秘钥,还有对应的算法,生成的令牌看上去不可读,不少人误认为该令牌是被加密的。但实际上秘钥和算法是用来生成签名的,令牌本身不可读是因为进行了base64编码。但是base64编码是可以直接进行解码的。如果JWT中如果保存了敏感的信息,相对于cookie-session将数据存储在服务端来说,更不安全。

3 如何防止表单重复提交问题

网络延迟时,重复点击提交按钮,有可能发生重复提交表单问题。
解决方案:
1.数据库主键唯一。
2.提交成功后重定向。
3.使用 JavaScript 解决,使用标记位,提交后隐藏或不可用提交按钮。 使用 Session 解决: 生成唯一的 Token 给客户端,客户端第一次提交时带着这个 TOken,后台与 Session 中的 进行对比。一样则提交成功并清除 Session 中的 Token。不一样则提交失败。

4 取代JWT方案

有的人说的我看不懂什么方案好像也是个写好的框架做整合我研究研究再写
替代方案PAST
PAST(平台不可知的安全令牌)是安全无状态令牌的规范和参考实现。
与JSON Web Tokens(JWT)不同的是,PAST只允许开发人员进行足够的绑定,而PAST只允许安全的操作。JWT给你“算法敏捷性”,PAST给你“版本化的协议”。你不可能以不安全的方式使用PAST 。

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

赵广陆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值