2023年微信小程序API 用户数据的签名验证和加解密
保障用户数据安全:微信小程序API用户数据的签名验证和加解密
1. 数据签名校验
为确保开放接口返回的用户数据安全性,微信对明文数据进行签名。开发者可以对数据包进行签名校验,确保数据完整性。
- 签名校验算法需要涉及用户的session_key。开发者需在wx.login登录流程中获取用户的session_key,并自行维护与应用的自身登录态的对应关系。
- 通过调用wx.getUserInfo等接口获取数据时,接口会同时返回rawData、signature两个参数。其中signature = sha1(rawData + session_key)。
- 开发者将signature与rawData发送到开发者服务器进行校验。服务器利用相同的算法计算出签名signature2,比对signature与signature2即可校验数据完整性。
以wx.getUserInfo的数据校验为例:
接口返回的rawData:
{
"nickName": "Band",
"gender": 1,
"language": "zh_CN",
"city": "Guangzhou",
"province": "Guangdong",
"country": "CN",
"avatarUrl": "http://wx.qlogo.cn/mmopen/vi_32/1vZvI39NWFQ9XM4LtQpFrQJ1xlgZxx3w7bQxKARol6503Iuswjjn6nIGBiaycAjAtpujxyzYsrztuuICqIM5ibXQ/0"
}
用户的session-key:
HyVFkGl5F5OQWJZZaNzBBg==
因此,用于签名的字符串为:
{"nickName":"Band","gender":1,"language":"zh_CN","city":"Guangzhou","province":"Guangdong","country":"CN","avatarUrl":"http://wx.qlogo.cn/mmopen/vi_32/1vZvI39NWFQ9XM4LtQpFrQJ1xlgZxx3w7bQxKARol6503Iuswjjn6nIGBiaycAjAtpujxyzYsrztuuICqIM5ibXQ/0"}HyVFkGl5F5OQWJZZaNzBBg==
使用sha1得到的结果为:
75e81ceda165f4ffa64f4068af58c64b8f54b88c
2. 加密数据解密算法
如果接口涉及敏感数据(如wx.getUserInfo中的openId和unionId),则接口的明文内容不会包含这些敏感数据。开发者需要对接口返回的加密数据(encryptedData)进行对称解密。
- 对称解密使用的算法为AES-128-CBC,数据采用PKCS#7填充。
- 对称解密的目标密文为Base64_Decode(encryptedData)。
- 对称解密秘钥aeskey=Base64_Decode(session_key),其中session_key是16字节。
- 对称解密算法初始向量iv将在数据接口中返回。
微信提供了多种编程语言的示例代码(点击下载),每种语言类型的接口名字一致。可以参照示例调用方式。
另外,为保证数据有效性,我们会在敏感数据上添加数据水印(watermark)
-
B2B2C多用户商城系统支持企业自营与商户入驻模式共存 会员一站式精细化营销工具 多用户分销,带来爆发式增长
系统支持平台自营+供应商店铺共存的经营模式(类天猫&京东模式),帮助企业打造生态级商业平台为目的的电子商务系统。
免费试用系统 -
B2B2B电商交易系统优化供应链协作 授信及账期支付 商品按照数量阶梯设价
全渠道订货/采购及经销商管理数字化系统,实现供应链整合和交易便捷化。
免费试用系统 -
S2B2B电商交易系统供销一体化,提高市场集中度 集团管控一体化,有效实现供需匹配 移动应用一体化,提高运营综合效率
上下游资源整合数字化解决方案,赋能产业供应链,构建产业互联网生态体系。
免费试用系统

立即扫码关注

多用户商城平台系统