忘了前几天在哪里(似乎是本站,但是搜索了下没找到)看到帖子抱怨说,在一台登录了 非本人微信号 的设备,使用 自己的手机号及验证码 通过微信内建的手机号授权管理快速登录某个微信小程序之后,该微信号主人可以 免验证登录绑定了该手机号的小程序,并正常使用部分功能。
当时看到这个帖子我也没有过多思考,甚至有点赞同其中一条回复 你把验证码提供给别人你活该 (原话忘记了,大致意思如此...)。今天无意中又想到了这个问题,于是在小红书上做了一些搜索,发现有不少人遇到过类似问题,最早可以追溯到 2024 年。也是搜索过后,我意识到了这个操作的严重性。
于是我做了一个简单的验证,过程大致如下:
- 在非常用设备上登录微信小号
- 打开支持“一键登录”的小程序(各家的叫法不同,目的是触发调用微信获取手机号的 API ),唤起微信官方的手机号授权界面
- 微信弹出手机号选择框,默认显示当前 微信绑定号码
- 选择下方的 使用其它号码 (另一个等价入口是:微信-发现-小程序-右上角小人头像-我的手机号码-添加手机号)
- 在弹出的微信的 添加手机号 界面,输入我自己的手机号,并勾选 保存手机号,下次使用无需再次添加 ,完成后续的添加操作
- 打开其它小程序,触发小程序的“一键登录”,微信授权弹窗出现了刚刚添加的手机号(这是预期结果,没有问题),选择该手机号后,在部分小程序中可以进入该手机号绑定的账户,并可正常使用部分功能
上述操作流程其实看起来完全符合预期,我相信该功能也是微信团队为多手机号用户考虑而开发的。
但真正的问题也恰恰在这里:这个绑定操作似乎并不只是一次性授权,更像是把某个手机号保存到了当前微信号下面。 也即,如果你在别人微信内添加并保存了自己的手机号,后面如果对方打开支持微信手机号授权登录的小程序,就可能在授权弹窗里继续选择你的手机号;而部分小程序如果直接把微信授权返回的手机号作为登录依据,就可能进入这个手机号绑定的账户。
至此,我认为至少有三点值得注意:
首先,绑定的后果与用户的理解有一定偏差
很多人看到短信验证码,潜意识会认为是“登录需要验证”。但实际情况是它可能并不是一次性登录,而是把手机号保存到了当前微信号下面,后续使用该微信号打开支持调用微信手机号授权快速登录的小程序时,仍然可以继续选择这个手机号。也就是说,用户以为自己只是完成了一次验证码登录,但实际可能是给当前微信号保存一把后续 登录部分支持手机号快速验证的小程序 的“钥匙”。
其次,“钥匙”给出去后,你未必能自己收回来。
至少我目前没有找到一个入口,可以反查这个手机号曾经被添加到哪些微信号里,也没有找到一个地方可以统一解绑。
目前似乎只能使用登录了操作绑定的微信号的设备,在上文提到的等价入口处做解绑,尽管你才是该手机号的拥有人。 但问题是,如果那个微信号不是你的,你怎么删?你甚至可能根本不记得自己曾经在哪台设备、哪个微信号上做过类似的绑定操作。
最后,这与你在他人手机上使用短信验证登录 App 的后果截然不同
如果你在他人手机上通过短信验证码登录自己账户,你通常还可以通过自己的设备在 App 的登录设备管理(比较成熟且重要的 App 基本都提供多设备登录管理功能)进行下线操作。但前文提到的小程序登录及使用操作,通过小程序对应的 App 未必能感知,也未必能限制。
通过小程序绑定了你手机号的他人的设备/微信号,不会出现在你手机号绑定的微信号的登录设备列表内。也即如果你忘记曾经在其他人的设备上做过类似的绑定操作,你甚至可能无法知道谁有权限通过小程序访问你的账户。
免责声明:本文目的不是指责任何具体平台或小程序,而是提示一种可能的风险。由于我无法覆盖所有版本、所有小程序和所有场景,欢迎微信团队、小程序开发者或了解该机制的人补充更正。如果已有反查、解绑或风控入口,也希望能在回复内告知,谢谢!