Android安全性和权限之入门篇

来源:互联网 发布:mac电脑excel表格下载 编辑:程序博客网 时间:2024/06/06 03:56

本文描述应用开发者如何使用Android的安全特性。

Android是一个特权被隔离的操作系统,每个应用都运行在独特的系统识别符,即Linux user ID和group ID。

部分系统同样被系统识别符区分开。因此,Linux将应用程序彼此区分开,将应用程序与系统区分开。

  1. 安全体系

    Android安全体系的核心设计思想在于,默认情况下,任何一个应用程序没有权限,去执行影响到其他应用程序,操作系统或者用户的操作。

    包括读写用户的个人数据(联系人,邮箱),读写其他应用文件,接入网络,电源管理等,都是没有权限的。

    Android应用程序彼此间是沙盒Sandbox的,对于那些沙盒没有提供的额外需求,应用程序必须通过声明权限permission来显式地共享资源和数据。

    应用程序只能静态声明权限,Android并没有动态授予权限的机制,因为这有可能不利于安全性

  2. 签名

    Android所有的应用程序(.apk文件)都必须有证书的签名,证书的私钥由程序开发者发起,该证书用来表示程序的作者。

    证书不需要证书机构的签名,对于Android应用来说,使用自己的签名是完全允许的,Android使用证书的目的是为了区分作者。

    系统可以授予或者拒绝一个应用对于签名等级和申请相同Linux ID的访问权限。

  3. 用户ID和文件权限

    程序安装时,Android会给每个package一个唯一可区分的Linux user ID(UID),只要程序包存在于某台设备上,这个ID识别符就会保持不变。

    对于不同的设备,程序包可能会有不同的UID,但对于一台设备,每个程序包都拥有自己独有的UID。

    处于对进程安全的考虑,任何两个不同的程序包的代码在正常情况下不能运行在同一个进程里,因为它们拥有不同的Linux user ID。

    任何由应用保存的数据将由应用的user ID负责,正常情况下不能被其他程序包访问。

  4. 使用permission

    为了使用一些设备上被保护的特性,必须为应用程序在AndroidManifest.xml里申请权限permission.

    举个例子,如果需要监听短消息,须如下声明,

    <manifest xmlns:android="http://schemas.android.com/apk/res/android"    package="com.android.app.myapp" >    <uses-permission android:name="android.permission.RECEIVE_SMS" />    ...</manifest>
    程序第一次安装过程中,安装包installer会通过检查签名来授予权限给程序。如果没有授予权限,那么用户将无法使用该特性。



原创粉丝点击