独立开发者系列(20)——扫码登录

(1)网页端的安全登录设计
很多大型网站都有登录限制。这里以一个案例作为例子完整解析。理解安全的登录设计方式,无论对于以后做自动化,自动登录网站,获取数据,还是自己开发月租类型的系统非常有用。当前一般无法避免的一个问题,比如你提供一个服务,典型的比如课程网,你已经把价格定义的很便宜了,比如25元/月,但是别人可能只需要你里面的一部分或者用一俩天,典型的比如网盘/下载/影视剧/听歌,总有人会将自己的账号出租出去获利,这是变相的损害了网站的权益。,

在系统早期没有用户的时候,无所谓用户怎么共用账号,但是到了后期实在是用户一直很多,但是收益不涨的情况下,就不得不开始一些设计的措施与反制措施。

 首先,用户进入页面的时候,随机生成一个唯一设备码,只要是随机就行 类似84ec5ad9282b49dc679071da39b95564 这种长串,这样每个浏览器登录的时候,检查是否生成了一个设备码,没有设备码,生成一个并写入到cookie或者storage里面。如果用户试图登录的时候,将手机号绑定该设备码。

将设备码关系和手机号关系上报到了服务器端,服务器记录了对应关系。需要注意的是,一定要加个token验证提交端的身份,否则任意交口上报的数据,都被采用,存在上报无法验证确定安全性。

然后用户在提交手机号+密码的时候,将上一步接口的token和deviceid 俩个参数放入header里面传递。拿到了数据之后校验身份,如果设备码和手机号还有token三者不统一,表示是从不同地方提交的,可以拒绝此次登录。因为可能存在其他端欺骗服务器情况。然后才开始验证手机号+密码或者验证码的关系。

身份验证通过,会返回一个登录的token.用登录的token和设备端deviceid,去注册当前的设备在线。这样就保证了用户不用一直验证账号密码相关。将token和device进行强绑定,

   (2)扫码登录的实现
如果我们测试WX的二维码,可以发现是

https://weixin.qq.com/x/aaaaaaz这种类似链接,生成这个链接的时候,已经上报到服务器中心,上报了一个自己的唯一设备号+该链接+对应token,其实是我们手机扫码的时候,访问到了远程这个资源,我们微信扫到这个链接的时候请求了远程,这样远程知道你是要在这个客户端id登录,就实现了扫码登录。

另外一个实现例子

https://xluser-ssl.xunlei.com/xluser.core.login/v3/qrlogin?redirect_uri=

Center Account Personal
客户端会提供client_id scope user_code三个参数被扫码的服务器端获取到。拿到这三个参数之后(也就是扫码客户端),再次向远程服务器发三个参数的请求,被摄像头拿到这三个参数之后,将本地软件上登录的token+设备信息+二维码的三个参数一起推送到另外一个决定扫码登录的链接。

先验证token和设备的权限是否通过检测,如果通过,可以根据客户的user_code 可以检查到客户端。如果是网页端的登录就是不断的发送当前的设备id,一获取到登录返回的接口信息就跳转进入页面里面,根据token获取登录客户的信息。这样就实现了扫码登录的逻辑功能。

所以如果是直接使用token登录,因为登录时候的设备id是绑定了这个token的,在完全无法获取设备id的时候,直接使用token必然会异常。

小结:扫码的本质是通过摄像头解二维码变成参数,然后将扫码得到的参数加上自己的授权token,向注册服务器注册,然后得到信息后登录。

  • 36
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大梁来了

千山万水总是情,打赏一块行不行

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值