freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

APP隐私保护之二:用户端隐私保护实践(下)
2019-12-19 09:00:30

【上篇文章】个人隐私保护之一:隐私政策解析

本篇文章接上篇:APP隐私保护之二:用户端隐私保护实践(上)

四、系统功能授权

4.1.  系统功能开启

系统功能的使用属于个人信息收集的一种特殊方式,在实际应用中,APP会调用如位置信息,拍照等功能获取用户的GPS定位或头像等个人信息。此时就需要APP使用系统的某些功能。

依据《规范》要求,我们要注意所有的系统功能需要用户授权和开启,APP在可以使用,禁止在后台或者自动启用。开启APP时需要提示用户开启的权限和使用目的,用户需要明确确认同意。

安卓和IOS系统都会有系统弹窗提示,所以用户同意和拒绝可以使用系统弹窗的方式。

例如:

主要是提示用户使用目的的方式:安卓一般使用APP自身弹窗的方式,IOS可以弹窗也可以直接就该系统功能弹窗文案。

4.1.1.  APP启动前弹窗

启动APP后就需要获取系统功能的场景需要明确,比如进入APP首页就需要根据位置信息做一些推荐,或者获取设备信息作风控安全策略等等。但是如果再APP某个后续功能比如下单等需要使用的系统功能,是不可以在APP启动时申请的。

1)   APP启动前弹窗的原则

系统功能开启的弹窗要在隐私政策弹窗后

APP弹窗说明使用目的,需要在系统的弹窗之前

为避免用户开启弹出太多弹窗,可以将系统功能授权说明在一个页面统一说明,但是必须逐个授权

例如:

2)   APP弹窗的流程

主流程如下:

APP启动->隐私政策弹窗->系统功能授权提示(APP弹窗)->系统功能弹窗(系统弹窗)

用户全部选择“同意”:申请权限开启,下次启动不会再次弹窗;

用户部分选择“同意”,部分选择“禁止”,勾选不在提示:同意的权限开启,下次启动不会再次弹窗;

用户全部选择“禁止”:不开启任何权限,下次启动也不会弹出窗口;

用户部分选择“同意”,部分选择“禁止”:同意的权限开启,下次启动时仍需要再次弹窗。

【注】这里更好的做法是,为每个系统功能再制作一个单独弹窗,下次启动APP时,对选择“禁止”的功能单独弹窗。这样相当于每个系统功能关联了一个APP的提示窗口,如果系统功能弹窗不再弹出,APP的提示窗口也不会在弹。等于APP首次启动做了1次特殊的弹窗处理,后续无论是APP启动时,还是在用户使用某些功能时的系统功能调用都使用同一个逻辑判断。

例如:

3)   系统功能的拒绝处理

系统功能原则上都不应该是必须开启的,所以上述逻辑中没有加入必须开启的情况。如果APP使用场景确实需要强制开启某个系统功能,需要在隐私政策中和系统功能提示中特殊说明。

例如淘宝和京东:

4.1.2.  APP使用功能时的弹窗

刚才说明的APP启动前的弹窗是一个比较普遍又特殊的使用场景,APP对系统功能的使用应该是通过为了完成某个业务场景,APP功能主动去调用。所以,比较普遍的存在如识别身 份 证需要启动拍照功能,语音搜索会启动录音功能,上传照片会启动存储功能等。

这类功能是用户使用某个APP功能时触发的,所以不能在APP启动时就申请开启。其开启流程也很简单:

启动某APP功能->系统功能授权提示(APP弹窗)->系统功能弹窗(系统弹窗)

其实就是,在系统功能启动的弹窗前置一个提示弹窗。

例如:

4.1.3.  IOS可以使用系统弹窗

之前也提到过,IOS系统由于可以修改系统功能弹窗的文案,所以可以不需要提示弹窗,也就可以减少一次弹窗,也可以不进行启动APP弹窗。即修改系统默认的alert文案:

只需要向info.plist里加一行键值就行了。

例如修改通讯录权限的,Key为NSContactsUsageDescription(或 Privacy - Contacts Usage Description),<string></string>标签中写入你想要添加的文案就可以了。

例如配置文件如下:

<key>NSBluetoothPeripheralUsageDescription</key>

<string>需要获取蓝牙权限</string>

<key>NSCalendarsUsageDescription</key>

<string>日历</string>

<key>NSCameraUsageDescription</key>

<string>需要获取您的摄像头信息</string>

<key>NSContactsUsageDescription</key>

