当前位置: 首页 > news >正文

给第三方使用接口的 URL 签名实现

在开放给第三方使用的API中,如果让第三方携带明文的token请求服务,极有可能泄漏token。由于第三方身份验证服务器是依赖于token的,这样会造成不良的后果。为了提高通信的安全性,我们需要加密token,就是URL签名了。

实现URL的签名过程

  1. 生成URL签名的signature,假设第三方获取到token后,token=“aff9u87kkk444hjg”,openId=8996,将要调用的API路径是zithan.test/user/show,那么URL签名如下:
signature=md5('zithan.test/user/show?openId=8996&token=aff9u87kkk444hjg')
  1. 组合API的路径
zithan.test/user/show?openId=8996&signature=1aba61306711521e8b52ac2f46bb3ebf
  1. 但是现在还有一个问题,就是重放攻击,没有过期时间,假设非法者截获了这个API路径,就能反复调用这个路径。 改进方法是增加时间戳,增加API路径的时效性。
signature=md5('zithan.test/user/show?openId=8996&token=aff9u87kkk444hjg&timestamp=1550732083')
zithan.test/user/show?openId=8996&timestamp=1550732083&signature=cba2aa328577e6aab3e811517e1aa752

注意事项

  1. md5可以换成其他非对称加密的方法
  2. 在获取token那一个步骤也有可能泄露token,那么严谨就需要采取对称加密,进行数据加密。
  3. 因为增加了时间戳,那么就有可能导致第三方和服务器的差异性,那么就需要计算第三方的时间差,在验证签名或者生成签名的时候考虑进去。

相关文章:

  • JVM【第四回】:【对象访问】
  • Flask 教程 第一章:Hello, World!
  • Netty源码解析1-Buffer
  • SCCM 2012 R2实战系列之一:SQL安装
  • 【CuteJavaScript】Angular6入门项目(3.编写服务和引入RxJS)
  • ahjesus 让我的MVC web API支持JsonP跨域
  • 《剑指offer》分解让复杂问题更简单
  • 文件编码
  • 关于springcloud Gateway中的限流
  • 老婆!辛苦了
  • 精品思维导图,流程图模板分享
  • ubuntu制作本地源
  • .Net调用Java编写的WebServices返回值为Null的解决方法(SoapUI工具测试有返回值)
  • Activiti数据库
  • pdf文件如何在线转换为jpg图片
  • 【399天】跃迁之路——程序员高效学习方法论探索系列(实验阶段156-2018.03.11)...
  • 【RocksDB】TransactionDB源码分析
  • httpie使用详解
  • Java比较器对数组,集合排序
  • Python socket服务器端、客户端传送信息
  • vue 配置sass、scss全局变量
  • 给第三方使用接口的 URL 签名实现
  • 构建工具 - 收藏集 - 掘金
  • 力扣(LeetCode)357
  • 如何在 Tornado 中实现 Middleware
  • 源码安装memcached和php memcache扩展
  • 怎样选择前端框架
  • Linux权限管理(week1_day5)--技术流ken
  • #我与Java虚拟机的故事#连载12:一本书带我深入Java领域
  • $L^p$ 调和函数恒为零
  • (3)(3.5) 遥测无线电区域条例
  • (30)数组元素和与数字和的绝对差
  • (HAL)STM32F103C6T8——软件模拟I2C驱动0.96寸OLED屏幕
  • (八十八)VFL语言初步 - 实现布局
  • (附源码)springboot 基于HTML5的个人网页的网站设计与实现 毕业设计 031623
  • (亲测有效)解决windows11无法使用1500000波特率的问题
  • (五)网络优化与超参数选择--九五小庞
  • (一)使用IDEA创建Maven项目和Maven使用入门(配图详解)
  • (转)菜鸟学数据库(三)——存储过程
  • (转)程序员技术练级攻略
  • ***利用Ms05002溢出找“肉鸡
  • .htaccess配置重写url引擎
  • .NET 4.0网络开发入门之旅-- 我在“网” 中央(下)
  • .NET Core 网络数据采集 -- 使用AngleSharp做html解析
  • .net framework profiles /.net framework 配置
  • .net连接oracle数据库
  • @Conditional注解详解
  • [ vulhub漏洞复现篇 ] JBOSS AS 4.x以下反序列化远程代码执行漏洞CVE-2017-7504
  • [2019.2.28]BZOJ4033 [HAOI2015]树上染色
  • [android学习笔记]学习jni编程
  • [Angular 基础] - 指令(directives)
  • [bzoj1912]异象石(set)
  • [C++][数据结构][算法]单链式结构的深拷贝
  • [HEOI2013]ALO
  • [JavaScript]_[初级]_[关于forof或者for...of循环语句的用法]