10.2.2 API登录

10.2.2 API登录

2014年淘宝被曝光一个影响非常大的逻辑登录漏洞,漏洞发现者在乌云报告该漏洞后获得阿里5万元现金的奖励,随后阿里宣布拿出500万人民币建立漏洞悬赏计划。这个漏洞跟很多客户端API登录的形式差不多,相信大家都有在QQ客户端点击邮箱或者QQ空间的图标就直接免登录进入的经历,其实在后端也有一个验证登录过程。来看看淘宝当时的漏洞URL:

验证登录成功后会跳转到这个链接,这个链接里面有一个user_num_iduser_ num_id参数,代表当前登录的用户ID,请求这个链接后服务器端会返回这个用户登录成功后的Cookie信息,这里的问题就在于将用户ID交给这个程序逻辑的时候,并没有带上唯一的一个Token,这就导致只要修改user_num_iduser_num_id这个参数即可登录任意用户。同样,QQ客户端点击图标进入QQ空间的时候我们可以看到这样一个链接:

其中clientuin参数为QQ号码,clientkey参数为当前用户登录的key,只要拿到这个clientkey则可以登录当前QQ号,对于这样的登录方式需要注意以下几个安全点:

(1)登录密钥(clientkey)需要不可预测并且不固定,生成key的算法中加入随机字符。

(2)API接口禁止搜索引擎收录。

(3)登录密钥当次绑定当前主机,换机器不可用,防止QQ木马和嗅探key。