请问在微信公众号开发中,验证数据时,nonce参数有什么作用,因为要验证数据的安全性,timestamp+token+signature感觉已经可以验证了。为什么要加入nonce,听说是为了防伪造,但有timestamp应该可以防伪造了吧?不很不理,希望有人能指点一下,谢谢。
nonce是一个随机数
Token验证
http://www.weixingon.com/wechat/wechatappdev/2-1-2.php
新增随机数是为了加大伪造的难度,token、timestamp、nonce,三个数中,token只有自己知道而且是不变的,后面两个参数是变化的。随机数是不确定的,攻击中无法伪造。验证端只要按照约定的算法再运算一遍,就知道是不是微信服务器的请求了。
timestamp,当前的时间戳,这个是可以获取的。必须再加个nonce随机字符串去与token排序再SHA1加密与signature比较判断是否来自微信服务器请求。
timestamp,当前的时间戳,这个是可以获取的。必须再加个nonce随机字符串去与token排序再SHA1加密与signature比较判断是否来自微信服务器请求。
设置timestamp和nonce都是为了防止Replay Attacks,如果只设定timestamp,则不能避免在允许的时间间隔内的重放攻击,所以设定随机数nonce,如果黑客窃取上次放的请求,在允许的时间间隔内再次发送该请求,由于nonce校验不通过,则可阻止该重放攻击。