首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网络技术 > 网络基础 >

关于AIDL调用的保险机制(存在2个AIDL的被调用方)

2013-03-21 
关于AIDL调用的安全机制(存在2个AIDL的被调用方)之前做AIDL的时候,只考虑了AIDL的1对1的调用。今天考虑到项

关于AIDL调用的安全机制(存在2个AIDL的被调用方)

之前做AIDL的时候,只考虑了AIDL的1对1的调用。今天考虑到项目安全性,跟大家讨论后发现了如下问题。

为了与之前的博文http://blog.csdn.net/singleton1900/article/details/8434643描述风格表述一致,现在还是以AIDL服务端(被调用端),以及AIDL客户端(调用端)来表述。

这个问题就是:AIDL客户端唯一,AIDL服务端存在2个,且都实现了AIDL接口,接口的入口地址(BIND_ACTION)也一样。

现在,客户端会调用哪个服务端?

回答这个问题最直观的方法就是测试。

经过测试,AIDL客户端始终会调用先安装的AIDL服务端apk。将先安装的AIDL服务端apk卸载后,才会调用后安装的AIDL服务端apk。

因此,使用AIDL作为项目之间的接口可能存在一定的风险。

如何规避这个风险,网上有文章说,在IBinder里面的onTransact函数中调用Binder.getCallingUid()和Binder.getCallingPid()来判断外来方的身份。

但这个方法,只能是被调用方检测调用方的身份。

如果一个第三方应用(调用方)通过AIDL使用支付应用(被调用方)完成购买操作,现在有不法分子获得了双方AIDL接口以及绑定的入口,他就可以伪造一个假的支付应用(将之前的支付应用干掉),从而获取用户的银行密码等重要信息。而上面的那个方法,则无法对这个事例做出相应的安全处理。因为被调用方都不存在了,还怎么检测;况且,检测到的,也还是正常的第三方应用的身份。

有一种解决方案,就是在调用方调用被调用方的时候,检测被调用方的Uid和Pid,如果Uid或Pid异常,就判定是非法被调用方,终止调用。

但这个方法具体怎么实现,现在还不知道。

等了解了,我会更新下这篇博文。

当然如果有大神了解,还请不吝赐教~

热点排行