- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
【Android开发API】应用的组成部分权限系统.pdf
eoe 移动开发者社区 /
eoe 移动开发者社区 /
原文链接:
/guide/topics/security/permissions.html
本文档介绍了应用程序开发人员如何使用由Android 提供的安全功能。在
Android 开放源代码项目AOSP(Android Open Source Project)中提供了
更一般的Android 安全性概述。
Android 是一种特权分隔的操作系统,在Android 上运行的每个应用程序
都具有各自独立的系统标识(Linux 用户ID 和组ID)。系统各部分有不
同的身份标识。因此,Linux 上运行的各个应用程序相互独立且与系统无
关。
Android 的“权限许可”机制通过限定特定的进程能够执行的指定操作和
限定对每一个资源点对点的访问的URI 许可来提供附加细粒度的安全功能
安全体系架构-Security Architecture
Android 安全体系架构设计的核心是在默认情况下没有任何一个程序可以
执行对其他程序、操作系统或者用户有害的操作,包括读写用户的隐私数
据(例如联系人或者电子邮件),读写其他程序的文件,进行网络访问或
者唤醒设备等等。
由于内核让每个应用程序运行在独立的沙盒中,应用程序必须通过声明所
需要而沙盒没有提供的权限来明确的分配资源和数据。Android 没有采用
会使用户体验复杂并且不利于安全的动态授权机制。应用程序静态的声明
eoe 移动开发者社区 /
他们所需要的权限,在程序安装时Android 系统会提示用户同意它们获取
这些权限。
沙盒程序独立于生成普通应用程序的机制。特别地,Dalvik 虚拟机不是一
个安全的边界,任何的应用程序都能够运行本地代码(参照Android NDK)。
所有类型的应用程序——java、native 和混合的——均用相同的方式置以
相同的安全等级在沙盒中运行。
应用程序数字签名-Application Signing
所有的Android 应用程序(apk 文件)都必须使用一个开发人员掌握私钥、
用于识别应用程序作者的证书进行签名。该证书要求很宽松,并不需要由
专门的证书颁发机构进行签名,Android 应用程序可以使用自签名的证书。
Android 证书的目的是区分应用程序的作者,可以允许操作系统授予或者
拒绝应用程序使用签名级别的权限和操作系统授予或者拒绝应用程序请
求和其他应用程序相同的Linux 身份。
用户ID 和文件访问-User IDs and File Access
在安装的时候,Android 会给每个程序分配一个不同的Linux 用户身份(U
ID)。软件在设备上的生命周期中这个身份标识保持恒定不变。在不同的
设备上,相同的软件可能会有一个不同的UID;重要的是在给定的设备上
不同的包是不同的UID。
eoe 移动开发者社区 /
因为安全是在进程级别上实现的,两个软件包的代码在同一个进程中不能
够同时正常运行,他们必须以不同的Linux 用户运行。可以在每个程序包
的AndroidManifest.xml 中将manifest 标签的shareUserId 属性分配相
同的用户ID,把两个应用程序看作拥有同样的用户ID 和文件权限的同一
个应用程序。为了保持安全,只有具有相同签名(请求的sharedUserId
也相同)的应用程序才会分配相同的用户ID。
任何由应用程序存储的数据将被赋予应用程序的用户ID,正常情况不能被
其它应用程序访问。当使用 getSharedPreferences(String, int), openFileOut
put(String, int) , 或 openOrCreateDatabase(String, int, SQLiteDatabase.C
ursorFactory) 创建一个新的文件时,可以使用MODE_WORLD_READABLE 或MO
DE_WORLD_WRITEABLE 标记允许其他应用程序来读/写文件。设置这些全局
的读写权限标记后,该文件仍然为创建文件的应用程序所拥有,任何其他
应用程序可以看到它。
使用权限-Using Permission
文档评论(0)