<string>需要获取您的通讯录权限</string>

<key>NSHealthShareUsageDescription</key>

<string>健康分享权限</string>

<key>NSHealthUpdateUsageDescription</key>

<string>健康数据更新权限</string>

<key>NSHomeKitUsageDescription</key>

<string>HomeKit权限</string>

<key>NSLocationAlwaysUsageDescription</key>

<string>一直定位权限</string>

<key>NSLocationUsageDescription</key>

<string>定位权限</string>

<key>NSLocationWhenInUseUsageDescription</key>

<string>使用app期间定位权限</string>

<key>NSMicrophoneUsageDescription</key>

<string>需要获取您的麦克风权限</string>

<key>NSPhotoLibraryUsageDescription</key>

<string>需要获取您的相册信息</string>

4.2.  系统功能关闭

系统功能关闭比较简单,需要给用户提供一个关闭的方法。由于无论是IOS该是安卓系统都有比较明确的权限关闭方式,所以一个“操作手册”就可以满足这个要求。主要需要注意的是APP更新后,不可以自动关闭某些系统功能权限,这样违反了“私自操作用户手机,修改配置”的规定。

目前比较好的方案是在APP设置里开发一个权限管理功能,列出APP所有需要使用的功能,用户可以自由选择启动和关闭。

例如:

五、用户权利和主体授权

5.1.  业务功能授权与撤销授权

业务功能授权主要是在《指南》中提到的“收集与业务功能有关的非必要信息,是否经用户自主选择同意”要求的理解。

非必要信息:不包含APP主体业务,也就是说用户不提供这些信息不会影响APP主体业务的使用。比如电商购物时的退货险,钱包中的投资理财,白条等金融增值业务。

用户自主选择:电商类型APP随业务购买的增值业务,比如退货险等,可以在下单时使用勾选的方式;较为独立的增值业务,金融理财等此类一般需要用户进入时开启。

例如,支付宝中蚂蚁借呗申请,用户授权弹窗:

内容服务和社交类APP,需要根据业务应用场景对用户个人的信息进行隐私权限的管理,如是否公开,或限制访问的条件等。

例如:

业务功能撤销:撤销已经授权的功能,也是用户的权利之一。这里主要是指独立的业务,需要有相关页面或方式提供用户对已开启的功能进行关闭。

例如,支付宝中蚂蚁借呗等增值服务均有授权和关闭功能:

个人信息采集:根据信息保存的规定,在用户关闭和撤销功能后,应该立即停止收集这些“非必要信息”。已收集的信息也应该有一个使用期限,并及时对信息进行处理,这里对用户侧应该有一个如何处理,存储期限的明确说明,以供用户咨询了解。

5.2.  个性化和广告推送

个性化展示和广告推送是指根据用户个人信息,偏好等为其推送的有个人倾向的信息。目前在APP中应用非常普遍,主要分为推动和展示信息和广告类。

5.2.1.  广告和推送展示

《规范》要求“以显著方式标明“个性化展示”或“定推”等字样”,即需要对推送的内容进行标记,明确告知用户该信息是推送信息或广告。例如,大众点评APP广告位:

5.2.2.  启动和关闭

《规范》要求“为个人信息主体提供简单直观的退出个性化展示模式的选项”和“电子商务经营者根据消费者的兴趣爱好、消费习惯等特征向其提供商品或者服务搜索结果的个性化展示的,应当同时向该消费者提供不针对其个人特征的选项”,这两条类似,可以理解为在设置中应该有一个可以关闭推动服务的选项。

例如,大众点评推送消息开关:

目前消息和广告推送的关闭设置,国内很少APP可以做到。反观由于GDPR的影响,和国外处罚力度很大,国外的知名APP均有很健全的功能快关设置

电商平台的个性化推送关闭后,可能会直接影响商品的排序,如何展示和解释是需要制定详细的方案和应对流程。

5.2.3.  业务功能的个性化展示

根据《规范》中,在向个人信息主体提供业务功能的过程中使用个性化展示的要求。主要涉及用户关闭个性化功能后对收集个人信息的删除或匿名化处理问题。一般个性化展示涉及数据包括,访问记录,行为轨迹,位置信息等等,需根据业务的特点确定哪些数据是要删除或匿名化处理的。

5.3.  用户查询、修改、删除信息或注销账号

5.3.1.  查询信息的权利

信息查询权利是比较容易被忽视的用户权利,原则上用户提交的信息,包括APP运营方的使用情况,用户都具有查询的权利。主要包括:

