App申请安卓系统权限机制分析与建议

栏目: IOS · Android · 发布时间: 5年前

内容简介:5月24日,App专项工作组发布了“百款常用App申请收集使用个人信息权限情况”,并公开了“百款常用App申请收集使用个人信息权限列表”,受到了广泛关注。为进一步对该列表内容进行解读,增进对App申请安卓系统权限机制的理解,App专项治理工作组整理有关技术资料,形成本文,以供参考。Android操作系统是一种多用户Linux 权限分隔的操作系统,每个App都是一个不同的用户,当App安装到Android设备后,App将运行在其独立的安全沙箱内,有其独立的Linux进程。

5月24日,App专项工作组发布了“百款常用App申请收集使用个人信息权限情况”,并公开了“百款常用App申请收集使用个人信息权限列表”,受到了广泛关注。

为进一步对该列表内容进行解读,增进对App申请安卓系统权限机制的理解,App专项治理工作组整理有关技术资料,形成本文,以供参考。

广大App运营者应对其App申请使用安卓系统权限情况进行梳理,规范申请权限过程,App专项治理工作组将持续关注、跟踪常用App对权限的申请、使用情况。

一、安卓系统简介

Android操作系统是一种多用户 Linux 权限分隔的操作系统,每个App都是一个不同的用户,当App安装到Android设备后,App将运行在其独立的安全沙箱内,有其独立的Linux进程。

Android版App在默认情况下不拥有任何系统权限,不会执行任何对其他应用、操作系统或用户有不利影响的操作。包括读取或修改用户的私有数据(例如通讯录或电子邮件)、读取或写入其他应用程序的文件、执行网络访问、使设备保持唤醒状态等。

如果App因业务功能需要申请系统权限,通常情况下,App开发者可通过在AndroidManifest.xml配置文件中明确声明的方式(静态方式),以及在代码运行阶段请求的方式(动态方式)申请系统权限。

二、安卓系统权限分类

App在系统中所有预定义的权限根据作用的不同,分别属于不同的级别,安卓系统权限级别分为如下四类,包括普通级别(Normal)、危险级别(Dangerous)、签名级别(Signature)及系统/签名级别(Signatureor System),但根据手机终端的系统版本和App的目标SDK等有不同的表现方式,各类权限简介如下:

(1)普通级别(Normal)

普通级别的权限,通常不会对用户隐私或设备操作造成风险,App只要申请了就可以使用(在AndroidManifest.xml中添加标签),安装时不需要用户确认,系统会自动授予,用户可以在App安装文件中看到这些权限,但无法进行管理,例如设置时区的权限就是普通级别权限。

(2)危险级别(Dangerous)

危险级别的权限,也称为敏感权限,该类权限涉及用户的“隐私”信息或相关资源,或者可能对用户存储的数据或其他应用的操作产生影响。危险权限不仅需要在AndroidManifest.xml配置文件中申请,还需要在代码中动态获取。比如读取通讯录(READ_CONTACTS)权限就属于敏感权限。基于系统版本和应用的目标SDK的不同,声明带来的影响也有所不同,如下:

- 当运行App的安卓手机的操作系统版本<=Android5.1,或App的目标SDK(targetSdkVersion值)<=22,如果AndroidManifest.xml文件中申请了危险权限,用户需在安装App的时候“一揽子”授予权限;如果用户不授予权限则无法安装App;

- 当运行App的安卓手机的操作系统版本=>Android6.0,并且App的目标SDK(targetSdkVersion值)=>23,对于在AndroidManifest.xml文件中声明的每一个危险权限,都必须在 App 运行时以弹窗等形式进行动态申请,用户可以选择同意或者拒绝。

(3)签名级别(Signature)

签名级别(Signature):该类权限只对拥有相同签名的应用开放,一旦某个App的AndroidManifest.xml文件中的权限被定义为Signature级别,只有和该App使用相同私钥签名的应用才可以申请该权限,如果签名一致,系统会自动赋予权限,而不会通知用户或者征求用户的同意。

(4 )系统/签名级别(Signature or System)

系统/签名级别权限为Android的系统级权限。与签名级别(Signature)权限类似,但它不仅要求签名相同,还要求是同类的系统级应用,一般只有手机厂商开发的预置应用(在/system/app目录下的应用)才会用到该类权限。

此外,App也可以自定义权限组和权限,方法和安卓系统定义权限是一样的。App安装时,自定义权限也可以在AndroidManifest.xml配置文件中进行声明。还有一些动态权限是手机厂商、芯片厂商等自定义的,如国内部分手机厂商将“读取应用程序列表”定义为动态权限,App请求该权限时用户可以选择同意或拒绝。

三、收集使用个人信息相关权限

安卓系统权限的申请、调用分类等机制较为复杂,为便于分析和横向比对的一致性,在分析研究百款App过程中仅对安卓原生系统进行分析。

原生安卓系统是指Google公司发布,没有经过第三方修改的安卓系统。通过对安卓官方网站公布的 原生系统Android7、8、9中的权限分析得出,与收集个人信息相关权限主要为安卓系统“危险权限”,共计26个。 具体见下表:

App申请安卓系统权限机制分析与建议

App申请安卓系统权限机制分析与建议

四、百款App权限申请情况对比分析

基于“百款常用App申请收集使用个人信息权限列表”,统计分析如下:

1、申请权限数量情况统计分析

百款App中申请与收集个人信息相关权限数量分布如下:

App申请安卓系统权限机制分析与建议

App申请安卓系统权限机制分析与建议

根据以上数据,绝大部分App(74%)申请10个(含)以下“与收集个人信息相关权限”即可满足需要。

统计百款App申请与收集个人信息相关权限,申请与收集个人信息相关权限App数量分布图如下:

