3.1 Token验证

Token是一个用户自定义的任意字符串。在成功提交了开发者自定义的这个字符串之后,Token的值会保存到微信后台。只有服务器和微信后台知道这个字符串,也就是说只有微信后台和公众账号服务器知道这个字符串。于是Token就成了这两台服务器之间的密钥,它可以让公众账号服务器确认请求是来自微信后台还是恶意的第三方。以下是Token验证的具体过程。

1)微信后台在向公众账号服务器发送数据的时候,会额外带上4个参数:timestamp、signature、nonce、echostr,如表3-1所示。其中timestamp是时间戳,nonce是一个随机数,signature是对timestamp、nonce和Token进行SHA1加密后的字符串。SHA1的加密过程是不可逆的,即不能通过timestamp、signature和nonce计算出Token是什么。

表3-1 URL参数说明

2)在公众账号服务器收到timestamp、signature和nonce之后,同样对nonce、timestamp和Token使用SHA1加密算法,得到自己的签名,如果自己的签名和请求中的signatrue是一样的,那么说明请求是来自微信后台而不是恶意第三方。

注意 恶意的第三方有可能会截获微信后台发过来的timestamp、signature和nonce这三个参数,然后直接利用这个三个参数对公众账号服务器发起请求。按照上面的逻辑可以知道,服务器是无法判断出这是个恶意的请求的。这种攻击称为replay攻击。这种攻击方式的防御方法很简单:加上对timestamp的校验。在收到请求之后,将请求包中的timestamp与当前时间比较,如果误差大于一定的值,就可认为这个请求是恶意的。这里不能做相等的比较,因为数据在网络上传输需要时间,同时各个服务的本地时间也是有一些差异的。

微信服务器通过检验signature对请求进行校验(下面有校验方式)。若此次GET的Token验证可以通过,则表示该请求来自微信服务器,这时会原样返回echostr参数内容,表示接入生效,否则接入失败。

Token是什么玩意相关推荐

  1. .NET MVC CSRF/XSRF 漏洞

    最近我跟一个漏洞还有一群阿三干起来了-- 背景: 我的客户是一个世界知名的药企,最近这个客户上台了一位阿三管理者,这个货上线第一个事儿就是要把现有的软件供应商重新洗牌一遍.由于我们的客户关系维护的非常 ...

  2. 指纹(生物识别)的软件框架

    指纹(生物识别)HAL层以上的软件框架(注意跨进程通信的交界) 指纹验证的整体框架(应当结合第一张图片一起看,图中圈红的已被替换) Cryptographic key storage and serv ...

  3. 圈钱跑路 发行自己的ERC20 Token

    发行自己的ERC20 Token 这次主要实现 发行一个自己的ERC20 标准的 Token. (然后进行ICO, 圈钱跑路, 走上人生巅峰,XD) 其实把Token 叫做代币, 容易让人产生误解.实 ...

  4. token系统讲解及过期处理

    token系统讲解及过期处理 1. token是什么?用来做什么 2. token存储在哪?过期了怎么办? 3. 请求拦截与响应拦截执行时机(面试重点) 4. 解决token过期方案一: `重新登录` ...

  5. SpringCloud OpenFeign 服务调用传递 token

    业务场景 通常微服务对于用户认证信息解析有两种方案 在 gateway 就解析用户的 token 然后路由的时候把 userId 等相关信息添加到 header 中传递下去. 在 gateway 直接 ...

  6. 轻轻松松搞定分布式Token校验

    文章目录 前言 token存储 Token 存储实体 login 业务代码 枚举类修改 存储效果 客户端存储 token验证 前端提交 后端校验 自定义注解 切面处理 使用 总结 前言 没想到前天小水 ...

  7. 微信小程序入门10-微信公众号token验证失败

    为了更好的运营公众号,微信官方支持用户自定义实现公众号功能,这里第一步就是配置服务器回调域名,如下图: 如果是SpringBoot项目,我们会写一个如下的Controller类 import lomb ...

  8. 无感token刷新,我是怎么做的

    最近总是回想起大三时为了体(装)验(逼)提出要在学校新版系统中加入无感刷新token的功能.当时只是听到这个玩意甚至还没搞明白是咋回事,于是直到几个月后出来实习也没真正加上这个功能. 先说一个场景:我 ...

  9. 安卓逆向(x车app,登录token)

    一.抓包分析 随便输入个手机号之后点击登录,通过抓包可以看到这个token值是加密的,那么接下来就找这个token的生成地方 二.静态分析代码 打开jadx(没有的可以去github找找),把apk拖 ...

最新文章

  1. linux磁盘怎么分区比较好,500G的硬盘,怎么分区比较合理?
  2. window7 ubuntu12.04 Opensuse13.04 三系统安装
  3. 换了一个皮肤,心情也好多了
  4. 一个常见的asp.net错误解决
  5. pandas 操作 excel
  6. java中虚拟机命令:jstack使用方法
  7. C++ 中dynamic_castlt;gt;的用法
  8. 超详细的SFtp工具类及使用
  9. Linux命令注销电脑,Linux基本命令-注销、关机、重启
  10. h5 调取前置摄像头
  11. vue第四天笔记02——axios请求
  12. 先人一步(小高读书笔记第一季)
  13. 我是如何成为一名少儿编程竞赛老师的
  14. 如何生成公众号带参数二维码
  15. 【_declspec(dllimport)】_declspec(dllimport)
  16. Android okhttp3设置代理(http/https)
  17. Tomcat配置与调优
  18. heaps 和 priority queue堆和优先队列的定义和数据结构表示
  19. 数据建模-如何设计概念模型?
  20. oracle数据库中的虚拟表,Oracle10g中的虚拟专用数据库(VPD)

热门文章

  1. OkHttp相关知识(三)
  2. eslint 换行_预计的换行符是apos;LFapos;,但在Eslint中使用gulp发现apos;CRLFapos;换行符 Dovov编程网...
  3. html5绘制图形幸运大转盘,幸运大转盘 - 慧编程 - 专注于青少年 STEAM 教育的图形化编程平台...
  4. DataGrip 太好使了
  5. 实现图片从远到近css,如何利用景深效果,使图片近大远小,我的demo怎么是近小远大,代码如下:...
  6. 外包程序猿的漫漫人生路
  7. 非全也要卷?复旦大学软件非全很多高分
  8. STM32三菱FX1N,FX2N,FX3U,PLC方案 可以直接上传下载梯形图,在线监控,具有称重功能,数码管功能,可以做到10路模拟量
  9. 16种常用的数据分析方法-因子分析
  10. 认识V模型,W模型,H模型三类模型