所有的本人或通过本人收集的个人信息类型;

个人信息的来源、所用于的目的;

已经获得上述个人信息的第三方身份或类型。

用户主动填写或下单等主动产生的个人信息一般在APP中应该有用户查询的的页面,订单查询、个人信息查询等。目前电商等订单型APP基本都有查看用户信息和订单信息功能。

例如京东订单查询可以查到所有历史订单:

个人信息的来源,使用目的,第三方信息等除了在隐私政策中说明外,还应该有一个详细的列表,通过客服或者其他方式共用户本人查询。

5.3.2.  修改和删除信息的权利

1)   修改和删除基本功能

用户有权删除和修改个人信息,所以在用户实名信息,订单信息等页面应该提供修改和删除功能。

例如,京东订单删除功能:

2)   第三方共转让信息删除

对于已经共享、转让的信息删除信息,用户仍有权利删除该信息。所以如果用户提出删除要求,不仅要停止共享、转让。还应该通知第三方删除。

这里,如果验证或是否需要验证第三方对数据的处理情况,未给出明确的要求,但是我方企业应该在与第三方签订合作协议时,加入有关信息删除义务的条款,通过法律约束和保证用户和本公司的利益。

5.3.3.  注销账号

1)   提供注销账号的方法

注销账号要保证其方法简单易操作,比如在APP中提供账号注销的功能,或通过客户等线下方式注销都是可以的。

2)   删除个人信息或做匿名化处理

注销账号后一般会有一个信息保存期限,比如三个月,期限内对信息可以进行找回和恢复,超过期限后账号将做不可逆的清楚操作。

5.4.  撤回同意权利

撤回同意简单来说就是用户可以将此前同意的授权撤回,此前提及的隐私政策授权,系统功能授权,非必要业务功能授权都属于该范畴。

用户撤销授权后,应该有相应的操作方案,比如之前提到的系统功能应该给用户提供关闭的方法,就满足了撤回同意权利。

除这些外,还应该注意用户对信息共享、信息使用,公开披露等都是可以撤回的,这类授权一般可以通过客户等线下方式提交。企业需要有相对的方案对用户的诉求进行相对应的处理和解释。

5.5.  投诉和咨询回应

根据《指南》中规定,APP运营者应妥善受程并及时反馈用户申诉,原则上在15天内回复处理意见或结果。具体建议:

 APP应提供用户申诉和咨询的联系方式,一般为客服电话,在线客服等;

 客服受理和记录投诉内容;

 建立在客服,法务/法律顾问,安全部等部门之间建立投诉调查和处理机制;

 将处理意见/结果经法务审核后,有客服反馈用户。

六、第三方产品或服务接入

首先是第三方的定义,我方是APP运营方,这里是由其他公司运营的应用,或者有其他公司独立提供服务的产品。第三方有很多中形态,主要可以划分为:

1)   我方APP中仅提供登录对方的入口,例如微信小程序:

2)   我方APP提供对方APP的下载或使用途径,例如同程旅游的“即点即玩”:

《规范》中专门有对第三方接入的详细要求,比如应建立管理机制和工作流程,评估机制,确认的安全责任和安全措施等等。这里只提及用户端相关的要求主要两点:

1)   要求明确标识产品或服务未第三方提供.

例如,上述例子中的微信小程序,火车票入口显示提示如下:

例如同程旅游即点即玩:

2)   第三方如存在收集用户隐私信息的行为,应重新征得用户同意。需要我方和对方约定,并保证对方通过隐私政策等有征得用户同意。这个目前没有找到很好的案例。

七、结束语

本文主要介绍一下我们在做隐私保护时,在APP端检测和改造时的一些心得体会。APP端最重要的就是你不能向隐私政策一样一遍一遍的修改,因为每个要求都是开发需求,都要走开发流程需要很长时间,反复调成会对所有人造成困扰。如果已经发版上线了,那对不起,也许下个版本在1个月后或更长时间。

所以,这需要我们的检测结果,设计方案更加完善,是经过反复论证的,同时还要兼顾用户的使用和体验,公司业绩等等。所以隐私保护不能只是安全部或技术部的工作,所有方案要和法务,产品,客服,运营,业务方所有有关部门一起共同完成确认。

*本文原创作者:Alkaid13,本文属于FreeBuf原创奖励计划,未经许可禁止转载

# 信息收集 # APP # 隐私保护
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者