频道栏目
读书频道 > 移动开发 > 其他综合 > 微信公众平台应用开发实战
2.1.2 Token验证
2013-09-30 16:40:36     我来说两句
收藏   我要投稿
全书一共9章,在逻辑上分为四大部分:第一部分(第1章)介绍了微信公众平台的开发模式、数据交互方式,以及开发公众平台应用所需要的各项技术;第二部分(第2~4章)首先详细讲解了微信公众平台开放的所有API的功  立即去当当网订购

Token是一个任意的字符串,你提交Token给微信后台之后,只有你和微信后台知道这个字符串是什么,也就是只有微信后台和我们的公众账号服务器知道这个字符串。于是Token就成了这两台服务器之间的密钥,它可以让公众账号服务器确认请求是来自微信后台还是恶意的第三方。具体过程如下:

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

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

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

具体如何通过代码实现这些,我们会在下一章讲解。

您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力  
上一篇:2.1.1 接口配置信息
下一篇:2.2.1 文本消息
相关文章
图文推荐
排行
热门
最新书评
特别推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站