Token泄露引发的问题

简介: Token泄露引发的问题

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 。


目录
相关文章
|
缓存 资源调度
解决安装依赖时报错:npm ERR! code ERESOLVE
解决安装依赖时报错:npm ERR! code ERESOLVE
5316 0
解决安装依赖时报错:npm ERR! code ERESOLVE
|
存储 负载均衡 安全
分布式文件系统实战,使用MinIO构建分布式文件系统!
随着文件数据的越来越多,传统的文件存储方式通过tomcat或nginx虚拟化的静态资源文件在单一的服务器节点内已经无法满足系统需求,也不利于文件的管理和维护,这就需要一个系统来管理多台计算机节点上的文件数据,这就是分布式文件系统。
5995 0
分布式文件系统实战,使用MinIO构建分布式文件系统!
|
前端开发 虚拟化
简单记录使用 ElementPlus 的虚拟化树形控件(el-tree-v2)心得
这篇文章分享了作者使用ElementPlus的虚拟化树形控件`el-tree-v2`的心得,展示了其基本用法和如何通过自定义模板来增强树节点的交互性。
3732 1
简单记录使用 ElementPlus 的虚拟化树形控件(el-tree-v2)心得
|
关系型数据库 MySQL 数据库
Vue3项目引入 vue-quill 编辑器组件并封装使用
本文介绍了如何在Vue3项目中引入并封装使用`vue-quill`富文本编辑器组件,包括安装配置、父页面实现、子组件设计以及使用方法和效果展示。
2740 0
Vue3项目引入 vue-quill 编辑器组件并封装使用
|
Java Spring
spring cloud 通过feign请求动弹设置请求头heades
spring cloud 通过feign请求动弹设置请求头heades
706 0
|
Java 开发者
Java文档注解中@link与@see的使用详解
Java文档注解中@link与@see的使用详解
1643 0
|
算法 Java 测试技术
mybatis-plus雪花算法生成Id使用详解
mybatis-plus雪花算法生成Id使用详解
4386 0
mybatis-plus雪花算法生成Id使用详解
|
设计模式 安全 Java
深入理解Spring Boot AOP:CGLIB代理与JDK动态代理的完全指南
深入理解Spring Boot AOP:CGLIB代理与JDK动态代理的完全指南
3429 1