随着智能终端的普及,移动应用成了个人隐私泄露的重灾区,行业监管也日趋严格。截止目前,有超过70部法律法规涉及个人信息保护,上百款App因存在隐私安全隐患下架整改。应用安全体验已经成为产品设计的重中之重。
软件绿色联盟自成立以来一直致力于构建绿色安全的软件生态,从兼容性、稳定性、性能、功耗和安全五个维度制定了《软件绿色联盟应用体验标准》(下文简称“绿标”),并通过自动化测试对符合标准的应用进行标记,以求为用户提供安全放心、运行流畅、稳定可靠、耗电合理和功能完整的应用体验。
随着绿标版本升级,对应用体验要求不断提升。绿标3.0安全标准对应用程序在用户权限申请(要求敏感权限动态申请,严格控制申请外部存储权限,禁止申请设备ID权限等)、使用行为(禁止持续在后台获取位置状态,禁止通过补丁进行应用程序升级等)以及隐私数据保护等方面提出了更高的要求。
绿标3.0安全标准解读系列文章,将从权限使用、代码防护和数据安全对“绿标3.0”安全标准进行全面解读。本文重点分享应用如何合理地使用权限。
应用权限分类
随着安卓版本的提升,系统对权限的管控也不断趋于严格。目前安卓应用权限主要分为正常和危险权限两类。
正常权限指的是对用户隐私或其他应用操作风险小的权限,这些权限的申请系统会自动授权,如:设置时区、联网权限等。危险权限指的是涉及用户隐私、或涉及用户数据和其他应用数据的权限,如联系人、位置信息等。危险权限的使用必须明确告知用户并获得用户授权。
危险权限列表
权限申请原则
应用在申请权限时应遵循最小化的原则:只申请业务功能所必要的权限,对业务不相关以及可有可无的权限不申请使用。
以下方记事本App为例,由于需要使用拍照录音等方式来协助记录,所以前面申请的三个权限是合理的,但通讯录、短信和通话记录的读取权限在实际业务中不必要,不符合最小化的原则,也无法获得绿色应用的认证。
权限申请说明
应用在申请权限时,必须对所申请的权限进行明确、合理的功能说明和使用场景说明,遵循合法、正当、必要原则,让用户清晰理解申请权限的必要性。不以改善服务质量、提升用户体验、定向推送信息、研发新产品等为由引导、误导用户授予非业务功能必须使用的权限。
权限申请的时机
应用应在恰当的时机进行权限申请,避免频繁弹窗对用户造成骚扰。对于应用核心功能所必须的权限,应在应用安装完首次启动时通过一次弹窗完成申请,对于其他非核心功能需要的权限,应在用户用到该功能时向用户提出申请。
敏感权限申请
应用不得申请直接拨打电话、发送短信的权限。只有在用户主动将应用注册为默认短信、电话程序的情况下,应用才可以向用户申请拨打电话、发送短信权限。对于其他需要拨打电话和发送短信的场景,可以通过调用系统拨号盘和短信的方式进行。
应用应严格控制位置权限的申请和使用,除了导航、运动类应用可以申请持始终访问用户位置权限,其他类型的应用仅可在使用时获取用户位置信息,禁止申请始终获取位置权限。
外部存储申请和使用
应用应严格控制外部存储权限,只有存在共享、下载、读取外部存储文件的功能时,才允许申请外部存储权限,其他场景禁止申请外部存储权限。合理的存储权限申请场景,包括但不限于以下几种:
- 需要将应用内的照片、视频、音频等信息共享给其他应用使用,可以为其他应用展示,如拍照场景,需要存储图片或打开照片;
- 需要获取照片、视频等功能信息,如设置头像时需要获取系统内的图片、发布朋友圈时,需要音乐或视频;
- 下载文件场景,如浏览器从网络中下载文件到手机中;
- 阅读器场景,打开本地的离线文件。
硬件标识符权限的申请和使用
由于设备标志符(例如IMEI)和用户ID有高度相关性,为了加强用户隐私保护,安卓10.0也不再提供READ_PHONE_STATE权限的申请。因此,应用应避免使用硬件标识符,改用其他可替代的方案。
由于禁止非系统应用访问硬件标识符将对应用数据统计、广告推荐、用户画像等业务场景造成影响,应用可以采用以下替代的方案:
① OAID(Open Anonymous Device Identifier):开放匿名ID,是可以连接所有应用数据的标识符,移动智能终端系统首次启动后立即生成,可用于广告业务。
② VAID(Vender Anonymous DeviceIdentifier):开放的设备标识 ,是指用于开放给开发者的设备标识符,可在应用安装时产生,可用于同一开发者不同应用之间的推荐。
③ AAID(Application Anonymous DeviceIdentifier):应用匿名设备标识符,是指第三方应用获取的匿名设备标识,可在应用安装时产生,可用于用户统计等。
允许用户拒绝权限申请
应用应允许用户拒绝某些权限的申请,不能在用户拒绝授予权限后出现强制退出、反复弹窗或通过通知胁迫用户授权的情况;且应用应保证与被拒绝权限无关的功能,用户能够正常使用。
权限申请频次合理
某个业务功能所需要的权限,在被用户拒绝授权后,在用户再次用到这个业务功能的时候,才再次发起引导用户开启权限,但总的引导开启权限次数不得高于3次,避免对用户使用应用产生干扰。
·END·