微信小程序之用户数据解密

微信小程序之用户数据解密,第1张

经常看到有点的小伙伴在群里问小程序用户数据解密流程,所以打扒行算写一篇关于小程序用户敏感数据解密教程;

加密过程微信服务器完成,解密过程在小程序和自身服务器完成,即由 encryptData 得到如下数据:

准备知识:

以上3点对于理解解密流程非常重要

根据官方文档,我梳理了大致的解密流程,如下:

重点在6、7、8三个环节。

AES解密三个参数:

服务端解密流程:

下面结合小程序实例说明解密流程:

最后的效果如下:

如果你的小程序没有绑定微信开放平台,解密的数据中不包含unionid参数

小程序绑定微信开放平台连接

从解密的数据看,算得上敏感的数据只有appid;个人觉得openid不是敏感数据,每个用户针对每个公众号会产生一个安全的openid;openid只有在appid的作用域下可用。除非你的appid也泄露了。

那么可以从解密数据得到appid,微信小程序团队是何用意呢?还是前面那句话,openid脱离了appid就什么都不是,openid和appid一起为枯消了方便小程序开发者做到不同小程序应用之间用户区分和隔离,同时能够将微信用户体系与第三方业务体系结合。没此知

所以我认为敏感数据解密的主要用处不是解密后回传给客户端,而是在服务端将微信用户信息融入到自身业务当中。

微信小程序无法获取unionid,首先要检查小程序是否已和微信开发平台关联,如何没有关联,需要先关联。

如果微信小清祥并程序无法获取答迹unionid是因为解密失败,就需要先查看php版本,看解密函数是否应该宴皮是openssl_decrypt。

首先公司开发了小程序, 公众号网页和app等, 之前都是用的openid来区分用户, 但openid只能标识用户桐厅在当前小程序或公众号里唯一, 我们希望用户可以在公司各个产品(比如公众号, 小程序, app里的微信登录)之间, 可扮磨以保持局缺隐用户的唯一性, 还好微信给出了unionid.

下面分两步介绍一下 微信小程序 获取unionid的过程.

1. 首先 在微信公众平台注册小程序 , 然后在小程序上模拟登录流程.

注 : 这里只是简单登录流程, 实际中需要维护登录态, wx.checkSession() 可以检查此时的登录态是否过期. 若过期, 要再次调用 wx.login() , 否则调用 wx.getUserInfo() 会拿不到用户数据.

注 : 此时后台服务器接收到你发的 code, 再用appid和appSecret等请求微信可以拿到openid和session_key encrypted_data, iv 等数据, 通过appId, appSecret解密可以获得openid和其他信息. (此时解出来并没有unionid, 接下来看第二步)

2. 接下来到 微信开发平台去 绑定开发账号.

一开始我也是对开放平台, 公众平台什么的有点懵, 后来看到开发平台的管理中心才明白, 这些移动应用, 网站应用 或者公众号/小程序 能绑定同一个微信开发平台账号下, 则同一用户,对同一个微信开放平台下的不同应用,unionid是相同的。

大抵就是上图这样设置吧 , 立刻生效(有时也会过几分钟吧

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12423396.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存