发表于: 2018-01-21 12:55:29
0 608
今天完成的事情
1.解决了真实项目IM即时通讯接口中存在的一个漏洞.
在贴方案前先解释下几个名词:
accid及token:网易云IM即时通讯的accid及token.每个用户都有.
两端:发送消息方的accid及token和接收消息方的accid及token
原本的方案是提供接口用于前端查询两端的accid及token.有了两端的accid及token前端就能调用网易云IM即时通讯的jsSdk接口收发消息.
这样有个漏洞,攻击者调用查询两端accid及token(该接口以id作为参数,而id是可以随意填写的)接口可以获得自己的和其他用户的accid及token..有了两端的accid及token,攻击者识别出im通讯产品使用的是网易云的,那么直接下载jsSDK调用发送消息接口就能随意发送垃圾消息了..
首先是在看雪安全论坛发了悬赏贴,也在各大java群咨询也没个可行的方案.
然后想着官网是怎么解决的看能否借鉴的心态,随便找个接口,貌似是一个查询接口,通过id查询,返回学员的信息,太恐怖了,手机号码,qq号什么都返回了.
我只需要把uids参数从0到100万一直发请求就能把官网所有学员的手机号 qq号等信息获取到.......
借鉴无果,然后又去了几个网站.最后简书的做法真的牛逼,无懈可击,让我学到了如何保证接口安全.
简书几乎所有参数都是加密存放在cookie里的,手动传参很少.这样就避免了随意调用接口..
最终方案就是在用户登录时将用户的accid及token存到cookie中,后端提供获取其他用户和教练考务accid及token的接口.
接口中先判断当前用户是否有权限获取所查询用户的accid及token,避免攻击者恶意获取其他用户的accid及token发送垃圾消息.
明天计划完成的事情
1.考务模块的方案做一下.
遇到的困难
无
收获
找漏洞的同时学到了很多啊..
评论