2023年微信小程序API 用户数据的签名验证和加解密

作者: --时间: 2022-09-29 阅读量:

保障用户数据安全:微信小程序API用户数据的签名验证和加解密


1. 数据签名校验

为确保开放接口返回的用户数据安全性,微信对明文数据进行签名。开发者可以对数据包进行签名校验,确保数据完整性。

  1. 签名校验算法需要涉及用户的session_key。开发者需在wx.login登录流程中获取用户的session_key,并自行维护与应用的自身登录态的对应关系。
  2. 通过调用wx.getUserInfo等接口获取数据时,接口会同时返回rawData、signature两个参数。其中signature = sha1(rawData + session_key)。
  3. 开发者将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)进行对称解密。

  1. 对称解密使用的算法为AES-128-CBC,数据采用PKCS#7填充。
  2. 对称解密的目标密文为Base64_Decode(encryptedData)。
  3. 对称解密秘钥aeskey=Base64_Decode(session_key),其中session_key是16字节。
  4. 对称解密算法初始向量iv将在数据接口中返回。

微信提供了多种编程语言的示例代码(点击下载),每种语言类型的接口名字一致。可以参照示例调用方式。

另外,为保证数据有效性,我们会在敏感数据上添加数据水印(watermark)

一套系统全搞定
  • 商家管理
  • 商品管理
  • 订单管理
  • 会员管理
  • 营销中心
  • 供应链入驻
  • 财务管理
  • 支付分账
  • 商城直播
免费试用
更多产品任你选
  • B2B2C多用户商城系统

    类天猫&京东模式系统

    介绍方案
  • B2B2B电商交易系统

    全渠道订货/采购及经销商管
    理数字化系统

    获取案例
  • S2B2B电商交易系统

    上下游资源整合数字化解决方

    演示后台
  • 企业集采商城系统

    中大型企业数字化采购与交易
    系统

    模式介绍
  • 员工福利商城系统

    集福利管理、发放于一体的员工福利商城

    马上试用