一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

针对小程序源代码进行隐私数据泄露检测的方法及系统

2022-08-11 08:11:08 来源:中国专利 TAG:


1.本发明涉及计算机技术领域,具体地,涉及一种针对小程序源代码进行隐私数据泄露检测的方法及系统。


背景技术:

2.目前在各种小程序平台上,存在大量的可以接触到用户隐私信息的小程序,它们在日常生活中被广泛使用,成为隐私泄露的一个主要来源。随着保护用户隐私的趋势,小程序隐私泄露检测成为了一个重要的问题。
3.因此现有技术中,公开号为cn113326539a的发明专利,公开了一种针对小程序进行隐私数据泄露检测的方法、装置及系统,包括:响应于接收到检测服务端下发的针对该小程序中第一页面的检测任务,在该客户端中打开第一页面,并在第一页面中注入检测代码,其中包括第一代码;利用第一代码在第一页面中查找第一类可触发控件;若查找到,则在第一页面中执行第一类可触发控件的第一触发事件;获取该小程序的后台服务端针对第一触发事件返回的第一信息,以及该后台服务端用于传输第一信息的第一接口;若第一信息包括明文隐私数据,则生成并返回用于指示第一接口有隐私数据泄露的第一检测结果。该专利提出了一种通过向小程序中注入代码的检测方法,该方法虽然可以检测隐私泄露,但是注入代码可能会破坏小程序的正常功能,此外每次检测需要实际运行小程序,检测时间可能较长。
4.公开号为cn113297609a的发明专利,公开了一种针对小程序进行隐私采集行为监控的方法及装置,包括:检测第一数据是否为用户隐私数据,第一数据是小程序经由宿主应用采集的;若检测结果为是,则为第一数据添加隐私标签;响应于监控到小程序对数据输出接口的调用,由识别组件确定数据输出接口的输入参数是否包括添加有隐私标签的目标数据,并在确定结果为是时,针对小程序记录与目标数据有关的隐私采集行为信息。该专利提出了一种通过监控小程序输出接口的参数中是否有隐私信息的检测方法。该方法由于需要用户参与检测,因此不能在小程序上架前提前发现隐私泄露问题。


技术实现要素:

