默认
发表评论 8
想开发IM:买成品怕坑?租第3方怕贵?找开源自已撸?尽量别走弯路了... 找站长给点建议
[已回复] 求教关于MobileIMSDK服务端sdk安全验证方面的一些问题
阅读(37726) | 评论(8 收藏 淘帖1
1.登录模块alreadyLogined分支,PLoginInfo没有经过业务端的回调验证就直接拿来使用
测试:使用A用户加上正确token正常登录,再使用B用户加上随意token登录竟然也成功了(应登录失败)
2.客户端发来的Protocal中的from没有判断,应该判断是否和session的登录id是否一致

即时通讯网 - 即时通讯开发者社区! 来源: - 即时通讯开发者社区!

标签:MobileIMSDK
上一篇:[已回复] android 的MobileIMSDK如何判断用户是否已经登陆下一篇:[已回复] 求助关于MobileIMSDK服务端离线消息重复存储的问题

本帖已收录至以下技术专辑

推荐方案
评论 8
基于这种情况我认为:在session已登录A账号的情况下,客户端发来重新登录的请求,可以不验证。但是也不要使用发过来的userid替换session里的userid。如果客户端需要切换用户,那么必须先logout再重新登录B账号。
引用:JackJiang 发表于 2019-11-06 16:45
那不行,如果业务层实现时onVerifyUserCallBack的逻辑复杂的话,每个包都这样调用性能成本太高了,你了解 ...

有点理解了,IMsdk里的login主要是通讯层的login,断线等多种情况下客户端会自动重新login,为了性能考虑所以在已登录情况下不验证重复登录的信息
引用:xkadxd 发表于 2019-11-06 16:22
这些我了解。我指的是alreadyLogined分支没有调用ServerEventListener. onVerifyUserCallBack(..)

那不行,如果业务层实现时onVerifyUserCallBack的逻辑复杂的话,每个包都这样调用性能成本太高了,你了解一下这个:《即时通讯安全篇(七):用JWT技术解决IM系统Socket长连接的身份认证痛点》,用JWT可以很好的解决,性能也能承受。
引用:JackJiang 发表于 2019-11-06 16:18
这个服务端的回调接口已经留好了,自已加上你的验证逻辑就行了,默认肯定没办法决定你的逻辑是什么,具体 ...

这些我了解。我指的是alreadyLogined分支没有调用ServerEventListener. onVerifyUserCallBack(..)
引用:xkadxd 发表于 2019-11-06 15:53
第一个登录问题,个人认为还是很有必要,不然登录回调接口留着就没有意义了

这个服务端的回调接口已经留好了,自已加上你的验证逻辑就行了,默认肯定没办法决定你的逻辑是什么,具体你看这个回调:ServerEventListener. onVerifyUserCallBack(..),详细看一下api说明。
第二个from验证的话,因为我这边业务只有单聊,发送消息必须先经过服务端的messageReceived,个人认为本不应该从客户端带上from,而直接使用session保存的登录id
第一个登录问题,个人认为还是很有必要,不然登录回调接口留着就没有意义了
默认的sdk因为考虑到算法本身的可读生、简洁性等,所以尽量走的普通的安全场景,让研究算法的人尽量把焦点放到通信算法本身,是这样的思路。

你可以按照你的场景安全要求,进一步深入强化,有必要,可以改写源码,这也是开源的便利。
打赏楼主 ×
使用微信打赏! 使用支付宝打赏!

返回顶部