移动应用中的第三方SDK隐私合规检测,早知道
摘要: 在移动应用隐私合规检测中,第三方SDK隐私声明由于其展现位置展现形式的多样性,自动化提取与解析是比较困难的任务。
本文分享自华为云社区《移动应用中的第三方SDK隐私合规检测》,作者: wolfrevo。
概述:
工信部164号文[1]要求对SDK违规处理用户个人信息进行整治,包括违规收集个人信息、超范围收集个人信息、违规使用个人信息、强制用户使用定向推送功能等违规内容。相关整治内容的检测需要结合第三方SDK隐私声明与SDK运行时行为进行判断。本文简要介绍如何提取与解析第三方SDK相关的隐私政策内容以及如何在运行时监控第三方SDK处理个人隐私数据。
工信部164号文中对于SDK违规处理个人信息的检测内容:
(一)APP、SDK违规处理用户个人信息方面。 1.违规收集个人信息。重点整治APP、SDK未告知用户收集个人信息的目的、方式、范围且未经用户同意,私自收集用户个人信息的行为。 2.超范围收集个人信息。重点整治APP、SDK非服务所必需或无合理应用场景,特别是在静默状态下或在后台运行时,超范围收集个人信息的行为。 3.违规使用个人信息。重点整治APP、SDK未向用户告知且未经用户同意,私自使用个人信息,将用户个人信息用于其提供服务之外的目的,特别是私自向其他应用或服务器发送、共享用户个人信息的行为。 4.强制用户使用定向推送功能。重点整治APP、SDK未以显著方式标示且未经用户同意,将收集到的用户搜索、浏览记录、使用习惯等个人信息,用于定向推送或广告精准营销,且未提供关闭该功能选项的行为。
第三方SDK隐私政策提取与解析
针对第三方SDK隐私声明的提取,按照应用隐私政策呈现的方式,可以分为两种主要形式:1、直接在应用隐私声明中陈述(如图1所示)。2、在隐私声明中提供跳转形式单独表述(如图2所示)。针对第2种情况,需要对第三方SDK隐私声明的文本跳转内容进行提取。
调研表明,当第三方SDK的隐私声明以跳转方式另行表述时,目标跳转页面通常通过webview进行呈现,并且当前应用的隐私声明也由webview进行呈现。原因可能在于使用url借助webview进行跳转,不需要另行开发跳转过程,否则需要通过封装intent进行不同应用页面之间的跳转。
对第三方SDK隐私声明内容进行提取,存在两种可行方案。一、获取第三方SDK超链接,进而通过url解析文本。二、获取第三方SDK超链接文字在页面上的位置,通过模拟点击跳转,然后通过uiautomator获取页面文字。第二种方案可由《移动应用隐私合规检测简介及目标检测技术的应用》 中所述的方案进行文本定位。但是考虑到部分应用使用表格形式展示接入的第三方SDK的情形,如果通过uiautomator获取页面文字将丢失表格样式信息,增加解析难度。因此优先采用第一种方案,具体步骤为:
1、利用hook技术添加代码 webView.setWebContentsDebuggingEnabled(true);
2、获取第三方SDK超链接,并跳转;
3、基于Chrome DevTools Protocol [2]获得带样式的文本。
按照第三方SDK内容展示的形式,可以分为三类:1、以表格形式(如图3);2、无样式列表(如图1);3、无固定格式。对于第1种形式,根据前文所述可以使用基于Chrome DevTools Protocol的方案可以解决。对于第2种形式,我们开发了一个启发式重复格式行查找算法,找出相邻SDK隐私陈述的分界。而对于第3中形式,除在单行中陈述单个SDK隐私政策的情况外,其余情况目前难以关联SDK主体与其对应的隐私陈述,这种情形在实际的应用中出现较少。
至此,我们完成了隐私政策中的第三方SDK隐私声明的提取与解析,方案小结如下表:
小结:
在移动应用隐私合规检测中,第三方SDK隐私声明由于其展现位置展现形式的多样性,自动化提取与解析是比较困难的任务。我们通过调研统计,对常见的第三方SDK隐私声明展现方式进行总结,归纳出一套自动化的解析方案,以增强对第三方SDK隐私违规行为的检测能力。
引用:
【1】 工业和信息化部关于开展纵深推进APP侵害用户权益专项整治行动的通知, http://www.gov.cn/zhengce/zhengceku/2020-08/02/content_5531975.htm
【2】 Chrome DevTools Protocol,https://chromedevtools.github.io/devtools-protocol/
相关文章
- 华为云大数据轻模式体验:忘掉底层烦恼,专注数据开发
- 昇思MindSpore全场景AI框架 1.6版本,更高的开发效率,更好地服务开发者
- 跨越DDD从理论到工程落地的鸿沟
- 普通索引和唯一索引,难道还分不清
- 假如让你来设计SSL/TLS协议,你要怎么设计呢?
- 一个static和面试官扯了一个小时,舌战加强版
- 面向接口编程,你考虑过性能吗?
- 同步异步多线程这三者关系,你能给面试官一个满意的回答吗?
- netcore编程之后面对不习惯的xshell黑屏部署,是时候使用jenkins自动化发布工具了
- 体验Rabbitmq强大的【优先级队列】之轻松面对现实业务场景
- CNCF Serverless工作流社区携手华为云FunctionGraph,开拓Serverless编排新时代
- 几种如何判断环境是否连上网方法!推荐最后一种
- 带你掌握Redis数据类型:string和Hash
- 深度剖析数仓CN增量备份技术
- 教你3种Kafka的指定副本作为Leader的实现方式
- 详解用OpenCV绘制各类几何图形
- 当TIME_WAIT状态的TCP正常挥手,收到SYN后…
- 解密数据仓库LLVM技术神奇之处
- 数仓中长跳转问题复现及解决方案
- Redis现网那些坑:用个缓存,还要为磁盘故障买单?