webAPI数据校验 - webAPI
公共提交参数,每个命令都需要提交以下公共参数
请求地址:管理后台-软件列表中获取对应软件API地址
请求类型:post
提交参数:data=URL编码后密文&sign=sign
参数名 参数说明
sid 软件SID,后台添加软件后获得
uuid 通用唯一识别码,每次必须变动,用于校验数据合法性方案之一.
t 客户端10位时间戳
m1 临时封包token(sid+key+t 拼接后取MD5值)
m2 当前程序MD5值,如果开启校验MD5,则此值必填,可于程序运行时动态读取自身MD5值.
m3 moduleMd5,购买授权后获得,如使用dll文件,请传入DLLMD5值,同时在"后台-系统-系统设置"中填写.
mcode 客户端机器码(自行获取机器码,若机器码变动则会提示转绑[如果开启"绑定机器码"])
clientid 客户端运行ID,此ID在软件退出之前不可变动,也就是每次启动都生成一个新的clientid,软件退出即作废.
webkey 通用秘钥(webKey),购买授权后获得.

公共返回参数,每个命令都按如下格式返回
参数名 参数说明
status success为正常 error为错误
code 200为正常,其它为错误,请参照错误码表
msg 错误内容明文,请参照错误码表
token 返回封包token(提交封包中的m1+返回封包中t,拼接后取MD5值)
t 封包时间
uuid 提交封包的UUID
result 数据主体,每个函数返回的数据不同,具体请参照对应函数说明.
result_token 数据主体token,将数据以ASCII首字母递增排序,拼接键名与键值,拼接完毕后加上通信秘钥一起取MD5值.

封包一对一匹配,防止中途篡改数据,同时避免服务器被本地化.

所以,获得返回明文后,需要将某些参数与发送明文进行对比.


数据校验:


数据校验在通信过程中尤为重要,这将决定获取的数据是否合法.保证每一条命令都是由服务端发出且中途没有经过篡改.


由于解包过程已经经过一次sign校验,此次不在举例范围.


校验1:返回的UUID是否与提交的UUID相同.相当于"安全码",一包一码,校验数据合法性之一.

    例:如果提交的UUID为:3825a2cc-9a4f-4175-9589-c6fd0af5fb0a

    那么返回的UUID也为: 3825a2cc-9a4f-4175-9589-c6fd0af5fb0a


校验2:拼接提交封包中的m1和返回封包中t,拼接后取MD5值,此值应等于返回封包中的token的值.

    例:提交封包中的m1为:f221b91f6ed219f3b703e1cba16b1ed0,返回封包中的t为:1581789258,

    那么取MD5值("f221b91f6ed219f3b703e1cba16b1ed01581789258)=返回封包中token的值.


校验3:将返回数据中的result,以键名ASKII递增牌序(默认返回已经排好序),将键名与键值拼接,

拼接完毕后再将key(通讯秘钥)拼接到末尾取MD5值,此值应等于返回封包中的result_token的值.

    例:设key为:f221b91f6ed219f3b703e1cba16b1ed0,返回封包中body为:{"b":"2","c":"3","a":"1"}

    以键名ASKII递增牌序为:{"a":"1","b":"2","c":"3"},将键名与键值拼接后,在拼接key后取MD5值.

    那么:取MD5值(a1b2c3f221b91f6ed219f3b703e1cba16b1ed0)=返回封包中result_token的值.


Copyright © 2019-2059 HuWeiDun.Cn All rights reserved.
登记号:2019SR0828127 软著登字第4248884号 冀ICP备19021017号