收藏
回答

小程序通过微信授权手机号的方式被灌水注册用户,消费手机号快速验证组件次数

框架类型 问题类型 操作系统版本 手机型号 微信版本
小程序 Bug

如题,通过我们的服务端日志以及数据库中相关记录,发现有通过小程序微信授权手机号的方式批量灌水注册用户,存在恶意消费 手机号快速验证组件 次数的嫌疑;

我们小程序的授权流程:

  1. 进入小程序时,通过 wx.login 拿到 code,并请求获取 openId 的接口,这时服务端获取到 session_key 缓存但是不会返回给前端;
  2. 用户点击微信授权按钮拉起手机号授权面板,允许授权,回调方法中拿到 encryptedData、iv、code(动态令牌) 并发送给服务端;
  3. 服务端拿到 encryptedData、iv、code(动态令牌) 这三个参数后,如果 code(动态令牌) 有值会优先使用 code(动态令牌) 请求微信服务端获取手机号,否则使用 encryptedData、iv 和 session_key 解密获取到手机号;

-------------------

通过分析服务端日志,批量灌水注册用户的就是通过以上流程进行注册的,encryptedData、iv、code(动态令牌) 这三个参数齐全,而且数据库中有对应的 openId、unionId、session_key 等信息,我们手动进行了解密:

  1. 通过 code(动态令牌) 去请求微信服务端获取手机号,获取失败,应该是 code(动态令牌) 只能用一次的缘故;
  2. 通过 encryptedData、iv、session_key 解密手机号是能成功解出手机号的;

所以小程序前端灌水注册时这三个参数 encryptedData、iv、code(动态令牌) 不是伪造的,是有效可用的;session_key 是在服务端存储的,没有返回给前端,所以不存在 session_key 泄露的问题;

-------------------

另外,判断注册用户为批量灌水注册的原因:

  1. 日志显示这批用户接口请求的 user-agent 全部是:Mozilla/5.0 (iPad; CPU OS 8_3 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Version/8.0 Mobile/12F5027d Safari/600.1.4,这个信息显示访问设备是 iPad,但是接口参数中上报的设备类型确实 iPhone;
  2. 我们的业务场景中有其他的试用固定时间戳作为注册来源,但是这批注册用户的注册来源都是动态的时间戳;
  3. 我们的小程序页面有埋点事件,在埋点后台查不到这批用户的任何事件和页面浏览记录,同一时段有其他用户事件上报正常;
  4. 注册时间段集中在同一个时间段 8:00 ~ 9:00;
  5. 查询 we 分析平台 wx.login 接口监控数据,当天的 8:00 ~ 9:00 事件段,监控数据并无异常,没有出现爆发式增长的情况;

-------------------

灌水注册小程序基础库:2.25.4

如果需要更多信息,我这边可以私信提供;

回答关注问题邀请回答
收藏

4 个回答

  • M.K🐰ིྀ
    M.K🐰ིྀ
    2023-09-26

    我也是同样的问题。蹲一下看看官方怎么解释。

    2023-09-26
    有用
    回复
  • 曾先生
    曾先生
    2023-09-26

    我的项目今天也遇到这个问题了,业务代码中并未使用快速验证组件,但是使用额度被用完了,有兴趣的话看我主页第一个提问

    2023-09-26
    有用
    回复
  • 跨商通
    跨商通
    2023-09-01

    自己的代码问题,自查。

    2023-09-01
    有用
    回复
  • จุ๊บ
    จุ๊บ
    2023-09-01

    静默获取openid后,如果此openid 已经授权手机号,为啥还要用户点击微信授权 去授权手机号呢?

    2023-09-01
    有用
    回复 4
    • 瑜小瑜
      瑜小瑜
      2023-09-01
      这里描述的是注册流程,你说的属于老用户如何登录的问题
      2023-09-01
      回复
    • จุ๊บ
      จุ๊บ
      2023-09-01回复瑜小瑜
      注册和登录有啥区别?都是用openid处理啊,获取openid,根据openid 查询数据库信息,如果查到对应数据,看下手机号是否存在,如果存在直接登录成功;如果不存在,授权手机号一并存储登录成功;如果没有找到对应数据,存储openid,并记录用户授权手机号次数,并要求用户授权手机号,如果该openid 一直没有绑定手机号,并且记录的授权手机号次数 超过几次,就直接封号
      2023-09-01
      回复
    • 瑜小瑜
      瑜小瑜
      2023-09-01回复จุ๊บ
      老哥,你说的我都懂,我现在问题不是这个,我现在的问题是被批量灌水注册了,而且是以微信授权手机号的方式批量注册的,怀疑微信授权手机号是不是存在漏洞。
      2023-09-01
      回复
    • จุ๊บ
      จุ๊บ
      2023-09-01回复瑜小瑜
      那就蹲个官方,看官方怎么回复
      2023-09-01
      回复
登录 后发表内容