本帖最后由 春哥团队风清扬 于 2022-7-14 13:00 编辑
最近一个客服反映一个问题:这几天,突然收到“(微信)公众平台安全助手”发来的通知,标题是“关于小程序session_key安全问题的通知”,内容主要如下:(以下字符,xxx仅用于代替appid、服务器地址等敏感信息,并非不友好内容)。
“你好,检测发现你的小程序appid:xxx 在通信过程中明文传输session_key(传输url:https://www.xxx.xxx:xxx),请去除请求和响应中的session_key,以便消除风险。”
对于突然收到的这条通知,我一开始并没有特别在意。因为最近没发布或者改动过任何小程序代码,而且印象里,我似乎也没有使用session_key之类的东西,就当是微信发错了吧。 结果,周二再次收到一条一模一样的通知:
连续2天收到安全问题通知这下,就不得不引起我的注意了。毕竟如果不解决掉的话,别的影响不说,每天收到一条通知也挺让人苦恼的。 于是,根据通知的内容,跳转到官方的修复指引: 安全课堂|关于小程序session_key泄露漏洞​developers.weixin.qq.com/community/minihome/doc/000806202400280b0edd5866156c01?blockType=99
官方文档介绍了一大堆,无非就是说明一下这个漏洞的潜在危害、发生原因,以及如何解决。 ......攻击者也可利用同样的信息去篡改用户数据,然后加密后返回给服务器,从而达到使用任意手机号进行登录的目的。 除了这点,我觉得更大的危害就是前文提到的,我每天都会收到一条漏洞提醒通知。
官方主要列出了两种情况,对于我个人而言,符合其中一种, 通过auth.code2Session接口获取用户openid时,返回小程序的数据中包含了session_key字段 参考auth.code2Session的文档, auth.code2Session | 微信开放文档​developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/login/auth.code2Session.html
经过排查后台登录部分的代码,返回值JSON格式的数据包确实包含了“session_key”字段,
问题是,session_key本来就不是我想要的,我就是想获取一个openid而已,官方非要一股脑儿返回给我,我想着既然人家给了,我就接收了呗。 结果用了一年都没事,今天突然告诉我,接收session_key的做法有安全漏洞? 解决办法如下:
就先这样吧,欢迎大家交流!
|