App申请安卓系统权限机制分析与建议

以上分析可见,READ_PHONE_STATE读取电话状态(获取设备IMSI、IMEI号)、STORAGE 存储、LOCATION 位置、CAMERA 相机、MICROPHONE 麦克风等权限被申请的百分比大于90%,READ_CONTACTS 读取通讯录申请百分比大于70%,以上权限几乎成为App的标配。

2、“强制”申请权限数量统计分析

本文“强制”申请开启权限是指由测试人员在安卓7及以上版本手机对App进行测试,在App下载、安装、首次打开App、完成账号注册过程(如无注册功能则略过此过程),向用户索要(包括弹窗等方式)的权限的情况。

通常,在用户还未开始使用App前就索要的权限,应仅为支持App正常运行所必需的“必要”权限。有些App索要的权限远大于“必要”权限,也有些App提供相似服务的App索要的权限大相径庭。此外,如果App的目标SDK(targetSdkVersion值)<23,则会导致用户在安装App的时候必须"一揽子"同意默认打开所有与收集个人信息相关权限,否则无法安装App。事实上,App可以通过设置minSdkVersion值来应对兼容旧版本安卓系统的问题,而不是刻意调低targetSdkVersion值。

百款App中“强制”申请开启与收集个人信息相关权限数量分布如下:

App申请安卓系统权限机制分析与建议

App申请安卓系统权限机制分析与建议

根据以上数据,绝大部分App(83%)“强制”申请开启5个以下“与收集个人信息相关权限”。

统计100款App申请与收集个人信息相关权限,“强制”申请开启与收集个人信息相关权限App数量分布图如下:

App申请安卓系统权限机制分析与建议

以上分析可见,READ_PHONE_STATE 读取电话状态(获取设备IMSI、IMEI号)、READ_EXTERNAL_STORAGE 读取外置存储器、WRITE_EXTERNAL_STORAGE写入外置存储器权限“强制”申请开启的情形较多。

安卓系统权限使用建议

基于《网络安全法》等法律法规、国家标准《信息安全技术个人信息安全规范》,以及App专项治理工作组制定的《App违法违规收集使用个人信息自评估指南(2019年3月1日版)》、《App违法违规收集使用个人信息行为认定方法(征求意见稿)》等有关要求,建议 App在申请使用与收集个人信息相关安卓系统权限时 ,关注以下原则和内容:

1、明示目的,App申请使用系统权限应具有合法、正当、必要、明确的个人信息处理目的,并在申请使用时明确告知,能让用户清晰了解权限是相应功能实现所需,对于收集个人信息相关权限的告知宜采取更加显著、清晰的告知方式,如弹窗等即时、同步提示的方式。

2、征得同意,App在告知使用系统权限(尤其是可收集个人敏感信息的危险权限)的目的后,应提供选项供用户自行做出是否同意授权的判断,在用户同意后才可以产生收集行为。征得同意的方法应合理、适时、正当。首次打开App时,仅申请保证App基本功能正常运行所必需的权限,在后续使用App功能时,根据业务功能需要逐步申请所需权限。不应采用“一揽子打包”、“默认打开”、“强制捆绑”、“私自更改”、“频繁打扰”等方式征得同意。比如,在App安装时一次性申请多项或所有危险权限的授权,并在打开App后权限均为默认开启状态(App设置的targetSdkVersion小于23时);比如,将申请打开与某项业务功能无关的系统权限作为强制的前置条件;比如,App更新时将用户设置的系统权限进行更改或恢复到默认状态等;比如特定功能所需权限被用户拒绝时,可不提供该功能,但不得影响用户正常使用与该权限无关的功能,除非该权限是保证App正常运行所必需。

3、最少够用,APP应只申请实现业务功能所必需的系统权限。选择系统权限时应选取能满足业务功能所需的“最少够用”的权限,比如,使用“粗略地理位置”即可达到业务目的,完成业务功能的,避免使用“精确地理位置”;比如,使用危险权限组中其中一个或部分权限的,虽然以权限组方式取得授权,但不使用与业务功能无关的权限。此外,对于App嵌入的第三方代码、插件(如SDK)、应用内程序(如小程序)等,可采取审核、限制等措施确保其只申请业务功能所必需的权限。

4、规则清晰,App对于权限使用的目的、方式和范围有清晰界定,并予以公开。可在App的隐私政策等文件中对权限的使用情况进行清晰的阐述,包括嵌入的第三方代码、插件(如SDK)、应用内程序(如小程序)等继承或使用权限的方式,使用权限时选择何种数据处理方式(如终端本地处理、App远程服务器处理、或是传输至第三方处理)。当规则的变更可能对个人权益产生影响时,应当及时将更新的规则告知用户。

5、透明使用,App使用权限的行为应与隐私政策等文件描述内容一致。当App在获得权限的授权后,应在用户使用App某业务功能过程中,采用合理的频率调用相关权限函数,收集必要的个人信息。不应在用户使用与该权限无关的业务功能时或App处于后台运行状态时调取权限相关函数。因业务需要需持续以调用权限函数方式收集个人信息时,宜采用显著提示(如图标闪烁、状态栏提示、自定义提示条等)方式提醒用户。

声明:本文来自App个人信息举报,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。


以上所述就是小编给大家介绍的《App申请安卓系统权限机制分析与建议》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Game Engine Architecture, Second Edition

Game Engine Architecture, Second Edition

Jason Gregory / A K Peters/CRC Press / 2014-8-15 / USD 69.95

A 2010 CHOICE outstanding academic title, this updated book covers the theory and practice of game engine software development. It explains practical concepts and techniques used by real game studios,......一起来看看 《Game Engine Architecture, Second Edition》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器