如何保证token的安全

2023-11-09

接口的安全性主要围绕token、timestamp和sign三个机制展开设计,

保证接口的数据不会被篡改和重复调用,下面具体来看:

Token授权机制:
用户使用用户名密码登录后服务器给客户端返回一个Token(通常是UUID),并将Token-UserId以键值对的形式存放在缓存服务器中。

服务端接收到请求后进行Token验证,如果Token不存在,说明请求无效。Token是客户端访问服务端的凭证。

时间戳超时机制:
用户每次请求都带上当前时间的时间戳timestamp,服务端接收到timestamp后跟当前时间进行比对,

如果时间差大于一定时间(比如5分钟),则认为该请求失效。时间戳超时机制是防御DOS攻击的有效手段。

签名机制:
将 Token 和 时间戳 加上其他请求参数再用MD5或SHA-1算法(可根据情况加点盐)加密,加密后的数据就是本次请求的签名sign,

服务端接收到请求后以同样的算法得到签名,并跟当前的签名进行比对,如果不一样,说明参数被更改过,直接返回错误标识。

签名机制保证了数据不会被篡改。

拒绝重复调用(非必须):
客户端第一次访问时,将签名sign存放到缓存服务器中,超时时间设定为跟时间戳的超时时间一致,

二者时间一致可以保证无论在timestamp限定时间内还是外 URL都只能访问一次。如果有人使用同一个URL再次访问,

如果发现缓存服务器中已经存在了本次签名,则拒绝服务。如果在缓存中的签名失效的情况下,有人使用同一个URL再次访问,

则会被时间戳超时机制拦截。这就是为什么要求时间戳的超时时间要设定为跟时间戳的超时时间一致。

拒绝重复调用机制确保URL被别人截获了也无法使用(如抓取数据)。

流程如下:

