codecamp

鸿蒙OS 应用隐私保护

随着移动终端及其相关业务(如移动支付、终端云等)的普及,用户隐私保护的重要性愈发突出。应用开发者在产品设计阶段就需要考虑保护的用户隐私,提高应用的安全性。HarmonyOS 应用开发需要遵从其隐私保护规则,在应用上架应用市场时,应用市场会根据规则进行校验,如不满足条件则无法上架。

数据收集及使用公开透明

应用采集个人数据时,应清晰、明确地告知用户,并确保告知用户的个人信息将被如何使用。

  • 应用申请操作系统受限权限和敏感权限时,需要明确告知用户权限申请的目的和用途,并获取用户的同意。受限权限 API 使用方案请参考权限章节。详细的 UX 设计方案请参考UX 设计隐私方案

图1 敏感权限获取弹框示例

  • 开发者应制定并遵从适当的隐私政策,在收集、使用留存和第三方分享用户数据时需要符合所有适用法律、政策和规定。需充分告知用户处理个人数据的种类、目的、处理方式、保留期限等,满足数据主体权利等要求。

根据以上原则,我们设计了示例以供参考。隐私通知/声明的参考示例如下:

图2 应用隐私通知示例图 点击放大

图3 应用隐私声明示例图

点击放大

  • 个人数据应当基于具体、明确、合法的目的收集,不应以与此目的不相符的方式作进一步处理。对于收集目的变更和用户撤销同意后再次使用的场景都需要用户重新同意。隐私声明变更示例图,隐私声明撤销同意示例图所示。

图4 隐私声明变更示例图 点击放大

图5 撤销同意示例图

点击放大 点击放大

  • 应用的隐私声明应覆盖本应用所有收集的个人数据。

  • 有 UI 的 Ability 运行时需要在明显位置展示 Ability 的功能名称及开发者名称/logo。

  • 应用的隐私声明应在应用首次启动时通过弹框等明显的方式展示给用户,并提供用户查看隐私声明的入口。

  • 调用第三方 Ability 时,需要明确调用方与被调用方履行的隐私责任,并在声明弹框中告知数据主体相关隐私权责。

  • 调用第三方 Ability 时,如涉及个人数据的分享,调用方需在隐私声明中说明分享的数据类型和数据接收者的类型。

数据收集及使用最小化

应用个人数据收集应与数据处理目的相关,且是适当、必要的。开发者应尽可能对个人数据进行匿名或化名,降低数据主体的风险。仅可收集和处理与特定目的相关且必需的个人数据,不能对数据做出与特定目的不相关的进一步处理。

  • 敏感权限申请的时候要满足权限最小化的要求,在进行权限申请时,只申请获取必需的信息或资源所需要的权限。
  • 应用针对数据的收集要满足最小化要求,不收集与应用提供服务无关联的数据。
  • 数据使用的功能要求能够使用户受益,收集的数据不能用于与用户正常使用无关的功能。

数据处理选择和控制

对个人数据处理必须要征得用户的同意,用户对其个人数据要有充分的控制权。

  • 应用申请使用系统权限:应用弹窗提醒,向用户呈现应用需要获取的权限和权限使用目的、应用需要收集的数据和使用目的等,通过用户点击“确认”的方式完成用户授权,让用户对应用权限的授予和使用透明、可知、可控。
  • 用户可以修改、取消授予应用的权限:当用户不同意某一权限或者数据收集时,应当允许用户使用与这部分权限和数据收集不相关的功能。
  • 在进入应用的主界面之前不建议直接弹窗申请敏感权限,仅在用户使用功能时才请求对应的权限。
  • 系统对于用户的敏感数据和系统关键资源的获取设置了对应的权限,应用访问这些数据时需要申请对应的权限。相关权限列表请参考应用权限列表章节。

数据安全

从技术上保证数据处理活动的安全性,包括个人数据的加密存储、安全传输等安全机制,系统应默认开启或采取安全保护措施。

  • 数据存储

  1. 应用产生的密钥以及用户的敏感数据需要存储在应用的私有目录下,敏感数据定义可参考数据分类分级标准。
  2. 应用可以调用系统提供的本地数据库 RdbStore 的加密接口对敏感数据进行加密存储。接口详见关系型数据库章节。
  3. 应用产生的分布式数据可以调用系统的分布式数据库进行存储,对于敏感数据需要采用分布式数据库提供的加密接口进行加密,接口详见分布式数据服务章节。

  • 安全传输

需要分别针对本地传输和远程传输采取不同的安全保护措施。

本地传输:

  1. 应用通过 intent 跨应用传输数据时避免包含敏感数据,intent scheme url 协议使用过程中加入安全限制,防止 UXSS 等安全问题。
  2. 应用内组件调用应采用安全方式,避免通过隐式方式进行调用组件,防止组件劫持。
  3. 避免使用 socket 方式进行本地通信,如需使用, localhost 端口号随机生成,并对端口连接对象进行身份认证和鉴权。
  4. 本地 IPC 通信安全:作为服务提供方需要校验服务使用方的身份和访问权限,防止服务使用方进行身份仿冒或者权限绕过。

远程传输:

  1. 使用 https 代替 http 进行通信,并对 https 证书进行严格校验。
  2. 避免进行远程端口进行通信,如需使用,需要对端口连接对象进行身份认证和鉴权。
  3. 应用进行跨设备通信时,需要校验被访问设备和应用的身份信息,防止被访问方的设备和应用进行身份仿冒。
  4. 应用进行跨设备通信时,作为服务提供方需要校验服务使用方的身份和权限,防止服务使用方进行身份仿冒或者权限绕过。

本地化处理

应用开发的数据优先在本地进行处理,对于本地无法处理的数据上传云服务要满足最小化的原则,不能默认选择上传云服务。

未成年人数据保护要求

如果应用是针对未成年人设计的,或者应用通过收集的用户年龄数据识别出用户是未成年人,开发者应该结合目标市场国家的相关法律,专门分析未成年人个人数据保护的问题。收集未成年人数据前需要征得监护人的同意。

鸿蒙OS 应用权限管理
鸿蒙OS 快速入门简介
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

鸿蒙OS 开发

鸿蒙OS 术语

鸿蒙OS Java API参考

鸿蒙OS ohos.aafwk.ability

鸿蒙OS ohos.aafwk.abilityjet.activedata

鸿蒙OS ohos.aafwk.content

鸿蒙OS java.lang

鸿蒙OS java.Util

鸿蒙OS java.Util class

鸿蒙OS ohos.data.dataability

鸿蒙OS ohos.data.dataability class

鸿蒙OS ohos.agp.components

鸿蒙OS ohos.agp.components interface

鸿蒙OS ohos.agp.components class

鸿蒙OS ohos.global.configuration

鸿蒙OS java.io

鸿蒙OS ohos.data.resultset

鸿蒙OS ohos.data.resultset interface

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }