27日周五,本人写了一篇“被Google Play下架刷爆朋友圈:聊聊SDK采集数据的秘密”,和互联网圈里的开发者朋友一同针对SDK采集用户隐私数据行为进行了探讨,文章中也列举出了5条目前一些第三方数据公司在未经用户允许的情况下利用SDK采集的用户隐私数据指标,同时也强调了这些隐私数据被采集后将对用户本身有何影响及相关危险性,有想了解的朋友可以添加“友盟数据运营舍”微信公众账号查看。
在完成第一篇文章后,有些开发者反映还是想看到些更技术层面的SDK分享,所以今天抛出SDK第二篇分享——技术篇,从代码层面出发,为众多开发者梳理下SDK采集数据的代码都有哪些,不同数据指标的代码有什么区别,这些数据指标涉及用户信息隐私的程度如何,帮助开发者规避SDK中存在的“地雷“。希望看完以下内容可以给互联网开发者一些实质性的帮助,同时也希望引起行业内对利用SDK采集用户隐私数据的反思。
接下来介绍的SDK代码是以Android平台为主列举的,其中包括五大类开发者可以采集到信息:“设备信息”、“应用信息”、“传感器信息”、“账号信息”、“网络相关信息”。如果一旦开发者需要采集这些数据,必须给出数据披露,否则可能会被应用商店做下架处理
一、应用信息类(信息隐私程度:隐私)
获取到用户手机上已经安装的APP信息列表和正在运行的应用列表。这类数据属于严重涉及用户隐私的数据,不建议开发者在应用中做这样的操作。
二、账号信息类(信息隐私程度:隐私)
获取用户账号信息。此类数据也属于严重涉及用户隐私的数据,不建议开发者在应用中做这样的操作。
三、网络相关信息类(信息隐私程度:隐私)
获取用户移动设备的联网信息、用户通信的设备信息、GPS、NFC信息等。开发者可以利用这些信息准确定位用户地理位置,但这些信息都属于用户非常敏感及隐私的,如果您的服务不是专门提供位置服务,请不要在APP中获取这类信息,避免违反隐私政策。
四、设备信息类(信息隐私程度:较高)
获取用户移动设备标识信息、SIM标识信息等。但像手机号码这样的用户隐私数据是一定不能采集的,否则会触及各应用商店审核的红线。
五、传感器信息类(信息隐私程度:隐私)
现在的智能移动设备内部集成了大量的传感器,用以完成智能化工作。不同型号的移动设备,集成传感器的数量与种类也有所区别,比如用户的行踪可以通过位置传感器精确追踪,但这类数据也属于用户隐私数据。
以上五大类数据指标是可以通过Android提供的标准系统接口获取,但如果使用,必须第一时间告知用户要采集用户哪些数据,并告知用户这些数据用途是什么,在用户同意的情况下才可使用。不过对于其中涉及用户隐私程度较严重的几类数据,例如:安装的软件列表信息、运行的安装列表信息、GPS信息、NFC信息等,几大应用商店都禁止使用,一旦被发现肯定会做下架处理。
跨越Android系统接口作弊的采集方式
面对目前应用商店严格的规则,个别第三方SDK也会通过别的方式采集用户隐私数据,例如:执行shell获取移动设备上已经安装的应用信息,这种采集方式是跨越Android系统接口的方式,通过执行linux命令的方式获取。这种跨过Android系统接口采集户隐私数据的行为可以说属于作弊、钻漏洞行为,我本人坚决抵制这种行为。这种作弊的相关代码也分享给开发者,开发者可根据代码中的信息判断SDK是否通过跨越Android系统接口的方式采集隐私数据。
隐私数据的用途及风险
以上代码基本可以囊括目前市场上SDK采集数据涉及用户隐私的类别,下面再就本文中各类数据采集后的用途,以及每个数据存在的隐私风险为大家做个评估。
1、应用信息类(风险程度:高)
SDK采集数据指标:安装的软件列表、运行的安装列表。
用途与风险:通过采集这类信息可以清楚了解用户设备中各类APP应用的信息,若数据量庞大,即可推算出每款APP应用的市场占有率情况、各类竞品APP的情况。同时也可以用于分析用户喜好、兴趣特征、行为习惯等。完全泄露用户隐私数据,侵犯用户隐私。
隐私保护建议: 提前做数据披露,需要获得用户许可。
2、账号信息类(风险程度:高)
SDK采集数据指标:获取用户账号。
用途与风险:通过采集这类信息可以获取用户账户列表,将移动设备信息与用户账号关联,对设备进行唯一标示。这种数据的采集会给用户带来极高的风险,若用户账号被泄露、克隆,用户的利益和生命财产可能受到威胁。
隐私保护建议: 提前做数据披露,需要获得用户许可。
3、网络相关信息类(风险程度:高)
SDK采集数据指标:Wifi信息、GPS信息、蓝牙信息、NFC适配器信息。
用途与风险:通过采集GPS信息可以获取用户位置信息,进行用户地域行为分析;采集Wifi、蓝牙、NFC信息可获取网络连接状态及配对设备信息、用户支付信息、用户登录验证信息等。这些信息的采集完全侵犯了用户隐私,支付、登录验证等信息将泄露更多用户身份,使用户赤裸裸的“公布于众”,毫无安全可言。
隐私保护建议: 提前做数据披露,需要获得用户许可。
4、设备信息类(风险程度:较高)
SDK采集数据指标:电话类型、网络类型、注册国家、硬件厂商。
用途与风险:通过采集这类信息可以获取用户机型信息、运营商信息、地域分部信息等,一般用于进行机型适配、用户地域分析、网络模式分析等。这类数据的采集对于用户隐私安全的侵害影响不大,多数用于行业趋势分析。
隐私保护建议: 提前做数据披露,需要获得用户许可。
5、传感器信息类(信息隐私程度:隐私)
SDK采集数据指标:加速度传感器、环境光传感器、距离传感器、磁力计传感器、平衡传感器、震动传感器。
用途与风险:通过采集这类信息可以获取用户移动设备上传感器配置信息,了解用户移动设备可支持哪些功能,适合运行哪种类型APP。也有一些安全类APP可通过触发传感器判断此移动设备是否是真机。此类数据的采集对于用户隐私安全的侵害影响不大。
隐私保护建议: 提前做数据披露,需要获得用户许可。
SDK隐私政策、协议
开发者除了对SDK代码要有详细的了解外,还要对隐私政策有所重视和规范,以保护所有使用服务用户的个人隐私权。以安卓为例,目前市场上对于隐私政策的规范都包含:适用范围、信息使用、信息披露、信息存储和交换、Cookie的使用、信息安全这几大方面。
隐私政策举例(模板)
隐私政策举例(模板)
其中信息的使用与信息披露尤为重要,如Google Play都要求凡涉及个人信息及敏感信息的,必须提供隐私权政策,以及任何形式的应用内披露声明,以及完整说明您的应用会收集、如何使用、分享和处理用户数据。但一般来说,应用市场对于在用户不知情的情况下采集获取用户的“账户信息”、“传感器信息”、“蓝牙信息”、“NFC信息”、应用安装信息“等是严格禁止的。一旦发现APP中有这样的行为存在,APP下架处理是必然的结果。所以开发者要充分重视对用户的告知义务,包括将第三方SDK的数据采集信息,也应列入APP的用户隐私政策条款中。
最后,回答一个网友问的问题:【友盟+】算是有良心的那种么。【友盟+】从创建公司至今都是以维护用户与开发者权益及隐私安全为己任,【友盟+】SDK中绝不涉及在隐私协议范围外私自采集用户隐私数据行为,大家可以下载【友盟+】SDK使用看看。