客户端通过用户名密码登录服务器并获取Token
客户端生成时间戳timestamp,并将timestamp作为其中一个参数。
客户端将所有的参数,包括Token和timestamp按照自己的算法进行排序加密得到签名sign
将token、timestamp和sign作为请求时必须携带的参数加在每个请求的URL后边, 例如下面URL
(http://api.com/users?token=asdsadasd&timestamp=123&sign=123123123)

服务端写一个过滤器对token、timestamp和sign进行验证,只有在token有效、timestamp未超时、缓存服务器中不存在sign三种情况同时满足,本次请求才有效
在以上三中机制的保护下,

如果有人劫持了请求,并对请求中的参数进行了修改,签名就无法通过;

如果有人使用已经劫持的URL进行DOS攻击,服务器则会因为缓存服务器中已经存在签名或时间戳超时而拒绝服务,所以DOS攻击也是不可能的;

如果签名算法和用户名密码都暴露了,那齐天大圣来了估计也不好使吧…

最后说一句,所有的安全措施都用上的话有时候难免太过复杂,在实际项目中需要根据自身情况作出裁剪,

比如可以只使用签名机制就可以保证信息不会被篡改,或者定向提供服务的时候只用Token机制就可以了。

如何裁剪,全看项目实际情况和对接口安全性的要求~

努力做一个伪程序员, 不管道路有多么的艰苦…

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何保证token的安全 的相关文章

随机推荐

  • Android 使用ffmpeg软编码 将摄像头采集视频编码成视频文件

    Android 使用ffmpeg软编码 将摄像头采集视频编码成视频文件 这次代码实现的是视频采集的功能 Android 通过jni 调用ffmpeg 编码yuv数据变成视频文件 先上代码 编码器上下文保存的实体 struct EnCodeB
  • R语言课程论文

    本文是自己在学习R统计分析课程后的课程小论文 对详细详细的文档及实现的R代码感兴趣者 可见文末获取方式 若转载请注明出处 欢迎大家交流学习 不足之处请多指教 Word版全文以及相应的r代码获取方式 资源下载链接 https download
  • 学一点Wi-Fi:WPA3 BP/OCV/SCV/PK/H2E/TD

    WFA在2020年底发布了WPA3标准的第三版 其中又提出了一些新的feature 这里结合之前的版本简单总结一下 1 BP BP是Beacon Protection的缩写 问 Beacon中的信息都是未加密的 所以可能存在攻击者会对AP发
  • 课设:影院管理系统

    影院管理系统 导言 知识点总结 课设介绍 导言 从3月份开始到现在 大概两周多的时间 写了一个影院管理系统 功能有待改善 有的功能还有点bug需要该 现在总结一下 影院管理系统告一段落 接下来要学习算法和数据结构 知识点总结 一 三层架构
  • 一文看懂npm、yarn、pnpm之间的区别

    本文作者对比了当前主流的包管理工具npm yarn pnpm之间的区别 并提出了合适的使用建议 以下为译文 NPM npm是Node js能够如此成功的主要原因之一 npm团队做了很多的工作 以确保npm保持向后兼容 并在不同的环境中保持一
  • 大数据毕设选题 - 深度学习口罩佩戴检测系统(python OpenCV YOLO)

    文章目录 0 前言 1 课题介绍 2 算法原理 2 1 算法简介 2 2 网络架构 3 关键代码 4 数据集 4 1 安装 4 2 打开 4 3 选择yolo标注格式 4 4 打标签 4 5 保存 5 训练 6 实现效果 6 1 pyqt实
  • Linux(ubuntu)上安装RDP Server(Xrdp)使用的注意事项

    ubuntu上的基本安装方法 1 apt get install xrdp 基本上就已经安装完成了 但是此时连接会出现异常 类似黑屏的情况 原因 1 Xrdp不支持unity 3D的图形 解决方法 1 使用xfce或者gnome 2d等 如
  • C#小知识

    项目编译后复制文件到生成目录 方法1 对于单个文件 可以点击属性 输出目录里选择始终复制 方法2 把项目中的ServerScripts复制到输出目录 在项目设置中 生成事件里添加批处理 xcopy ProjectDir ServerScri
  • anaconda用法

    查看已经安装的包 pip list 或者 conda list 安装和更新 pip install requests pip install requests upgrade 或者 conda install requests conda
  • LINUX权限-bash: ./startup.sh: Permission denied

    LINUX权限 bash startup sh Permission denied 执行 startup sh 或者 shutdown sh的时候 报 Permission denied 需要用命令 chmod 修改一下bin目录下的 sh
  • spring boot配置双Kafka方法

    第一步 application yml的配置 server port 8080 spring application name demo kafka one bootstrap servers xxx xxx xxx xxx consume
  • android动态毛玻璃,Android模糊处理简单实现毛玻璃效果

    自从iOS系统引入了Blur效果 也就是所谓的毛玻璃 模糊化效果 磨砂效果 各大系统就开始竞相模仿 这是怎样的一个效果呢 我们先来看一下 如下面的图片 实现效果大家都知道了 如何在Android中实现呢 说白了就是对图片进行模糊化处理 小编
  • Vue项目生成二维码

    场景 民主测评 闭卷测试 Vue项目生成二维码 使用手机浏览器扫码录入答题 一 创建vue项目 样式布局 接口联调 npm run build 打包成dist 文件 让后台发送到服务器中 页面地址就获取到了 二 前引入vue qr 二维码地
  • openwrt 编译笔记

    错误一 Creating filesystem with parameters Size 50331648 Block size 4096 Blocks per group 32768 Inodes per group 6000 Inode
  • 基于OpenCV-Python实现的人脸识别

    在初步学习了数字图像处理的相关知识并在Matlab进行了初步的模拟后 我将学习的中重点转向了Python环境下的OpenCV库的学习 以此博客记录一下学习的进程 本文章代码主要参考OpenCV库源代码 刘波译的 OpenCV3计算机视觉Py
  • Apache Tomcat

    简介 简而言之 Tomcat是一个免费的开放源代码的Web应用服务器 属于轻量级应用服务器 Apache Tomcat Tomcat是Apache 软件基金会 Apache Software Foundation 的Jakarta 项目中的
  • 邻接矩阵广度优先遍历算法 连通图采用邻接表深度优先遍历的非递归过程 图G中距离顶点v的最短路径长度最大迪杰斯特拉

    1 采用邻接矩阵存储图的广度优先遍历算法的实现 参考教材算法6 5选作 2 一个连通图采用邻接表作为存储结构 设计一个算法 实现从顶点v出发的深度优先遍历的非递归过程 3 设计一个算法 求图G中距离顶点v的最短路径长度最大的一个顶点 设v可
  • 函数调用之回调函数

    重新回到CSDN 工作以来写第一个博客 不码代码 不追求高大上的专业术语 只求通俗的理解 以前听过回调函数 也研究过 但由于没有在实际中用过 所以也没太懂 每次一听到回调函数这个词 感觉很高大上 最近在工作上遇到了 而且被公司前辈广而用之
  • Pickle包的使用

    想要将Python程序运行中得到的字符串 列表 字典等数据 长久的保存下来 而不是简单的放入内存中关机断电就丢失数据 Pickle模块就是专门用来完成此功能的模块 它可以将对象转换为一种可以传输或存储的格式 它实现了基本的数据序列和反序列化
  • 如何保证token的安全

    接口的安全性主要围绕token timestamp和sign三个机制展开设计 保证接口的数据不会被篡改和重复调用 下面具体来看 Token授权机制 用户使用用户名密码登录后服务器给客户端返回一个Token 通常是UUID 并将Token U