天天看点

android应用安全——组件通信安全(Intent)

    这里主要涉及到了Activity、Content Provider、Service、Broadcast Receiver等。这些如果在Androidmanifest.xml配置不当,会被其他应用调用,引起风险。android应用内部的Activity、Service、Broadcast Receiver等,他们通过Intent通信,组件间需要通信就需要在Androidmanifest.xml文件中暴露组件,前面提到的风险就有可能是不恰当的组件暴露引起的。

Intent启动不同组件的方法如下:          组件名称 方法名称 Activity                                                                          startActivity() startActivityForResult()                                                                                                                                                Service startService() bindService() Broadcasts sendBroadcast() sendOrderedBroadcast() sendStickyBroadcast()

     Intent的两种基本用法:一种是显式的Intent,即在构造Intent对象时就指定接收者;

另一种是隐式的Intent,即Intent的发送者在构造Intent对象时,并不知道也不关心接收

者是谁,有利于降低发送者和接收者之间的耦合。

  显示调用和隐式调用都能过在不同应用间传递数据。

        1、恶意调用

          2、恶意接受数据

          3、仿冒应用,例如(恶意钓鱼,启动登录界面)

          4、恶意发送广播、启动应用服务。

          5、调用组件,接受组件返回的数据

       6、拦截有序广播

         上面也是想到了一部分,应用中应该会有更多的例子。

       不参与跨应用调用的组件添加android:exported="false"属性,这个属性说明它是私有的,只有同一个应用程序的组件或带有相同用户ID的应用程序才能启动或绑定该服务。

        参与跨应用调用的组件或者公开的广播、服务设置权限。设置权限如下:

    (1)组件添加android:permission属性。

       (2)声明< permission>属性

     protectionLevel有四种级别normal、dangerous、signature、signatureOrSystem。signature、signatureOrSystem时,只有相同签名时才能调用。

       (3)调用组件者声明<uses-permission>

        Android 提供各种 API 来在运行时检查、执行、授予和撤销权限。这些 API

 是 <code>android.content.Context</code> 类的一部分,这个类提供有关应用程序环境的全局信息。

/**

* @author 张兴业

*  http://blog.csdn.net/xyz_lmn

*  android开发进阶群:241395671

*/

<a href="http://www.ibm.com/developerworks/cn/opensource/os-cn-android-sec/">http://www.ibm.com/developerworks/cn/opensource/os-cn-android-sec/</a>

     本文转自xyz_lmn51CTO博客,原文链接:http://blog.51cto.com/xyzlmn/1230744,如需转载请自行联系原作者

继续阅读