我感觉是这样。APP暴露给我们一个js接口用来获取登录APP用户的手机号,APP不是我们负责的,所以其安全与否我们不需要关心,关心主要是也没有用。
如果APP接口只返回给我们手机号的话,其实是无法做不到百分百安全的,因为你无论怎么处理,加token也好,前端加密后端验证也罢。加token的过程与加密的过程等必然需要在前端进行,在前端进行就没有秘密可言。
所以我感觉我们只能是增加安全性,并没有办法彻底避免。
建议如下:
- 获取到用户手机号后,使用
hash(手机号+签+时间戳)
生成hash值,然后将手机号、hash值、时间戳
一并传给后台,后台首先验证时间戳是否在合理的范围内(比如允许与服务器偏差60s),然后难hash值是否已经在60s使用过,最后在使用使用hash(手机号+签+时间戳)
来验证接收的hash值是否合法。 - 在合法的情况下,为此手机号生成唯一的token,并在后台做好token与手机号的映射,然后把token返回给前端。
- 在以后的请求中,直接使用token来替待手机号,后台根据token来获取对应的手机号是哪个。
当然了,实际过程中可能还要更复杂一些,比如:设置token的有效期,在老token过期之前,前端发次老token来换取新token;在前端建立手机号与token的对应关系,所以发现手机号变了就重新请求一个新token等。
希望能够帮到你。
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…