天天看点

漫谈Android安全框架

详见:51CTO专家专栏 李洋谈Android安全框架

<a href="http://mobile.51cto.com/hot-280012.htm">http://mobile.51cto.com/hot-280012.htm</a>

1. Android具有哪些权限

根据用户的使用过程体验,可以将Android涉及的权限大致分为如下三类:

(1)Android手机所有者权限:自用户购买Android手机(如Samsung GT-i9000)后,用户不需要输入任何密码,就具有安装一般应用软件、使用应用程序等的权限;

(2)Android root权限:该权限为Android系统的最高权限,可以对所有系统中文件、数据进行任意操作。出厂时默认没有该权限,需要使用z4Root等软件进行获取,然而,并不鼓励进行此操作,因为可能由此使用户失去手机原厂保修的权益。同样,如果将Android手机进行root权限提升,则此后用户不需要输入任何密码,都将能以Android root权限来使用手机。

(3)Android应用程序权限:Android提供了丰富的SDK(Software development kit),开发人员可以根据其开发Android中的应用程序。而应用程序对Android系统资源的访问需要有相应的访问权限,这个权限就称为Android应用程序权限,它在应用程序设计时设定,在Android系统中初次安装时即生效。值得注意的是:如果应用程序设计的权限大于Android手机所有者权限,则该应用程序无法运行。如:没有获取Android root权限的手机无法运行Root Explorer,因为运行该应用程序需要Android root权限。

2. Android的组件模型(Component Model)

Android系统中包括4种组件

(1)Activity:Activity就是一个界面,这个界面里面可以放置各种控件。比如:Task Manager的界面、Root Explorer的界面等;

(2)Service:服务是运行在后台的功能模块。如文件下载、音乐播放程序等;

(3)Content Provider:它是Android平台应用程序间数据共享的一种标准接口,它以类似于URI(Universal Resources Identification)的方式来表示数据,如:content://contacts/people/1101;

(4)Broadcast Receiver:与此组件相关的概念是Intent,Intent是一个对动作和行为的抽象描述,负责组件之间程序之间进行消息传递。而Broadcast Receiver组件则提供了一种把Intent作为一个消息广播出去,由所有对其感兴趣的程序对其作出反应的机制。举个简单的例子,:为了实现一个系统启动后播放音乐的功能,则可以定义Intent为android.intent.action.BOOT_COMPLETED,由Broadcast Receiver组件将其进行广播,而系统中的Media Player接收到该信息后则进行播放。

如上所述,4个组件之间的关系如下图:

漫谈Android安全框架

3. Android安全访问设置

每个Android的apk(Android Package)包里面都包含有一个AndroidMainifest.xml文件,该文件除了罗列应用程序运行时库、运行依赖关系等之外,还会详细地罗列出该应用程序所需的系统访问。该文件的基本格式如下:

&lt;?xml version="1.0" encoding="utf-8"?&gt; 

&lt;manifest xmlns:android="http://schemas.android.com/apk/res/android" 

     package="cn.com.fetion.android" 

     android:versionCode="1" 

     android:versionName="1.0.0"&gt; 

   &lt;application android:icon="@drawable/icon" android:label="@string/app_name"&gt; 

       &lt;activity android:name=".welcomActivity" 

                  android:label="@string/app_name"&gt; 

            &lt;intent-filter&gt; 

                &lt;action android:name="android.intent.action.MAIN" /&gt; 

                &lt;category android:name="android.intent.category.LAUNCHER" /&gt; 

            &lt;/intent-filter&gt; 

        &lt;/activity&gt; 

   &lt;/application&gt; 

  &lt;uses-permission android:name="android.permission.SEND_SMS"&gt;&lt;/uses-permission&gt; 

&lt;/manifest&gt; 

如上述文件描述中斜体部分,该文件的作用是说明该软件具备发送短信的功能。Android定义了106种permission,可供开发人员使用,具体详见网址:http://developers.androidcn.com/reference/android/Manifest.permission.html。

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