5.针对现有技术中的缺陷,本发明提供一种针对小程序源代码进行隐私数据泄露检测的方法及系统。
6.根据本发明提供的一种针对小程序源代码进行隐私数据泄露检测的方法及系统,所述方案如下:
7.第一方面,提供了一种针对小程序源代码进行隐私数据泄露检测的方法,所述方法包括:
8.步骤s1:阅读小程序开发文档,对小程序平台提供的应用程序接口api进行分类并标注,分成3类,分别是污点源、污点汇聚点和其他,标注的结果会保存为污点源和污点汇聚点配置文件;
9.步骤s2:小程序平台得到小程序源代码后,根据小程序配置文件app.json,将小程序源代码文件分成工具文件和页面文件;
10.步骤s3:依赖分析器对小程序工具文件进行依赖关系分析,并据此对文件的分析顺序进行排序;
11.步骤s4:根据工具文件的顺序,依次将每个工具文件输入到污点流分析器中,污点流分析器根据污点源和污点汇聚点配置文件展开分析,得到每个工具文件的污点流;
12.步骤s5:将每个工具文件的污点流输入到附加污点源和污点汇聚点分析器中,所有的附加污点源和附加污点汇聚点都会被添加到污点源和污点汇聚点配置文件中;
13.步骤s6:所有工具文件分析完成后,每个页面会被输入到页面单元分析器中,小程序每个页面单元有一个html文件、js文件和json文件,页面单元分析器将html文件和json文件的分析结果添加到js文件中;
14.步骤s7:污点流分析器根据污点源和污点汇聚点配置文件,对js文件进行分析,得到js文件的污点流;
15.步骤s8:根据js文件的污点流,给出隐私泄露报告。
16.优选地,所述步骤s3具体包括:
17.步骤s3.1:对工具文件中的require关键词分析,获得该工具文件依赖哪些其他文件;
18.步骤s3.2:将所有工具文件的依赖关系表示成一个aoe图,该图是一个有向无环图,其中一个节点表示一个工具文件,一条从a指向b的边表示b依赖a;
19.步骤s3.3:对aoe图进行拓扑排序。
20.优选地,所述步骤s4具体包括:
21.步骤s4.1:预处理;对输入文件中的代码进行重构,包括重命名变量名和重写嵌套函数及匿名函数;
22.步骤s4.2:赋值流图构建,污点传播的核心是将一个污点值赋值给另一个值,为每个函数创建一个赋值流图;
23.步骤s4.3:函数别名搜索,通过worklist算法寻找所有函数的别名;
24.步骤s4.4:异步数据流转换,小程序中许多操作是异步操作,生成异步数据流,将异步数据流转换成同步数据流;
25.步骤s4.5:污点流传播,通过worklist算法进行污点传播。
26.优选地,所述步骤s5具体包括:每个工具文件的污点流有两类,一类是存在污点流从污点源流到一个函数的返回值,另一类是存在污点流从一个函数的参数流到污点汇聚点;
27.将每个工具文件的污点流输入到附加污点源和污点汇聚点分析器中,对于污点流从污点源流到一个函数的返回值的情况,该函数被标记为附加污点源;对于污点流从一个函数的参数流到污点汇聚点的情况,该函数被标记为附加污点汇聚点。
28.优选地,所述步骤s6具体包括:
29.步骤s6.1:在与用户输入或用户开放数据相关联的html文件中,包含三种类型的泄漏,根据类型分析html文件;
30.步骤s6.2:分析json文件。
31.优选地,所述步骤s8还有两类特殊的隐私泄露,通过页面数据和全局数据传递数据。
32.第二方面,提供了一种针对小程序源代码进行隐私数据泄露检测的系统,所述系统包括:
33.模型m1:阅读小程序开发文档,对小程序平台提供的应用程序接口api进行分类并标注,分成3类,分别是污点源、污点汇聚点和其他,标注的结果会保存为污点源和污点汇聚点配置文件;
34.模型m2:小程序平台得到小程序源代码后,根据小程序配置文件app.json,将小程序源代码文件分成工具文件和页面文件;
35.模型m3:依赖分析器对小程序工具文件进行依赖关系分析,并据此对文件的分析顺序进行排序;
36.模型m4:根据工具文件的顺序,依次将每个工具文件输入到污点流分析器中,污点流分析器根据污点源和污点汇聚点配置文件展开分析,得到每个工具文件的污点流;
37.模型m5:将每个工具文件的污点流输入到附加污点源和污点汇聚点分析器中,所有的附加污点源和附加污点汇聚点都会被添加到污点源和污点汇聚点配置文件中;
38.模型m6:所有工具文件分析完成后,每个页面会被输入到页面单元分析器中,小程序每个页面单元有一个html文件、js文件和json文件,页面单元分析器将html文件和json文件的分析结果添加到js文件中;
39.模型m7:污点流分析器根据污点源和污点汇聚点配置文件,对js文件进行分析,得到js文件的污点流;
40.模型m8:根据js文件的污点流,给出隐私泄露报告。
41.优选地,所述模块m3具体包括:
42.模块m3.1:对工具文件中的require关键词分析,获得该工具文件依赖哪些其他文件;
43.模块m3.2:将所有工具文件的依赖关系表示成一个aoe图,该图是一个有向无环图,其中一个节点表示一个工具文件,一条从a指向b的边表示b依赖a;
44.模块m3.3:对aoe图进行拓扑排序。
45.优选地,所述模块m4具体包括:
46.模块m4.1:预处理;对输入文件中的代码进行重构,包括重命名变量名和重写嵌套函数及匿名函数;
47.模块m4.2:赋值流图构建,污点传播的核心是将一个污点值赋值给另一个值,为每个函数创建一个赋值流图;
48.模块m4.3:函数别名搜索,通过worklist算法寻找所有函数的别名;
49.模块m4.4:异步数据流转换,小程序中许多操作是异步操作,生成异步数据流,将异步数据流转换成同步数据流;
50.模块m4.5:污点流传播,通过worklist算法进行污点传播。
51.优选地,所述模块m5具体包括:每个工具文件的污点流有两类,一类是存在污点流从污点源流到一个函数的返回值,另一类是存在污点流从一个函数的参数流到污点汇聚点;
52.将每个工具文件的污点流输入到附加污点源和污点汇聚点分析器中,对于污点流从污点源流到一个函数的返回值的情况,该函数被标记为附加污点源;对于污点流从一个函数的参数流到污点汇聚点的情况,该函数被标记为附加污点汇聚点;
53.所述模块m6具体包括:
54.模块m6.1:在与用户输入或用户开放数据相关联的html文件中,包含三种类型的泄漏,根据类型分析html文件;
55.模块m6.2:分析json文件;
56.所述模块m8中还有两类特殊的隐私泄露,通过页面数据和全局数据传递数据。
57.与现有技术相比,本发明具有如下的有益效果:
58.1、本发明通过采用对小程序源代码静态检测分析的方法,从而实现在小程序上架前检测隐私泄露;
59.2、本发明通过采用基于对象链分析的方法,从而实现高效且精确地追踪污点传播;
60.3、本发明通过采用构建赋值流图的方法,从而实现将数据流暴露出来方便分析的目的;
61.4、本发明通过采用异步流构建的方法,将异步流转换为同步流,从而实现追踪异步流中的污点传播。
附图说明
62.通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
63.图1为本发明整体流程图;
64.图2为小程序平台得到小程序源代码后的分析原理图;
65.图3为污点流分析图。
具体实施方式
66.下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。
67.本发明实施例提供了一种针对小程序源代码进行隐私数据泄露检测的方法,参照图1和图2所示,该方法具体如下:
68.步骤s1:专家通过阅读小程序开发文档,对小程序平台提供的应用程序接口(application programming interface,api)进行分类,分成3类,分别是污点源,污点汇聚点和其他。污点源表示程序调用该api将引入用户隐私数据到系统中,污点汇聚点表示程序调用该api后系统会泄露用户数据到外界。专家标注的结果会保存为污点源和污点汇聚点配置文件。
69.步骤s2:小程序平台得到小程序源代码后,根据小程序配置文件app.json,将小程序源代码文件分成工具文件和页面文件。本实施例中小程序根目录下的app.json文件用来
对小程序进行全局配置,决定页面文件的路径、窗口表现、设置网络超时时间、设置多tab等。
70.步骤s3:依赖分析器对小程序工具文件进行依赖关系分析,并据此对文件的分析顺序进行排序。
71.具体地,步骤s3具体包括:
72.步骤s3.1:对工具文件中的require关键词分析,获得该工具文件依赖哪些其他文件。
73.步骤s3.2:将所有工具文件的依赖关系表示成一个activity-on-edge(aoe)图,该图是一个有向无环图,其中一个节点表示一个工具文件,一条从a指向b的边表示b依赖a。
74.步骤s3.3:对aoe图进行拓扑排序。
75.步骤s4:根据工具文件的顺序,依次将每个工具文件输入到污点流分析器中,污点流分析器根据污点源和污点汇聚点配置文件展开分析,得到每个工具文件的污点流。
76.具体地,参照图3所示,步骤s4具体包括:
77.步骤s4.1:预处理;对输入文件中的代码进行重构,包括重命名变量名和重写嵌套函数及匿名函数。重命名变量名:小程序中有许多相同的变量名却指向不同的对象,因此本系统根据每个变量的范围(scope)信息,对其重命名以作区分。新变量名由原始变量名和一个计数器值组成。计数器会记录每个变量名已经出现的次数。重写嵌套函数及匿名函数:嵌套函数及匿名函数在抽象语法树(abstract syntax tree,ast)中是一个函数表达式(functionexpression)节点。本系统将跟踪每个函数表达式,并用唯一标识符替换相应的ast节点。一旦访问了整个ast,就会为遇到的每个函数在程序体中附加一个函数声明。预处理后,js文件可以分解为一组函数,其中全局代码可视为一个虚拟函数。
78.步骤s4.2:赋值流图构建,污点传播的核心是将一个污点值赋值给另一个值,因此本系统为每个函数创建一个赋值流图。赋值流图是一个有向无环图,每个节点表示程序的一个状态,每条边表示程序执行一个动作后,数据流动的情况。
79.步骤s4.3:函数别名搜索。一个函数可能有多个函数名。本系统通过worklist算法寻找所有函数的别名。
80.步骤s4.4:异步数据流转换。小程序中有许多操作是异步操作,生成异步数据流。因此本系统将异步数据流转换成同步数据流。
81.步骤s4.5:污点流传播,通过worklist算法进行污点传播。
82.步骤s5:每个工具文件的污点流有两类,一种是存在污点流从污点源流到一个函数的返回值,另一种是存在污点流从一个函数的参数流到污点汇聚点。将每个工具文件的污点流输入到附加污点源和污点汇聚点分析器中,对于污点流从污点源流到一个函数的返回值的情况,该函数被标记为附加污点源;对于污点流从一个函数的参数流到污点汇聚点的情况,该函数被标记为附加污点汇聚点。所有的附加污点源和附加污点汇聚点都会被添加到污点源和污点汇聚点配置文件中。
83.步骤s6:所有的工具文件分析完成后,每个页面会被输入到页面单元分析器中。小程序每个页面单元有一个html文件、js文件和json文件。页面单元分析器将html文件和json文件的分析结果添加到js文件中。
84.具体地,步骤s6具体包括:
85.步骤s6.1:html文件分析。在与用户输入或用户开放数据相关联的html文件中,有三种类型的泄漏。1)双向数据绑定是指在页面中html文件和js文件之间绑定数据的一种方式。页面分析器会在js文件中的data对象中为每个双向数据添加一个虚拟函数。2)输入事件的响应程序。页面分析器会将每个输入事件的响应程序的参数标注为污点源。3)开放数据。页面分析器会将请求开放数据的返回值标记为污点源。
86.步骤s6.2:json文件分析。小程序页面可以使用组件。组件是一类特殊的页面。页面分析器扫描页面使用的组件。如果使用了组件,那么页面分析器也会按照分析页面的方式分析这些组件。
87.步骤s7:污点流分析器根据污点源和污点汇聚点配置文件,对js文件进行分析,得到js文件的污点流。
88.步骤s8:根据js文件的污点流,给出隐私泄露报告。此外,还有两类特殊的隐私泄露,通过页面数据(page data)和全局数据(global data)传递数据。页面数据指的是每个页面的数据属性,分别由this.setdata(key,value)和this.data.key读写。用户隐私信息可以通过页面数据存储和传播。给定一个从污点源到this.data.key的污点流,以及另一个从this.data.key到污点泄露点的污点流,本系统会将两者链接起来以生成隐私泄漏报告。类似的,全局数据可以连接不同页面的污点流。
89.本发明实施例提供了一种针对小程序源代码进行隐私数据泄露检测的方法,小程序服务商将小程序源代码上传到小程序平台后,小程序平台对小程序源代码进行静态分析,检查该小程序是否会泄露小程序用户的隐私信息。
90.本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的系统及其各个装置、模块、单元以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的系统及其各个装置、模块、单元以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同功能。所以,本发明提供的系统及其各项装置、模块、单元可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置、模块、单元也可以视为硬件部件内的结构;也可以将用于实现各种功能的装置、模块、单元视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
91.以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本技术的实施例和实施例中的特征可以任意相互组合。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献