CN110826057B - 数据处理路径的分析方法、计算机设备、存储介质 - Google Patents
数据处理路径的分析方法、计算机设备、存储介质 Download PDFInfo
- Publication number
- CN110826057B CN110826057B CN201810903153.5A CN201810903153A CN110826057B CN 110826057 B CN110826057 B CN 110826057B CN 201810903153 A CN201810903153 A CN 201810903153A CN 110826057 B CN110826057 B CN 110826057B
- Authority
- CN
- China
- Prior art keywords
- data
- processing
- nodes
- node
- code
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/562—Static detection
- G06F21/563—Static detection by source code analysis
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/133—Protocols for remote procedure calls [RPC]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Virology (AREA)
- Health & Medical Sciences (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例公开了一种数据处理路径的分析方法和装置。所述方法包括:从应用的处理节点中查找具有跨应用特性的特征处理节点,根据特征处理节点确定不同应用的处理节点之间的关联关系数据,基于关联关系数据,确定跨应用数据处理的数据处理路径,使得数据处理路径的分析不再局限于单个应用内,避免了跨应用的处理节点之间的关联关系的遗漏问题,从而解决了跨应用的诸如敏感信息泄露、存储型XSS(Cross Site Scripting,跨站脚本攻击)等无法精准定位的问题。
Description
技术领域
本申请涉及数据处理技术领域,具体涉及一种数据处理路径的分析方法、一种计算机设备、一种计算机可读存储介质。
背景技术
随着互联网应用的蓬勃发展,多达上万的分布式应用相互进行调用,形成了复杂的大型数据关系网络。在这个大型数据关系网络中,数据不断被多个应用生产、加工、存储,造成数据存储方式多、流转方式复杂、高度共享且对外出口多等数据处理的复杂现状。
通常来说,SAST(静态分析安全测试,Static Analysis Security Testing) 能够较好的对单应用的数据处理路径进行分析,但是面对跨应用的数据处理路径仍然面临诸多问题。
DAST(动态分析安全测试,Dynamic Analysis Security Testing)只能通过爬虫或流量学习的方式获取检测的入口,受到爬虫能力和流量不全等因素的影响,对特别是边缘应用的覆盖能力不足,另外,通过精心构造的输入进行漏洞利用,这种输入在不了解系统内部实现的机理下,无法穷尽所有可行输入,导致对应用测试的覆盖不够全面。
IAST(交互式分析安全测试,Interactive Analysis Security Testing)通过集成SAST和DAST的功能,来提升准确率和覆盖率,往往通过在程序中注入代码实现对数据流的精确跟踪,进而完成相应的威胁判断,但对系统所有的应用进行注入,会增大不稳定风险。
敏感接口的流量分析通过接口的流量分析,通过分类技术对接口进行标记,一方面,穷举敏感数据类型特征是一个巨大的挑战,算法的准确率和召回率往往不尽如人意;另一方面,该方式同样受到流量影响很大,并不能发现无流量数据的接口。
申请人经研究发现,传统方案的数据处理路径的分析局限于单个应用内,一旦面对大量分布式应用,就会造成跨应用的处理节点之间的关联关系的遗漏问题,继而导致跨应用的诸如敏感信息泄露、存储型XSS(Cross Site Scripting,跨站脚本攻击)等无法精准定位的问题。
发明内容
鉴于上述问题,提出了本申请以便提供一种克服上述问题或者至少部分地解决上述问题的数据处理路径的分析方法、以及计算机设备、计算机可读存储介质。
依据本申请的一个方面,提供了一种数据处理路径的分析方法,包括:
从应用的处理节点中查找具有跨应用特性的特征处理节点;
根据所述特征处理节点确定不同应用的处理节点之间的关联关系数据;
基于所述关联关系数据,确定跨应用数据处理的数据处理路径。
可选地,所述从应用的处理节点中查找具有跨应用特性的特征处理节点包括:
获取多个应用的代码数据和/或配置数据;
根据所述代码数据和/或配置数据,分别确定各个应用中的特征处理节点。
可选地,所述根据所述代码数据和/或配置数据,分别确定各个应用中的特征处理节点包括:
从各个应用的代码数据和/或配置数据中提取具有跨应用特性的特征处理信息;
根据所述特征处理信息,生成特征处理节点。
可选地,所述处理节点包括静态代码节点,所述根据所述特征处理节点确定不同应用的处理节点之间的关联关系数据包括:
根据所述特征处理信息,生成与所述特征处理节点直接关联的静态代码节点以及对应的关联关系数据。
可选地,所述特征处理信息包括数据发布信息、数据存储信息和远程调用信息中至少一种,所述特征处理节点包括数据发布节点、或数据存储节点和远程调用节点中至少一种。
可选地,所述从各个应用的代码数据中提取具有跨应用特性的特征处理信息包括:
解析所述代码数据的配置文件,确定所述代码数据的框架类型或存储类型或远程调用类型,其中,所述框架类型包括webx框架或spring框架,所述存储类型包括iBatis类型或MyBatis类型;
依据所述代码数据的框架类型或存储类型或远程调用类型,提取各种特征处理信息。
可选地,所述根据所述特征处理节点确定不同应用的处理节点之间的关联关系数据还包括:
根据所述特征处理节点直接关联的静态代码节点,确定与所述特征处理节点间接关联的静态代码节点以及对应的关联关系数据。
可选地,所述根据所述特征处理节点直接关联的静态代码节点,确定与所述特征处理节点间接关联的静态代码节点以及对应的关联关系数据包括:
汇集与所述特征处理节点直接关联的静态代码节点,得到入口静态代码节点集合;
以所述入口静态代码节点集合中的静态代码节点为起点,查找各个应用中关联的静态代码节点,并生成静态代码节点之间的关联关系数据。
可选地,在所述以所述入口静态代码节点集合中的静态代码节点为起点,查找各个应用中关联的静态代码节点,并生成静态代码节点之间的关联关系数据之前,所述方法还包括:
根据各个应用的代码数据和/或配置数据,查找方法节点。
可选地,所述以所述入口静态代码节点集合中的静态代码节点为起点,查找所述各个应用中关联的静态代码节点,并生成静态代码节点之间的关联关系数据包括:
判断所述方法节点中是否包含入口变量,其中,所述入口变量包括入口静态代码节点集合中的静态代码节点对应的变量;
若所述方法节点中包含所述入口变量,则将方法节点中受入口变量影响的变量确定为关联的静态代码节点,并生成静态代码节点之间的关联关系数据。
可选地,所述静态代码节点包括形式参数节点,所述以所述入口静态代码节点集合中的静态代码节点为起点,查找各个应用中关联的静态代码节点,并生成静态代码节点之间的关联关系数据还包括:
解析所述方法节点调用的方法,得到虚调用函数;
查找所述虚调用函数对应的实际调用函数;
根据所述实际调用函数,创建形式参数节点。
可选地,在所述根据所述实际调用函数,创建形式参数节点之后,所述方法还包括:
根据所述实际调用函数的函数摘要,确定静态代码节点之间的关联关系数据。
可选地,若所述实际调用函数没有函数摘要,在所述根据所述实际调用函数的函数摘要,确定静态代码节点之间的关联关系之前,所述方法还包括:
创建所述实际调用函数的函数摘要。
可选地,在所述基于所述关联关系数据,确定跨应用数据处理的数据处理路径之前,所述方法还包括:
汇集所述不同应用的处理节点以及处理节点之间的关联关系数据,得到跨多个应用的处理关系图。
可选地,所述汇集所述不同应用的处理节点以及处理节点之间的关联关系数据,得到跨多个应用的处理关系图包括:
汇集所述多个应用的处理节点以及处理节点之间的关联关系数据;
合并跨应用的重合的处理节点,得到所述处理关系图。
可选地,所述处理节点包括远程调用节点、以及所述远程调用节点直接关联的远程调用入口节点和远程调用返回节点,所述合并跨应用的重合的处理节点,得到所述处理关系图包括:
针对各个远程调用节点,查找重合的远程调用入口节点;
获取不同的远程调用入口节点的唯一性标识;
采用所述唯一性标识,对从所述远程调用入口节点到对应的远程调用返回节点之间的处理节点和处理节点之间的关联关系数据进行标记。
可选地,所述从应用的处理节点中查找具有跨应用特性的特征处理节点包括:
调用各代码分析服务器,分别根据其上存储的单个应用的代码数据,分别确定特征处理节点;
所述汇集所述多个应用的处理节点以及处理节点之间的关联关系数据,包括:
将所述各代码分析服务器上的处理节点以及处理节点之间的关联关系数据上传至图数据仓库。
可选地,所述将所述各代码分析服务器上的处理节点以及处理节点之间的关联关系数据上传至图数据仓库包括:
根据上传配置策略上传所述处理节点以及处理节点之间的关联关系数据至图数据仓库。
可选地,所述基于所述关联关系数据,确定跨应用数据处理的数据处理路径包括:
基于所述跨多个应用的处理关系图,确定数据处理路径。
可选地,所述基于所述跨多个应用的处理关系图,确定数据处理路径包括:
将所述处理关系图导入在线图计算平台;
在所述在线图计算平台上在线搜索所述数据处理路径。
可选地,所述基于所述跨多个应用的处理关系图,确定数据处理路径包括:
将所述处理关系图导入离线图计算平台;
提交针对数据处理路径的分析任务到离线图计算平台;
获取所述离线图计算平台对数据处理路径的分析结果。
可选地,在所述汇集所述不同应用的处理节点以及处理节点之间的关联关系数据,得到跨多个应用的处理关系图之前,所述方法还包括:
针对各个应用,分别遍历所述处理节点以及处理节点之间的关联关系数据,得到各个数据处理路径的入口的入口处理节点;
获取所述入口处理节点的唯一性标识;
采用所述入口处理节点的唯一性标识,对与所述入口处理节点直接或间接关联的处理节点及其关联关系数据进行标记。
可选地,在所述基于所述关联关系数据,确定跨应用数据处理的数据处理路径之前,所述方法还包括:
合并所述各个应用中重合的处理节点和/或关联关系数据;
和/或,根据需要去除具有预设特征的处理节点。
可选地,所述处理节点包括数据发布节点、数据存储节点、远程调用节点、静态代码节点中至少一种,其中,所述数据发布节点包括网络地址路径和参数,所述数据存储节点包括数据表标识和字段标识,所述远程调用节点包括远程调用标识和参数,所述静态代码节点包括静态代码包名、静态代码类名、静态代码方法名、静态代码参数。
可选地,所述获取多个应用的代码数据和/或配置数据包括:
根据所述代码数据和/或配置数据的资源类型,确定所述代码数据和/或配置数据的获取策略;
根据所述获取策略,获取所述多个应用的代码数据和/或配置数据。
可选地,在所述根据所述代码数据和/或配置数据,分别确定各个应用中的特征处理节点之前,所述方法还包括:
删除与所述数据处理路径无关的代码数据和/或配置数据。
相应地,根据本申请的另一方面,还提供了一种数据处理方法,包括:
接收目标数据,其中,所述目标数据对应于多个应用;
获取所述多个应用的处理节点以及处理节点之间的关联关系数据,其中,所述处理节点包括具有跨应用特性的特征处理节点;
确定跨应用处理所述目标数据的数据处理路径;
根据所述数据处理路径,确定所述目标数据的目标处理节点。
相应地,根据本申请的另一方面,还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上述一个或多个的方法。
相应地,根据本申请的另一方面,还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上述一个或多个的方法。
依据本申请实施例,通过从应用的处理节点中查找具有跨应用特性的特征处理节点,根据特征处理节点确定不同应用的处理节点之间的关联关系数据,基于关联关系数据,确定跨应用数据处理的数据处理路径,使得数据处理路径的分析不再局限于单个应用内,避免了跨应用的处理节点之间的关联关系的遗漏问题,从而解决了跨应用的诸如敏感信息泄露、存储型XSS(Cross Site Scripting,跨站脚本攻击)等无法精准定位的问题。
进一步,通过汇集不同应用的处理节点以及处理节点之间的关联关系数据,得到跨多个应用的处理关系图,基于跨多个应用的处理关系图,确定数据处理路径,使得图数据的生成与图计算隔离开来,按照应用为基本单位对多个应用分别进行分布式分析,减轻单机负荷,汇集各个应用的图数据后,利用图计算技术对处理关系图进行进一步加工,提高了数据处理路径的分析效率。
进一步,通过采用所述唯一性标识,对从所述远程调用入口节点到对应的远程调用返回节点之间的处理节点和处理节点之间的关联关系数据进行标记,防止数据流转在重合的处理节点处产生错误。
进一步,通过合并所述各个应用中重合的处理节点和/或关联关系数据;和/或,根据需要去除具有预设特征的处理节点,在处理关系图生成前,先对图数据进行简化,减少了不必要的处理节点和关联关系数据,继而减少了数据处理路径分析时的计算量,提高了数据处理路径的分析效率。
上述说明仅是本申请技术方案的概述,为了能够更清楚了解本申请的技术手段,而可依照说明书的内容予以实施,并且为了让本申请的上述和其它目的、特征和优点能够更明显易懂,以下特举本申请的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本申请的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了数据处理路径的分析过程的示意图;
图2示出了根据本申请实施例一的一种数据处理路径的分析方法实施例的流程图;
图3示出了数据处理路径的分析产品的示意图;
图4示出了根据本申请实施例二的一种数据处理路径的分析方法实施例的流程图;
图5示出了资源获取流程图;
图6示出了URL解析流程图;
图7示出了持久层数据解析流程图;
图8示出了RPC解析流程图;
图9示出了静态数据流分析的流程图;
图10示出了静态代码分析前段准备的流程图;
图11示出了图上传与多应用图处理的流程图;
图12示出了根据本申请实施例三的一种数据处理方法实施例的流程图;
图13示出了数据处理路径的分析过程的示意图;
图14示出了根据本申请实施例四的一种数据处理路径的分析装置实施例的结构框图;
图15示出了根据本申请实施例五的一种数据处理装置实施例的结构框图;
图16示出了可被用于实现本公开中所述的各个实施例的示例性系统。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
为使本领域技术人员更好地理解本申请,以下对本申请涉及的概念进行说明:
应用可以分布在不同计算机上,通过网络来共同完成一项任务。多个应用之间可以相互进行调用,形成了复杂的数据关系网络。多个应用对数据进行生产、加工、存储等处理,在本申请中,每个处理被定义为处理节点。
处理节点包括存储数据的节点、发布数据的节点、远程调用数据的节点、加工数据的节点等,例如,应用中发布数据所生成的URL(Uniform/Universal Resource Locator,统一资源定位符)地址,可称为数据的数据发布节点;应用中数据存入的数据库,可称为数据的数据存储节点;应用中对数据的RPC(Remote Procedure Call,远程过程调用)处理,可称为数据的远程调用节点,或者其他任意适用的处理节点,本申请实施例对此不做限制。值得说明的是,程序代码的方法函数中,若函数内存在与某个数据相关的多个变量,即可将多个变量都看作是该数据的多个处理节点。
在本申请中,数据可以在多个应用中被处理,因此,处理节点中就会存在部分处理节点存在跨应用特性,记为特征处理节点。若一个处理节点跨应用,则表示与该处理节点连接的多个处理节点是属于至少两个应用的。处理节点具有跨应用特性,并非代表该处理节点一定是跨应用的,而是指处理节点具有特定的特性,可能是跨应用的处理节点。例如,大型数据关系网络中部署的多个应用,数据库中的数据是可能被多个应用调用的,因此数据存储节点具有跨应用特性;而RPC很可能是两个应用之间的调用,因此远程调用节点具有跨应用特性。数据存储节点、远程调用节点等具有跨应用特性,可以记为特征处理节点,具体还可以包括任意适用的处理节点,本申请实施例对此不做限制。
数据可以在多个处理节点之间进行处理,处理节点之间存在数据的流转,则处理节点之间具有关联关系,通过关联关系数据可以将处理节点之间的关联关系记录下来。处理节点之间的关联关系包括直接或间接的关联关系。关联关系数据中包括处理节点的相关数据、处理节点之间数据的流转方向等,或者其他任意适用的数据,本申请实施例对此不做限制。
在一个或多个应用中,针对某个数据,将该数据在多个处理节点之间进行处理的路径,记为数据处理路径。数据处理路径包括数据所经的处理节点,以及数据在处理节点之间流转的方向,具体可用任意适用的形式记录数据处理路径,本申请实施例对此不做限制。
例如,对应用的程序代码进行分析,分析得到的URL地址,可以采用“URL路径、参数(名称、类型等)”的形式记录为数据发布节点;分析得到数据存入的数据库,若为关系数据库,可以采用“数据表名称、数据字段名称、数据库库名”的形式记录为数据存储节点,若为文件上传服务器,可以采用“服务路径等”的形式记录为数据存储节点,若为NoSql(非关系型的数据库),可以采用“namespace、key_name”的形式记录为数据存储节点;分析得到RPC处理节点,采用“RPC名称,参数(名称、类型等)”的形式记录为远程调用节点。之后确定处理节点之间的关联关系数据,采用“处理节点标识、数据流转方向”的形式记录关联关系数据。具体可以根据实际需要,以任意适用的形式记录各种处理节点,本申请实施例对此不做限制。当需要确定某个数据的数据处理路径,查找到该数据的处理节点以及关联关系数据,即得到相应的数据处理路径。
在本申请的一种可选实施例中,数据处理路径是依据应用的代码数据和 /或配置数据进行分析的。代码数据包括应用的源代码、二、三方库代码、编译后的库如jar包等,或者其他任意适用的代码数据,本申请实施例对此不做限制。配置数据包括应用的配置文件、平台业务数据、中间件数据、应用资产数据等,或者其他任意适用的配置数据,本申请实施例对此不做限制。
例如,在多个分布式应用的开发中,可以将多个应用的代码数据和配置数据存储在专门的数据仓库中,以供开发人员随时获取。
在本申请的一种可选实施例中,处理节点是否具有跨应用特征,可以根据代码数据中的特征处理信息判断,特征处理信息可以从代码数据和/或配置数据中提取。特征处理信息包括表明处理节点具有跨应用特性的信息,也就是说,特征处理信息是由具有跨应用特性的定义决定的。特征处理信息包括代码数据中与生成URL相关的信息、代码数据中与存入数据库相关的信息、代码数据中与RPC处理相关的信息,或者其他任意适用的信息,本申请实施例对此不做限制。
在本申请的一种可选实施例中,通过静态代码分析出的处理节点,记为静态代码节点。静态代码节点包括方法返回节点、局部变量节点、形式参数节点等,或者其他任意适用的节点,本身实施例对此不做限制。静态代码分析技术包括将代码数据和/或配置数据解析成抽象语法树、根据抽象语法树生成callgragh(函数调用关系图)、符号解析、类型解析等处理步骤来得到处理节点,在本申请中称为静态代码节点,具体可以包括任意适用的静态代码分析技术和步骤,本申请实施例对此不做限制。
例如,依据应用的代码数据,通过BNF(Backus-Naur Form,巴科斯范式)定义项目语法,并通过JAVACC/ANTRL等工具生成语法解析器(包含词法分析与语法分析),通过语法解析器将待测源码(即代码数据)转换为抽象语法树,遍历抽象语法树通过符号分析生成作用域信息与类型信息,并添加到抽象语法树相应节点属性中,找出抽象语法树中所有的方法节点(即静态代码节点)。在应用的代码中,函数方法中的全局变量、局部变量、类字段、形式参数、return方法等都可作为一个静态代码节点。其中,return 方法是一个特殊的变量,或者说应该是函数中的变量+return方法是一个静态代码节点。
值得说明的是,在本申请中,静态代码节点不一定都是经静态代码分析过程得到的,也可以是根据特征处理信息与特征处理节点一同生成,例如,从代码数据中提取与URL相关的信息,根据提取的所有信息即可生成URL 处理节点,以及与URL处理节点有关联的静态代码节点。
在本申请的一种可选实施例中,特征处理信息包括数据发布信息、数据存储信息和远程调用信息中至少一种。
其中,数据发布信息包括与数据发布相关的信息,例如,webx框架下代码数据和/或配置数据中的webx.xml配置文件、module信息、URL信息 (URL路径、参数)等;开源Spring框架下代码数据和/或配置数据中的servlet (Server Applet)信息、URL信息等,或者其他任意适用的数据发布信息,本申请实施例对此不做限制。
其中,数据存储信息包括与存储数据相关的信息,例如,iBatis框架下代码数据和/或配置数据中的sqlMap信息、iBatis调用点的信息等;MyBatis 框架下代码数据和/或配置数据中的Mapper信息、MyBatis调用点的信息等,或者其他任意适用的数据存储信息,本申请实施例对此不做限制。
其中,远程调用信息包括与远程调用相关的信息,例如,代码中配置的 RPC路径与相应接口的信息,或者其他任意适用的远程调用信息,本申请实施例对此不做限制。
特征处理节点包括数据发布节点、或数据存储节点和远程调用节点中至少一种。
其中,数据发布节点包括发布数据的处理节点,例如,生成的URL地址可以作为数据发布节点,或者其他任意适用的数据发布节点,本申请实施例对此不做限制。根据数据发布信息,可以生成数据发布节点。
其中,数据存储节点包括存储数据的处理节点,例如,数据存入的数据库可以作为数据存储节点,或者其他任意适用的数据存储节点,本申请实施例对此不做限制。根据数据存储信息,可以生成数据存储节点。
其中,远程调用节点包括远程调用数据的处理节点,例如,对数据的 RPC调用可以作为远程调用节点,或者其他任意适用的远程调用节点,本申请实施例对此不做限制。根据远程调用信息,可以生成远程调用节点。
在本申请的一种可选实施例中,特征处理节点都会对应有直接关联的静态代码节点,将直接关联的静态代码节点汇集起来,形成的节点集合,记为入口静态代码节点集合。相应的,入口静态代码节点集合中的节点可以称为入口静态代码节点。
在本申请的一种可选实施例中,如上所述静态代码节点对应于变量,入口静态代码节点集合中的静态代码节点对应的变量,记为入口变量。
在本申请的一种可选实施例中,静态代码节点包括形式参数节点。静态代码解析查找到静态代码节点后,判断静态代码节点是否为方法调用,如果是方法调用,解析得到虚调用函数,通过虚调用函数信息,查询可能的调用点,若找到实际调用函数,则执行函数展开,则将形式参数创建一个节点,记为形式参数节点。
在本申请的一种可选实施例中,将不同应用的处理节点以及处理节点之间的关联关系数据汇集,就得到了跨多个应用的处理关系图。为了利用图计算技术,分析数据处理路径,或者对处理节点、以及处理节点之间的关联关系数据进行进一步加工,需要以处理节点为点数据、处理节点之间的关联关系数据为边数据,汇集成图数据,即处理关系图。
在本申请的一种可选实施例中,与远程调用节点直接关联的静态代码节点,分为远程调用入口节点和远程调用返回节点两种,应用中向远程调用节点调用服务的节点,记为远程调用入口节点,而接收应调用返回的数据的节点,记为远程调用返回节点。
在本申请的一种可选实施例中,采用代码分析服务器对代码数据进行分析,具体可以将单个应用的代码数据存储在一个代码分析服务器上,以减少分散在多个服务器上造成大量IO操作的通信压力。
处理节点和处理节点之间的关联关系数据需要以图数据结构存储起来,也就是,在汇集处理节点和处理节点之间的关联关系数据时,将处理节点和处理节点之间的关联关系数据上传到图数据仓库。图数据仓库是以图数据结果存储数据的数据仓库。
在本申请的一种可选实施例中,基于处理关系图确定数据处理路径,或者进行进一步处理时,一种实现方式可以是在在线图计算平台上进行,在线图计算平台提供在线的数据检索、查询等功能,或者其他任意适用的功能,本申请实施例对此不做限制。
在本申请的一种可选实施例中,基于处理关系图确定数据处理路径,或者进行进一步处理时,另一种实现方式可以是在离线图计算平台上进行,离线图计算平台支持对图的点和边进行编程等,或者其他任意适用的功能,本申请实施例对此不做限制。
在本申请的一种可选实施例中,针对各个应用,位于各个数据处理路径的入口的处理节点,记为入口处理节点。例如,一个数据处理路径是从数据存储节点开始的,则将该数据存储节点作为入口处理节点。
在本申请的一种可选实施例中,根据业务需要,一部分处理节点并不需要显示出来,直接将该节点前后的两个处理节点连接起来即可,要去除这样的处理节点,可以通过判断处理节点是否具有预设特征来确定处理节点。预设特征包括记录的处理节点的标识、其中包含的参数名、方法名、类名、包名等,或者其他任意适用的特征,本申请实施例对此不做限制。
在本申请的一种可选实施例中,数据发布节点包括网络地址路径和参数,具体可以包括其他任意适用的节点属性信息,本申请实施例对此不做限制。数据存储节点包括数据表标识和字段标识,具体可以包括其他任意适用的节点属性信息,本申请实施例对此不做限制。远程调用节点包括远程调用标识和参数,具体可以包括其他任意适用的节点属性信息,本申请实施例对此不做限制。静态代码节点包括静态代码包名、静态代码类名、静态代码方法名、静态代码参数,具体可以包括其他任意适用的节点属性信息,本申请实施例对此不做限制。
在本申请的一种可选实施例中,代码数据的资源类型包括对象存储URL 类型、Git/SVN类型、需解压类型、不需解压类型、需解密类型、不需解密类型,或者其他任意适用的资源类型,本申请实施例对此不做限制。不同的资源类型将决定获取代码数据的获取策略,获取策略包括下载方式、解压方式、解密方式等,或者其他任意适用的与代码数据的获取相关的方式策略,本申请实施例对此不做限制。例如,若为对象存储URL,则直接通过URL进行下载,若为Git/SVN类型,则通过SHH协议(Secure Shell,安全外壳协议)进行下载。获取策略还包括对获取的文件是否需要解压、解密等。
根据本申请的一种实施例,在数据处理路径的分析中,传统方案的数据处理路径的分析局限于单个应用内,一旦面对大量分布式应用,就会造成跨应用的处理节点之间的关联关系的遗漏问题,继而导致跨应用的诸如敏感信息泄露、存储型XSS(Cross SiteScripting,跨站脚本攻击)等无法精准定位的问题。如图1所示的数据处理路径的分析过程的示意图,本申请提供了一种数据处理路径的分析机制,通过从应用的处理节点中查找具有跨应用特性的特征处理节点,根据特征处理节点确定不同应用的处理节点之间的关联关系数据,基于关联关系数据,确定跨应用数据处理的数据处理路径,使得数据处理路径的分析不再局限于单个应用内,避免了跨应用的处理节点之间的关联关系的遗漏问题,从而解决了跨应用的诸如敏感信息泄露、存储型XSS (Cross Site Scripting,跨站脚本攻击)等无法精准定位的问题。本申请适用但不局限于上述应用场景。
参照图2,示出了根据本申请实施例一的一种数据处理路径的分析方法实施例的流程图,该方法具体可以包括以下步骤:
步骤101,从应用的处理节点中查找具有跨应用特性的特征处理节点。
在本申请实施例中,为了避免遗漏跨应用的数据处理路径,先查找到定义的处理节点中具有跨应用特性的特征处理节点,查找特征处理节点的实现方式可以包括多种,例如,获取多个应用的代码数据和/或配置数据,根据代码数据和/或配置数据,分别确定各个应用的特征处理节点,调用代码分析服务器来分别确定各个应用的特征处理节点,调用单个代码分析服务器对单个应用的代码数据进行分析,确定各个应用的特征处理节点,具体可以包括任意适用的方式,本申请实施例对此不做限制。查找到特征处理节点后,再根据特征处理节点确定处理节点之间的关联关系数据,由于已经先将可能跨应用的处理节点找到,因此跨应用的数据处理路径便一定不会被遗漏。
步骤102,根据所述特征处理节点确定不同应用的处理节点之间的关联关系数据。
在本申请实施例中,根据特征处理节点确定不同应用的处理节点之间的关联关系数据的实现方式可以包括多种,例如,根据特征处理信息,生成与特征处理节点直接关联的静态代码节点以及对应的关联关系数据,或者根据特征处理节点直接关联的静态代码节点,确定与特征处理节点间接关联的静态代码节点以及对应的关联关系数据,或者其他任意适用的方式,本申请实施例对此不做限制。
特征处理节点确定后,可以一同被找到的有与特征处理节点直接关联的静态代码节点,再经过静态代码分析,找到与直接关联的静态代码节点具有直接或间接关联关系的其他静态代码节点,并生成特征处理节点与静态代码节点、静态代码节点与特征处理节点等处理节点之间的关联关系数据,待将所有或必要的处理节点以及处理节点之间的关联关系数据都确定后,就可以基于关联关系数据,确定数据处理的数据处理路径。
步骤103,基于所述关联关系数据,确定跨应用数据处理的数据处理路径。
在本申请实施例中,基于关联关系数据,确定跨应用数据处理的数据处理路径的实现方式可以包括多种,例如,基于跨多个应用的处理关系图,确定数据处理路径,具体可以包括任意适用的实现方式,本申请实施例对此不做限制。
在多个应用的处理节点的关联关系数据确定后,针对某个数据,搜索到数据所经的所有处理节点,即可确定数据处理路径。由于特征处理节点只是可能跨应用的处理节点,而非一定跨应用的处理节点,因此在确定数据处理路径时,若数据处理路径仅在单个应用内,则得到的是不跨应用的数据处理路径,若数据处理路径跨多个应用,则得到的是跨应用的数据处理路径。
例如,如图3所示的数据处理路径的分析产品的示意图。在数据传递图的展示区域中,展示了一种数据的数据处理路径,其中,每个圆圈代表一个处理节点,DB(table:runtime_app|col:identity_no)表示一个数据存储节点, Static Code表示一个静态代码节点,RPC(rpc_name)和RPC-used(rpc_name)都表示远程调用节点,URL(listIds)表示一个数据发布节点。在相关代码的展示区域中,展示了上面数据传递图中选中的处理节点所对应的代码数据,也即是实现该处理节点的程序代码。在右上的展示区域中,可以选择进行离线计算或在线计算,还可以提交执行图搜索时所编写的语句。在右下的展示区域中,可以提交所要搜索的数据的变量名和/或变量的值。
依据本申请实施例,通过从应用的处理节点中查找具有跨应用特性的特征处理节点,根据特征处理节点确定不同应用的处理节点之间的关联关系数据,基于关联关系数据,确定的数据处理路径也就包括了跨应用数据处理的数据处理路径,使得数据处理路径的分析不再局限于单个应用内,避免了跨应用的处理节点之间的关联关系的遗漏问题,从而解决了跨应用的诸如敏感信息泄露、存储型XSS(Cross Site Scripting,跨站脚本攻击)等无法精准定位的问题。
参照图4,示出了根据本申请实施例二的一种数据处理路径的分析方法实施例的流程图,该方法具体可以包括以下步骤:
步骤201,获取多个应用的代码数据和/或配置数据。
在本申请实施例中,获取多个应用的代码数据和/或配置数据的方式可以包括多种,例如,各个应用的代码数据和/或配置数据存储在用于管理代码数据的服务器上,通过读取代码数据的资源文件的路径,对资源文件进行下载、解压、解密等操作,并提供处理后资源路径,或者其他任意适用的实现方式,本申请实施例对此不做限制。
在本申请的一种实施例中,可选地,获取多个应用的代码数据和/或配置数据的一种实现方式中包括:
根据所述代码数据和/或配置数据的资源类型,确定所述代码数据和/或配置数据的获取策略;
根据所述获取策略,获取所述多个应用的代码数据和/或配置数据。
例如,如图5所示的资源获取流程图。
步骤1:获取源文件集。
步骤1.1:判断代码数据的资源类型,如果资源类型为对象存储URL,则执行步骤1.2;如果资源类型为Git/SVN类型,则执行步骤1.3。
步骤1.2:资源类型为对象存储URL,直接通过URL进行下载,进入步骤1.4。
步骤1.3:资源类型为Git/SVN类型,通过SSH协议进行下载,进入步骤1.4。
步骤1.4:判断资源类型是否需要解压代码数据的文件,如果需要,进入步骤1.5,否则进入1.6。
步骤1.5:解压下载的文件,进入步骤1.6。
步骤1.6:判断资源类型是否需要解密代码数据的文件,如果需要,进入1.7,否则进入步骤2。
步骤1.7:解密文件,进入步骤2。
在本申请的一种实施例中,可选地,在根据所述代码数据,分别确定各个应用中的特征处理节点之前,还可以包括:
删除与所述数据处理路径无关的代码数据和/或配置数据。
多个应用的代码数据中并非都与数据处理路径有关,为了减轻分析代码数据的工作量,提高分析效率,获取代码数据后,先将于数据处理路径无关的代码数据删除。
例如,步骤2:过滤无关文件,分为步骤2.1:过滤所有无关文件,例如,测试文件、某些不被检测的资源文件等;步骤2.2:迁移部分待检测文件。
步骤202,从各个应用的代码数据和/或配置数据中提取具有跨应用特性的特征处理信息。
在本申请实施例中,从各个应用的代码数据和/或配置数据中提取具有跨应用特性的特征处理信息的方式可以包括多种,例如,特征处理信息可以依据代码数据和/或配置数据的框架类型或存储类型或远程调用类型进行提取,具体实现方式会因不同种的特征处理信息而不同,本申请实施例对此不做限制。
在本申请的一种实施例中,可选地,从各个应用的代码数据和/或配置数据中提取具有跨应用特性的特征处理信息的一种实现方式中包括:
解析所述代码数据的配置文件,确定所述代码数据的框架类型或存储类型或远程调用类型,其中,所述框架类型包括webx框架或spring框架,或者其他任意适用的框架类型,本申请实施例对此不做限制。所述存储类型包括iBatis类型或MyBatis类型,或者其他任意适用的存储类型,本申请实施例对此不做限制。
依据所述代码数据的框架类型或存储类型或远程调用类型,提取各种特征处理信息。
代码数据对应有配置文件,有的代码数据的文件和配置文件的分开的,有的代码数据的文件和配置文件为同一个文件。对配置文件进行解析,可以确定代码数据的框架类型或存储类型或远程调用类型。
步骤203,根据所述特征处理信息,生成特征处理节点。
在本申请实施例中,根据提取的特征处理信息,就可以生成对应的特征处理节点,特征处理节点的生成是指以能代表该节点的特征处理信息记录该特征处理节点,也就是,生成特征处理节点的点信息。不同的特征处理信息,对应生成特征处理节点的方式可以有所不同,具体可以包括任意适用的生成方式,本申请实施例对此不做限制。
步骤204,根据所述特征处理信息,生成与所述特征处理节点直接关联的静态代码节点以及对应的关联关系数据。
在本申请实施例中,根据特征处理信息,不仅可以生成特征处理节点,还可以一同生成与特征处理节点直接关联的静态代码节点,以及特征处理节点与静态代码节点之间的关联关系数据。由于特征处理信息中包括有调用特征处理节点的静态代码节点的信息,因此可以生成静态代码节点。根据特征处理信息生成与特征处理节点直接关联的静态代码节点时,有时需要与静态代码分析的过程相结合来确定直接关联的静态代码节点。
例如,步骤3:URL解析(即根据数据发布信息,生成数据发布节点、与数据发布节点直接关联的静态代码节点,以及数据发布节点与静态代码节点之间的关联关系数据的过程)。
如图6所示的URL解析流程图。
步骤3:URL解析。具体包括如下:
步骤3.1:解析代码数据的配置文件,判断框架类型,若是webx框架,则执行步骤3.2,若是Spring框架(即SpringMVC框架),则执行步骤3.3。
步骤3.2:webx框架分析。具体包括如下:
步骤3.2.1:提取webx.xml配置文件,确定webx框架的模块。
步骤3.2.2:根据提取的模块信息搜索module信息。
步骤3.2.3:根据不同的module信息和框架设计约定,提取URL信息(例如,域名的路径),进入步骤3.5。
步骤3.3:Spring框架分析。具体包括如下:
步骤3.3.1:扫描代码中的注解,如果为Spring相关匹配的注解则提取 URL信息。
步骤3.4:提取Servlet信息。
步骤3.4.1:扫描代码中的注解,如果为Servlet相关匹配的注解则提取 URL信息。
步骤3.4.2:读取web.xml,提取Servlet相关信息,提取Servlet类的URL 信息,进入步骤3.5。
步骤3.5:根据上述提取的所有信息(即数据发布信息)生成URL数据节点(即数据发布节点)、静态代码节点及URL数据节点到静态代码节点连接边(即数据发布节点和静态代码节点之间的关联关系数据)并添加到数据流图中,URL数据节点(即数据发布节点)定义为“URL路径+参数(名称、类型等)”(即网络地址路径和参数),静态代码节点定义为“包名+类名+参数(名称、类型等)”(即静态代码包名、静态代码类名、静态代码参数)。
步骤3.6:异步存储图数据,也就是将点数据和边数据存储。
步骤4:持久层数据解析(即根据数据存储信息,生成数据存储节点、与数据存储节点直接关联的静态代码节点,以及数据存储节点与静态代码节点之间的关联关系数据的过程)。
如图7所示的持久层数据解析流程图。
步骤4:持久层数据解析。
步骤4.1:判断项目类型(即存储类型,也可称为框架类型),如果是iBatis 类型,则执行步骤4.2,如果为MyBatis类型,进入步骤4.3。
步骤4.2:iBatis框架分析。具体包括如下:
步骤4.2.1:扫描iBatis配置,提取其中的sqlMap信息。
步骤4.2.2:执行6.2.1,6.2.2,6.2.3进行静态代码分析前端准备。
步骤4.2.3:扫描代码中的iBatis调用点,提取出sqlMap中的id,并记录调用点,进入步骤4.4。
步骤4.3:MyBatis框架分析。具体包括如下:
步骤4.3.1:扫描MyBatis配置,提取其中的Mapper信息。
步骤4.2.2:执行6.2.1,6.2.2,6.2.3进行静态代码分析前端准备。
步骤4.3.3:扫描代码中以接口方式定义的Mapper,提取Mapper信息同时记录调用点。
步骤4.3.4:扫描代码中的MyBatis调用点,提取出Mapper中的id,并记录调用点,进入步骤4.4。
步骤4.4:解析上述sqlMap和Mapper中的sql,解析使用的表名和字段。
步骤4.5根据解析出的表明和字段(即数据存储信息)生成DB数据节点(即数据存储节点),根据调用点(即数据存储信息)生成静态代码节点 (也可称为静态代码数据节点)。
步骤4.6根据sqlMap和Mapper中的id,调用点的id,建立DB数据节点和静态代码节点的连接(即数据存储节点和静态代码节点之间的关联关系数据),并且存在数据流图中。
步骤4.7:异步存储图数据,也就是将点数据和边数据存储。
步骤5:RPC解析(即根据远程调用信息,生成远程调用节点、与远程调用节点直接关联的静态代码节点,以及远程调用节点与静态代码节点之间的关联关系数据的过程)。
如图8所示的RPC解析流程图。
步骤5:RPC解析。
步骤5.1:解析代码数据的配置文件,判断是否存在RPC配置。
步骤5.2:根据RPC类型(即远程调用类型),检查配置的RPC路径与相应接口。
步骤5.3:执行6.2.1,6.2.2,6.2.3进行静态代码分析前端准备。
步骤5.4:根据上述配置接口找到抽象语法树中的相应方法节点(即静态代码节点,也可称为静态方法数据流节点)。
步骤5.5:根据上述提取的所有信息(即远程调用信息)生成RPC数据节点(即远程调用节点)、静态代码节点及其连接边(即远程调用节点和静态代码节点之间的关联关系数据)并添加到数据流图中,RPC数据流节点定义为“RPC名称,参数(名称,类型等)”(即远程调用标识和参数),静态代码节点定义为“包名+类名+参数(名称、类型等)”(即静态代码包名、静态代码类名、静态代码参数)。
步骤5.6:异步存储图数据,也就是将点数据和边数据存储。
步骤205,根据所述特征处理节点直接关联的静态代码节点,确定与所述特征处理节点间接关联的静态代码节点以及对应的关联关系数据。
在本申请实施例中,执行静态代码分析,并根据上述的特征处理节点直接关联的静态代码节点作为入口,分析并生成与特征处理节点间接关联的静态代码节点,以及静态代码节点之间的关联关系数据。
根据所述特征处理节点直接关联的静态代码节点,确定与所述特征处理节点间接关联的静态代码节点以及对应的关联关系数据的实现方式可以包括多种,例如,汇集与特征处理节点直接关联的静态代码节点,得到入口静态代码节点集合;查找各个应用中与入口静态代码节点集合有关联的静态代码节点,并生成静态代码节点之间的关联关系数据,或者其他任意适用的方式,本申请实施例对此不做限制。
在本申请的一种实施例中,可选地,根据所述特征处理节点直接关联的静态代码节点,确定与所述特征处理节点间接关联的静态代码节点以及对应的关联关系数据的一种实现方式中可以包括:
汇集与所述特征处理节点直接关联的静态代码节点,得到入口静态代码节点集合;以所述入口静态代码节点集合中的静态代码节点为起点,查找各个应用中关联的静态代码节点,并生成静态代码节点之间的关联关系数据。
查找与入口静态代码节点集合中各个静态代码节点有关联的静态代码节点,具体包括直接关联或间接关联的静态代码节点,具体可以包括多种实现方式,本申请实施例对此不做限制。
例如,如图9所示的静态数据流分析的流程图。
步骤6:静态源码解析。
步骤6.1:搜集上述URL解析、持久层数据解析、RPC解析的静态代码节点,形成入口集合(即入口静态代码节点集合),每个入口为“包名+类名 +方法名+参数名”的形式。
在本申请的一种实施例中,可选地,在以所述入口静态代码节点集合中的静态代码节点为起点,查找各个应用中关联的静态代码节点,并生成静态代码节点之间的关联关系数据之前,还可以包括:
根据各个应用的代码数据和/或配置数据,查找方法节点。
例如,如图10所示的静态代码分析前段准备(也称语法前段准备)的流程图。
步骤6.2:编译前段执行包括如下几个步骤:
步骤6.2.1:语法解析器生成:通过BNF定义项目语法,并通过 JAVACC/ANTRL等工具生成语法解析器(包含词法分析与语法分析)。
步骤6.2.2:抽象语法树生成:通过语法解析器将待测源码(即代码数据) 转换为抽象语法树。在一些实现方式中,还可以进一步根据AST抽象语法树生成其他中间表示语言,例如,callgragh(函数关系调用图)等。
步骤6.2.3:符号解析和类型解析:遍历抽象语法树通过符号分析生成作用域信息与类型信息,并添加到抽象语法树相应节点属性中。
在本申请的一种实施例中,可选地,以所述入口静态代码节点集合中的静态代码节点为起点,查找所述各个应用中关联的静态代码节点,并生成静态代码节点之间的关联关系数据的一种实现方式中可以包括:
判断所述方法节点中是否包含入口变量,其中,所述入口变量包括入口静态代码节点集合中的静态代码节点对应的变量;
若所述方法节点中包含所述入口变量,则将方法节点中受入口变量影响的变量确定为关联的静态代码节点,并生成静态代码节点之间的关联关系数据。
例如,如图9所示的静态数据流分析的流程图。
步骤6.3:数据跟踪图构建。具体包括如下:
步骤6.3.1:通过入口集合(即入口静态代码节点),在抽象语法树中找到所有的方法节点。
步骤6.3.2:依顺序遍历方法内表达式,判断表达式变量中是否包含入口变量,如果包含,则进入步骤6.3.3,如果不包含,则结束。
在本申请的一种实施例中,可选地,以所述入口静态代码节点集合中的静态代码节点为起点,查找各个应用中关联的静态代码节点,并生成静态代码节点之间的关联关系数据的一种实现方式中还可以包括:
解析所述方法节点调用的方法,得到虚调用函数;
查找所述虚调用函数对应的实际调用函数;
根据实际调用函数,创建形式参数节点。
例如,如图9所示的静态数据流分析的流程图。
步骤6.3.3:判断表达式中是否存在数据传递或流转,若存在,将被影响的变量添加到跟踪变量表中,并在数据跟踪图中添加一个节点(即静态代码节点)。
步骤6.3.4:如果出现了方法调用,对调用方法进行解析,解析得到虚调用函数。
步骤6.3.5:通过虚调用函数信息,查询可能的调用点,如果能找到实际调用函数,执行步骤6.3.6,否则结束。
步骤6.3.6:找到实际调用函数,执行函数展开。
步骤6.3.6.1:创建形式参数节点和/或实际参数节点,将实际参数节点指向形式参数节,将形式参数添加到数据跟踪变量表中;若不存在实际参数,但调用函数为持久层调用点,亦创建节点(即数据存储节点)。
在本申请的一种实施例中,可选地,若所述实际调用函数没有函数摘要,在所述根据所述实际调用函数的函数摘要,确定静态代码节点之间的关联关系之前,还可以包括:
创建所述实际调用函数的函数摘要。
例如,如图9所示的静态数据流分析的流程图。
步骤6.3.6.2:判断当前需要展开的函数是否已经存在函数摘要,如果判断的结果为是,则执行步骤6.3.6.4,否则执行步骤6.3.6.3。
步骤6.3.6.3:创建函数摘要:函数摘要记录了函数的执行结果与函数基本属性。对于数据流分析(即数据处理路径分析)而言,主要记录执行内容对形式参数的影响、形式参数对返回的影响、包含哪些数据操作。执行内容对形式参数的影响包括对形式参数进行赋值或者对字段进行修改等操作,从而影响形式参数情况;形式参数对返回的影响主要为判断返回值与形式参数的影响;包含的数据操作可能为对持久层进行的数据增删改查等。实际上,函数摘要可以是一个哈希表结构,其中Key为“包名+类名+方法名+参数名”形式,value值为各种影响结果。
在本申请的一种实施例中,可选地,在根据所述实际调用函数,创建形式参数节点之后,还可以包括:
根据所述实际调用函数的函数摘要,确定静态代码节点之间的关联关系数据。
例如,如图9所示的静态数据流分析的流程图。
步骤6.3.6.4:通过函数摘要,判断形式参数对返回值的影响,如果有影响,则创建方法返回节点(即静态代码节点)到被赋值节点(静态代码节点) 的连接(即关联关系数据),如果没有影响,则结束。
在本申请的一种实施例中,可选地,在汇集所述不同应用的处理节点以及处理节点之间的关联关系数据,得到跨多个应用的处理关系图之前,还可以包括:
针对各个应用,分别遍历所述处理节点以及处理节点之间的关联关系数据,得到各个数据处理路径的入口的入口处理节点;
获取所述入口处理节点的唯一性标识;
采用所述入口处理节点的唯一性标识,对与所述入口处理节点直接或间接关联的处理节点及其关联关系数据进行标记。
例如,如图9所示的静态数据流分析的流程图。
步骤6.3.6.5:对于遍历产出的所有节点(即处理节点)和边(即关联关系数据),以入口(即入口处理节点)作为链路的唯一性标识traceId。其中,各个处理节点的唯一性标识可以在产生处理节点的数据时一并生成。
步骤6.3.7:图折叠:遍历图,通过图折叠算法对图进行折叠:
图的边折叠算法属于几何元素删除法,其实质是顶点的删除。不同于 Hoppe提出的计算机三角网络模型的折叠算法,算法仅仅用来删除非参数与返回方法的节点。
步骤6.3.8:异步存储图数据。
在本申请的一种实施例中,可选地,在基于所述关联关系数据,确定跨应用数据处理的数据处理路径之前,还可以包括:
合并所述各个应用中重合的处理节点和/或关联关系数据;
和/或,根据需要去除具有预设特征的处理节点。
对于各个应用中的处理节点和关联关系数据,进行相应例如折叠无效边,简化图等操作,然后异步存储图数据。
例如,步骤7单应用图统一处理:
步骤7.1:处理节点/关联关系数据去重。
步骤7.1.1:从磁盘读取并遍历上述所有处理节点与关联关系数据,使用 MD5算法对处理节点和关联关系数据进行计算获取数据。
步骤7.1.2:对处理节点进行去重操作。
步骤7.2:处理节点/关联关系数据清洗:遍历上述去重后的处理节点/ 关联关系数据,根据业务需要去除预设特征的处理节点。
步骤7.3:图折叠简化:根据业务需要,对图进行边折叠简化。
步骤206,汇集所述不同应用的处理节点以及处理节点之间的关联关系数据,得到跨多个应用的处理关系图。
在本申请实施例中,汇集得到跨多个应用的处理关系图的实现方式可以包括多种,例如,汇集所述多个应用的处理节点以及处理节点之间的关联关系数据;合并跨应用的重合的处理节点,得到所述处理关系图,或者其他任意适用的实现方式,本申请实施例对此不做限制。
在本申请的一种实施例中,可选地,汇集所述不同应用的处理节点以及处理节点之间的关联关系数据,得到跨多个应用的处理关系图的一种实现方式中可以包括:
汇集所述多个应用的处理节点以及处理节点之间的关联关系数据。
在本申请的一种实施例中,可选地,从应用的处理节点中查找具有跨应用特性的特征处理节点的一种实现方式可以包括:调用各代码分析服务器,分别根据其上存储的单个应用的代码数据,分别确定特征处理节点;对应的,汇集所述多个应用的处理节点以及处理节点之间的关联关系数据的一种实现方式可以包括:
将所述各代码分析服务器上的处理节点以及处理节点之间的关联关系数据上传至图数据仓库。
在本申请的一种实施例中,可选地,将所述各代码分析服务器上的处理节点以及处理节点之间的关联关系数据上传至图数据仓库的一种实现方式可以包括:根据上传配置策略上传所述处理节点以及处理节点之间的关联关系数据至图数据仓库。
上传配置策略用于处理节点以及处理节点之间的关联关系数据在上传图数据仓库时的策略。
例如,如图11所示的图上传与多应用图处理的流程图。
步骤8:图上传与多应用图处理。
步骤8.1:读取配置文件,获取上传配置策略。例如,上传配置策略包括Batch上传条目数量,上传超时时间,超时重试次数等等,上传数据按照应用进行分区。
步骤8.2:如果按照批处理配置对节点进行批量上传,并记录批量上传点。
步骤8.3:判断超时时间,如果出现超时,则执行步骤8.4,否则直接进入步骤8.5。
步骤8.4:断点重试:断开超时连接,判断超时重试次数是否达到上限,如果没有达到上限,重新执行上传,并将超时重试次数+1,进入步骤8.4;如果达到上限,则抛出异常,记录错误日志。
合并跨应用的重合的处理节点,得到所述处理关系图。
在数据仓库对所有应用图数据中重合的处理节点进行跨应用合并,由于采用了相同的方式进行数据抽取,不同应用之间至少存在如下的两种关联:一是若两个应用操作了相同的持久层,则数据存储节点应该是一致的,二是,对于RPC而言,服务提供方提供的RPC接口对应的静态代码节点与服务使用方使用得RPC接口应该是一致的,这样的节点就是重合的,可以完成应用间的关联。
在本申请的一种实施例中,可选地,合并跨应用的重合的处理节点,得到所述处理关系图的一种实现方式可以包括:
针对各个远程调用节点,查找重合的远程调用入口节点;
获取不同的远程调用入口节点的唯一性标识;
采用所述唯一性标识,对从所述远程调用入口节点到对应的远程调用返回节点之间的处理节点和处理节点之间的关联关系数据进行标记。
例如,步骤8.5:跨应用(跨区)节点合并。
由于重合的处理节点对应多条不同的数据处理路径(也称为数据链路),需要对每条数据处理路径进行唯一性标识,以防止数据流转在重合的处理节点处产生错误。
步骤8.5.1:对于持久层数据节点(即数据存储节点),若节点重合,代表不同应用使用同一持久层数据,该数据所在的不同处理路径均是数据的正常流转过程,不需要额外进行唯一性标识。
步骤8.5.2:对于RPC处理节点(即远程调用节点),若节点重合,代表不同应用使用同一RPC接口,但接口返回数据为单应用所有,若不对每条数据处理路径进行区分,会导致数据流转在RPC返回对应的重合节点产生混乱,因此需要进行唯一性标识,对于一个特定的RPC接口,其标识过程为:
步骤8.5.2-1:获取所有入口重合节点(即重合的远程调用入口节点)的唯一性标识traceId1/traceId2/……,得到一组唯一性标识的集合 {traceId1,traceId2,……},也即是生成不同的远程调用入口节点的唯一性标识。
步骤8.5.2-2:入口重合节点到方法返回重合节点(即远程调用返回节点) 为止的整条数据处理路径上所涉及的处理节点和关联关系数据,都以唯一性标识{traceId1,traceId2,……}标记。
步骤207,基于所述跨多个应用的处理关系图,确定数据处理路径。
在本申请实施例中,处理关系图为图数据,可以采用多种图计算方式,确定数据处理路径,还可以利用图计算技术进行进一步处理,具体可以包括任意适用的方式,本申请实施例对此不做限制。
例如,用于图计算的引擎可以使用图计算引擎如GraphX,Neo4j等;用于图查询的语言可以使用LIKQ,Cypher等图查询语言;用于数据存储的系统可以使用Hbase等分布式存储;可以采用IAST等方式,动态获取数据处理路径和URL处理节点到静态代码节点的映射关系;可以通过DAST、IAST 甚至人工补充的方式添加其他图节点与边(即处理节点和关联关系数据)。
在本申请的一种实施例中,可选地,基于所述跨多个应用的处理关系图,确定数据处理路径的一种实现方式中可以包括:
将所述处理关系图导入在线图计算平台;
在所述在线图计算平台上在线搜索所述数据处理路径。
例如,步骤9:在线图搜索分析:通过在线图搜索引擎与图搜索语言(如 Gremlin)对非全局或简单场景进行分析。具体包括如下:
步骤9.1:将图数据导入在线图搜索引擎(即图遍历计算平台)存储。
步骤9.2:编写图Apache TinkerPop下的Gremlin语言。Gremlin是一种函数式数据流语言,可以使得用户使用简洁的方式表示复杂属性图的遍历或者查询。
步骤9.3:在支持Gremlin语言引擎的系统中执行图搜索。例如,通过编写的语句在URL节点中找到所有“table”属性为“user”,且“col”属性为“phone_num”的处理节点到“label”属性为“url_vertex”的处理节点的数据处理路径,即通过这种方式可以获取用户的电话数据在哪些URL接口。
在本申请的一种实施例中,可选地,基于所述跨多个应用的处理关系图,确定数据处理路径的另一种实现方式中可以包括:
将所述处理关系图导入离线图计算平台;
提交针对数据处理路径的分析任务到离线图计算平台;
获取所述离线图计算平台对数据处理路径的分析结果。
例如,步骤10:离线图计算分析:通过离线图计算引擎和图编程(如 pregel)对全局完整数据进行关联分析。
步骤10.1:将图数据导入离线图搜索引擎(即分布式计算平台)存储。
步骤10.2:通过Pregel API编写实现待查询的图计算算法。Pregel是大规模分布式图计算平台,本质上,图是一种递归的数据结构,其顶点的属性值依赖于其邻接节点,许多重要的图算法通过迭代计算每个顶点的属性直到到达定点条件,在Pregel中这些递归的图算法被抽象成一系列图并行操作,其计算模型提供如下三个基本函数(vertexProgram,sendMessage,messageCombiner),编写算法主要在于实现这三个基本函数。
步骤10.3:在支持Pregel的平台上提交作业(即查询任务),并获取分析数据(即数据处理路径)。
依据本申请实施例,通过获取多个应用的代码数据和/或配置数据,从各个应用的代码数据和/或配置数据中提取具有跨应用特性的特征处理信息,根据所述特征处理信息,生成特征处理节点,根据所述特征处理信息,生成与所述特征处理节点直接关联的静态代码节点以及对应的关联关系数据,根据所述特征处理节点直接关联的静态代码节点,确定与所述特征处理节点间接关联的静态代码节点以及对应的关联关系数据,汇集所述不同应用的处理节点以及处理节点之间的关联关系数据,得到跨多个应用的处理关系图,基于所述跨多个应用的处理关系图,确定数据处理路径,使得数据处理路径的分析不再局限于单个应用内,避免了跨应用的处理节点之间的关联关系的遗漏问题,从而解决了跨应用的诸如敏感信息泄露、存储型XSS(Cross Site Scripting,跨站脚本攻击)等无法精准定位的问题。
进一步,通过汇集不同应用的处理节点以及处理节点之间的关联关系数据,得到跨多个应用的处理关系图,基于跨多个应用的处理关系图,确定数据处理路径,使得图数据的生成与图计算隔离开来,按照应用为基本单位对多个应用分别进行分布式分析,减轻单机负荷,汇集各个应用的图数据后,利用图计算基数对处理关系图进行进一步加工,提高了数据处理路径的分析效率。
进一步,通过采用所述唯一性标识,对从所述远程调用入口节点到对应的远程调用返回节点之间的处理节点和处理节点之间的关联关系数据进行标记,防止数据流转在重合的处理节点处产生错误。
进一步,通过合并所述各个应用中重合的处理节点和/或关联关系数据;和/或,根据需要去除具有预设特征的处理节点,在处理关系图生成前,先对图数据进行简化,减少了不必要的处理节点和关联关系数据,继而减少了数据处理路径分析时的计算量,提高了数据处理路径的分析效率。
参照图12,示出了根据本申请实施例三的一种数据处理方法实施例的流程图,该方法具体可以包括以下步骤:
步骤301,接收目标数据。
在本申请实施例中,目标数据对应于多个应用,即多个应用可以对目标数据进行处理,包括敏感信息泄露、存储型XSS等问题所泄露的数据,或者其他任意适用的数据,本申请实施例对此不做限制。为了定位到处理目标数据的各个处理节点,需要提交泄露的目标数据的名称、类型、属性等任意适用的描述数据,本申请实施例对此不做限制。例如,接收目标数据的“table”属性(表名)为“user”,且“col”属性(字段名)为“phone_num”,即目标数据是用户的电话号码。
步骤302,获取所述多个应用的处理节点以及处理节点之间的关联关系数据。
在本申请实施例中,处理节点包括具有跨应用特性的特征处理节点,从应用的处理节点中查找具有跨应用特性的特征处理节点后,根据特征处理节点确定不同应用的处理节点之间的关联关系数据,因此,关联关系数据中包括有跨应用数据处理的数据处理路径。
步骤303,确定跨应用处理所述目标数据的数据处理路径。
在本申请实施例中,基于处理节点以及处理节点之间的关联关系数据,就可以确定跨应用处理目标数据的数据处理路径,具体实现方式可以参见前述实施例中的描述,此处不另赘述。
步骤304,根据所述数据处理路径,确定所述目标数据的目标处理节点。
在本申请实施例中,查找到数据处理路径,就可以定位到处理目标数据的每个处理节点。根据数据处理路径,从各个处理节点中确定泄露目标数据、可能泄露目标数据、或者其他特定的处理节点,记为目标处理节点,具体可以包括任意适用的处理节点,本申请实施例对此不做限制。确定目标处理节点的方法可以包括多种,例如,目标数据是通过URL的方式泄露出去的,则根据数据处理路径,从中查找到所有的数据发布节点(即URL节点),将所有的数据发布节点确定为目标处理节点,或者,根据数据处理路径,确定路径上每个处理节点对应的代码位置,对代码进行检测,确定泄露目标数据的目标处理节点,或者其他任意适用的检测方式,本申请实施例对此不做限制。
依据本申请实施例,通过接收目标数据,获取所述多个应用的处理节点以及处理节点之间的关联关系数据,确定跨应用处理所述目标数据的数据处理路径,根据所述数据处理路径,确定所述目标数据的目标处理节点,由于根据具有跨应用特性的特征处理节点可以确定不同应用的处理节点之间的关联关系数据,使得数据处理路径的分析不再局限于单个应用内,避免了跨应用的处理节点之间的关联关系的遗漏问题,从而解决了跨应用的诸如敏感信息泄露、存储型XSS(Cross Site Scripting,跨站脚本攻击)等无法精准定位的问题。
为使本领域技术人员更好地理解本申请,以下通过具体的示例对本申请的一种实现方式进行说明。
如图13所示的数据处理路径的分析过程的示意图。
步骤1:获取源文件集;
步骤2:过滤无关文件;
步骤3:URL解析;
步骤4:持久层数据解析;
步骤5:RPC解析;
步骤6:静态源码解析;
步骤7:单应用图统一处理;
步骤8:图上传与多应用图处理;并判断分析类型(业务需要),如果分析类型为在线图搜索,进入步骤9;如果为离线图分析,进入步骤10;
步骤9:在线图搜索分析;
步骤10:离线图计算分析;
步骤11:业务数据展示,即如图3所示的数据处理路径的分析产品。
参照图14,示出了根据本申请实施例四的一种数据处理路径的分析装置实施例的结构框图,具体可以包括:
节点查找模块401,用于从应用的处理节点中查找具有跨应用特性的特征处理节点;
数据确定模块402,拥有根据所述特征处理节点确定不同应用的处理节点之间的关联关系数据;
路径确定模块403,用于基于所述关联关系数据,确定跨应用数据处理的数据处理路径。
在本申请的一种实施例中,可选地,所述节点查找模块包括:
数据获取子模块,用于获取多个应用的代码数据和/或配置数据;
节点确定子模块,用于根据所述代码数据和/或配置数据,分别确定各个应用中的特征处理节点。
在本申请的一种实施例中,可选地,所述节点确定子模块包括:
信息提取单元,用于从各个应用的代码数据和/或配置数据中提取具有跨应用特性的特征处理信息;
节点生成单元,用于根据所述特征处理信息,生成特征处理节点。
在本申请的一种实施例中,可选地,所述处理节点包括静态代码节点,所述数据确定模块包括:
数据生成子模块,用于根据所述特征处理信息,生成与所述特征处理节点直接关联的静态代码节点以及对应的关联关系数据。
在本申请的一种实施例中,可选地,所述特征处理信息包括数据发布信息、数据存储信息和远程调用信息中至少一种,所述特征处理节点包括数据发布节点、或数据存储节点和远程调用节点中至少一种。
在本申请的一种实施例中,可选地,所述信息提取单元包括:
文件解析子单元,用于解析所述代码数据的配置文件,确定所述代码数据的框架类型或存储类型或远程调用类型,其中,所述框架类型包括webx 框架或spring框架,所述存储类型包括iBatis类型或MyBatis类型;
信息提取子模块,用于依据所述代码数据的框架类型或存储类型或远程调用类型,提取各种特征处理信息。
在本申请的一种实施例中,可选地,所述数据确定模块还包括:
关系数据确定子模块,用于根据所述特征处理节点直接关联的静态代码节点,确定与所述特征处理节点间接关联的静态代码节点以及对应的关联关系数据。
在本申请的一种实施例中,可选地,所述关系数据确定子模块包括:
节点汇集单元,用于汇集与所述特征处理节点直接关联的静态代码节点,得到入口静态代码节点集合;
节点查找单元,用于以所述入口静态代码节点集合中的静态代码节点为起点,查找各个应用中关联的静态代码节点,并生成静态代码节点之间的关联关系数据。
在本申请的一种实施例中,可选地,所述装置还包括:
方法节点查找模块,用于在所述以所述入口静态代码节点集合中的静态代码节点为起点,查找各个应用中关联的静态代码节点,并生成静态代码节点之间的关联关系数据之前,根据各个应用的代码数据和/或配置数据,查找方法节点。
在本申请的一种实施例中,可选地,所述节点查找单元包括:
变量判断子单元,用于判断所述方法节点中是否包含入口变量,其中,所述入口变量包括入口静态代码节点集合中的静态代码节点对应的变量;
关系数据生成子单元,用于若所述方法节点中包含所述入口变量,则将方法节点中受入口变量影响的变量确定为关联的静态代码节点,并生成静态代码节点之间的关联关系数据。
在本申请的一种实施例中,可选地,所述静态代码节点包括形式参数节点,所述节点查找单元还包括:
函数解析子单元,用于解析所述方法节点调用的方法,得到虚调用函数;
实际函数查找子单元,用于查找所述虚调用函数对应的实际调用函数;
节点创建子单元,用于根据所述实际调用函数,创建形式参数节点。
在本申请的一种实施例中,可选地,所述装置还包括:
关系数据确定模块,用于在所述根据所述实际调用函数,创建形式参数节点之后,根据所述实际调用函数的函数摘要,确定静态代码节点之间的关联关系数据。
在本申请的一种实施例中,可选地,若所述实际调用函数没有函数摘要,所述装置还包括:
摘要创建模块,用于在所述根据所述实际调用函数的函数摘要,确定静态代码节点之间的关联关系之前,创建所述实际调用函数的函数摘要。
在本申请的一种实施例中,可选地,所述装置还包括:
关系图汇集模块,用于在所述基于所述关联关系数据,确定跨应用数据处理的数据处理路径之前,汇集所述不同应用的处理节点以及处理节点之间的关联关系数据,得到跨多个应用的处理关系图。
在本申请的一种实施例中,可选地,所述关系图汇集模块包括:
关系数据汇集子模块,用于汇集所述多个应用的处理节点以及处理节点之间的关联关系数据;
节点合并子模块,用于合并跨应用的重合的处理节点,得到所述处理关系图。
在本申请的一种实施例中,可选地,所述处理节点包括远程调用节点、以及所述远程调用节点直接关联的远程调用入口节点和远程调用返回节点,所述节点合并子模块包括:
节点查找单元,用于针对各个远程调用节点,查找重合的远程调用入口节点;
标识获取单元,用于获取不同的远程调用入口节点的唯一性标识;
标记单元,用于采用所述唯一性标识,对从所述远程调用入口节点到对应的远程调用返回节点之间的处理节点和处理节点之间的关联关系数据进行标记。
在本申请的一种实施例中,可选地,所述节点查找模块包括:
节点确定子模块,用于调用各代码分析服务器,分别根据其上存储的单个应用的代码数据,分别确定特征处理节点;
所述关系图汇集模块包括:
数据上传子模块,用于将所述各代码分析服务器上的处理节点以及处理节点之间的关联关系数据上传至图数据仓库。
在本申请的一种实施例中,可选地,所述数据上传子模块包括:
上传单元,用于根据上传配置策略上传所述处理节点以及处理节点之间的关联关系数据至图数据仓库。
在本申请的一种实施例中,可选地,所述路径确定模块包括:
路径确定子模块,用于基于所述跨多个应用的处理关系图,确定数据处理路径。
在本申请的一种实施例中,可选地,所述路径确定子模块包括:
在线导入单元,用于将所述处理关系图导入在线图计算平台;
在线计算单元,用于在所述在线图计算平台上在线搜索所述数据处理路径。
在本申请的一种实施例中,可选地,所述路径确定子模块包括:
离线导入单元,用于将所述处理关系图导入离线图计算平台;
任务提交单元,用于提交针对数据处理路径的分析任务到离线图计算平台;
结果获取单元,用于获取所述离线图计算平台对数据处理路径的分析结果。
在本申请的一种实施例中,可选地,所述装置还包括:
入口节点遍历模块,用于在所述汇集所述不同应用的处理节点以及处理节点之间的关联关系数据,得到跨多个应用的处理关系图之前,针对各个应用,分别遍历所述处理节点以及处理节点之间的关联关系数据,得到各个数据处理路径的入口的入口处理节点;
标识获取模块,用于获取所述入口处理节点的唯一性标识;
标记模块,用于采用所述入口处理节点的唯一性标识,对与所述入口处理节点直接或间接关联的处理节点及其关联关系数据进行标记。
在本申请的一种实施例中,可选地,所述装置还包括:
数据合并模块,用于在所述基于所述关联关系数据,确定跨应用数据处理的数据处理路径之前,合并所述各个应用中重合的处理节点和/或关联关系数据;
和/或,节点去除模块,用于根据需要去除具有预设特征的处理节点。
在本申请的一种实施例中,可选地,所述处理节点包括数据发布节点、数据存储节点、远程调用节点、静态代码节点中至少一种,其中,所述数据发布节点包括网络地址路径和参数,所述数据存储节点包括数据表标识和字段标识,所述远程调用节点包括远程调用标识和参数,所述静态代码节点包括静态代码包名、静态代码类名、静态代码方法名、静态代码参数。
在本申请的一种实施例中,可选地,所述数据获取子模块包括:
获取策略确定单元,用于根据所述代码数据和/或配置数据的资源类型,确定所述代码数据和/或配置数据的获取策略;
数据获取单元,用于根据所述获取策略,获取所述多个应用的代码数据和/或配置数据。
在本申请的一种实施例中,可选地,所述装置还包括:
无关数据删除模块,用于在所述根据所述代码数据和/或配置数据,分别确定各个应用中的特征处理节点之前,删除与所述数据处理路径无关的代码数据和/或配置数据。
依据本申请实施例,通过从应用的处理节点中查找具有跨应用特性的特征处理节点,根据特征处理节点确定不同应用的处理节点之间的关联关系数据,基于关联关系数据,确定跨应用数据处理的数据处理路径,使得数据处理路径的分析不再局限于单个应用内,避免了跨应用的处理节点之间的关联关系的遗漏问题,从而解决了跨应用的诸如敏感信息泄露、存储型XSS(Cross Site Scripting,跨站脚本攻击)等无法精准定位的问题。
参照图15,示出了根据本申请实施例五的一种数据处理装置实施例的结构框图,具体可以包括:
数据接收模块501,用于接收目标数据,其中,所述目标数据对应于多个应用;
数据获取模块502,用于获取所述多个应用的处理节点以及处理节点之间的关联关系数据,其中,所述处理节点包括具有跨应用特性的特征处理节点;
路径确定模块503,用于确定跨应用处理所述目标数据的数据处理路径;
节点确定模块504,用于根据所述数据处理路径,确定所述目标数据的目标处理节点。
依据本申请实施例,通过接收目标数据,获取所述多个应用的处理节点以及处理节点之间的关联关系数据,确定跨应用处理所述目标数据的数据处理路径,根据所述数据处理路径,确定所述目标数据的目标处理节点,由于根据具有跨应用特性的特征处理节点可以确定不同应用的处理节点之间的关联关系数据,使得数据处理路径的分析不再局限于单个应用内,避免了跨应用的处理节点之间的关联关系的遗漏问题,从而解决了跨应用的诸如敏感信息泄露、存储型XSS(Cross Site Scripting,跨站脚本攻击)等无法精准定位的问题。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本公开的实施例可被实现为使用任意适当的硬件,固件,软件,或及其任意组合进行想要的配置的系统。图16示意性地示出了可被用于实现本公开中所述的各个实施例的示例性系统(或装置)600。
对于一个实施例,图16示出了示例性系统600,该系统具有一个或多个处理器602、被耦合到(一个或多个)处理器602中的至少一个的系统控制模块(芯片组)604、被耦合到系统控制模块604的系统存储器606、被耦合到系统控制模块604的非易失性存储器(NVM)/存储设备608、被耦合到系统控制模块604的一个或多个输入/输出设备610,以及被耦合到系统控制模块604 的网络接口612。
处理器602可包括一个或多个单核或多核处理器,处理器602可包括通用处理器或专用处理器(例如图形处理器、应用处理器、基频处理器等)的任意组合。在一些实施例中,系统600能够作为本申请实施例中所述的浏览器。
在一些实施例中,系统600可包括具有指令的一个或多个计算机可读介质(例如,系统存储器606或NVM/存储设备608)以及与该一个或多个计算机可读介质相合并被配置为执行指令以实现模块从而执行本公开中所述的动作的一个或多个处理器602。
对于一个实施例,系统控制模块604可包括任意适当的接口控制器,以向(一个或多个)处理器602中的至少一个和/或与系统控制模块604通信的任意适当的设备或组件提供任意适当的接口。
系统控制模块604可包括存储器控制器模块,以向系统存储器606提供接口。存储器控制器模块可以是硬件模块、软件模块和/或固件模块。
系统存储器606可被用于例如为系统600加载和存储数据和/或指令。对于一个实施例,系统存储器606可包括任意适当的易失性存储器,例如,适当的DRAM。在一些实施例中,系统存储器606可包括双倍数据速率类型四同步动态随机存取存储器(DDR4SDRAM)。
对于一个实施例,系统控制模块604可包括一个或多个输入/输出控制器,以向NVM/存储设备608及(一个或多个)输入/输出设备610提供接口。
例如,NVM/存储设备608可被用于存储数据和/或指令。NVM/存储设备608可包括任意适当的非易失性存储器(例如,闪存)和/或可包括任意适当的(一个或多个)非易失性存储设备(例如,一个或多个硬盘驱动器(HDD)、一个或多个光盘(CD)驱动器和/或一个或多个数字通用光盘(DVD)驱动器)。
NVM/存储设备608可包括在物理上作为系统600被安装在其上的设备的一部分的存储资源,或者其可被该设备访问而不必作为该设备的一部分。例如,NVM/存储设备608可通过网络经由(一个或多个)输入/输出设备610 进行访问。
(一个或多个)输入/输出设备610可为系统600提供接口以与任意其他适当的设备通信,输入/输出设备610可以包括通信组件、音频组件、传感器组件等。网络接口612可为系统600提供接口以通过一个或多个网络通信,系统600可根据一个或多个无线网络标准和/或协议中的任意标准和/或协议来与无线网络的一个或多个组件进行无线通信,例如接入基于通信标准的无线网络,如WiFi,2G或3G,或它们的组合进行无线通信。
对于一个实施例,(一个或多个)处理器602中的至少一个可与系统控制模块604的一个或多个控制器(例如,存储器控制器模块)的逻辑封装在一起。对于一个实施例,(一个或多个)处理器602中的至少一个可与系统控制模块 604的一个或多个控制器的逻辑封装在一起以形成系统级封装(SiP)。对于一个实施例,(一个或多个)处理器602中的至少一个可与系统控制模块604 的一个或多个控制器的逻辑集成在同一模具上。对于一个实施例,(一个或多个)处理器602中的至少一个可与系统控制模块604的一个或多个控制器的逻辑集成在同一模具上以形成片上系统(SoC)。
在各个实施例中,系统600可以但不限于是:浏览器、工作站、台式计算设备或移动计算设备(例如,膝上型计算设备、手持计算设备、平板电脑、上网本等)。在各个实施例中,系统600可具有更多或更少的组件和/或不同的架构。例如,在一些实施例中,系统600包括一个或多个摄像机、键盘、液晶显示器(LCD)屏幕(包括触屏显示器)、非易失性存储器端口、多个天线、图形芯片、专用集成电路(ASIC)和扬声器。
其中,如果显示器包括触摸面板,显示屏可以被实现为触屏显示器,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。
本申请实施例还提供了一种非易失性可读存储介质,该存储介质中存储有一个或多个模块(programs),该一个或多个模块被应用在终端设备时,可以使得该终端设备执行本申请实施例中各方法步骤的指令(instructions)。
在一个示例中提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如本申请实施例的方法。
在一个示例中还提供了一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如本申请实施例的一个或多个的方法。
本申请实施例公开了一种数据处理路径的分析方法和装置,示例1包一种数据处理路径的分析方法,包括:
从应用的处理节点中查找具有跨应用特性的特征处理节点;
根据所述特征处理节点确定不同应用的处理节点之间的关联关系数据;
基于所述关联关系数据,确定跨应用数据处理的数据处理路径。
示例2可包括示例1所述的方法,其中,所述从应用的处理节点中查找具有跨应用特性的特征处理节点包括:
获取多个应用的代码数据和/或配置数据;
根据所述代码数据和/或配置数据,分别确定各个应用中的特征处理节点。
示例3可包括示例1和/或示例2所述的方法,其中,所述根据所述代码数据和/或配置数据,分别确定各个应用中的特征处理节点包括:
从各个应用的代码数据和/或配置数据中提取具有跨应用特性的特征处理信息;
根据所述特征处理信息,生成特征处理节点。
示例4可包括示例1-示例3一个或多个所述的方法,其中,所述处理节点包括静态代码节点,所述根据所述特征处理节点确定不同应用的处理节点之间的关联关系数据包括:
根据所述特征处理信息,生成与所述特征处理节点直接关联的静态代码节点以及对应的关联关系数据。
示例5可包括示例1-示例4一个或多个所述的方法,其中,所述特征处理信息包括数据发布信息、数据存储信息和远程调用信息中至少一种,所述特征处理节点包括数据发布节点、或数据存储节点和远程调用节点中至少一种。
示例6可包括示例1-示例5一个或多个所述的方法,其中,所述从各个应用的代码数据中提取具有跨应用特性的特征处理信息包括:
解析所述代码数据的配置文件,确定所述代码数据的框架类型或存储类型或远程调用类型,其中,所述框架类型包括webx框架或spring框架,所述存储类型包括iBatis类型或MyBatis类型;
依据所述代码数据的框架类型或存储类型或远程调用类型,提取各种特征处理信息。
示例7可包括示例1-示例6一个或多个所述的方法,其中,所述根据所述特征处理节点确定不同应用的处理节点之间的关联关系数据还包括:
根据所述特征处理节点直接关联的静态代码节点,确定与所述特征处理节点间接关联的静态代码节点以及对应的关联关系数据。
示例8可包括示例1-示例7一个或多个所述的方法,其中,所述根据所述特征处理节点直接关联的静态代码节点,确定与所述特征处理节点间接关联的静态代码节点以及对应的关联关系数据包括:
汇集与所述特征处理节点直接关联的静态代码节点,得到入口静态代码节点集合;
以所述入口静态代码节点集合中的静态代码节点为起点,查找各个应用中关联的静态代码节点,并生成静态代码节点之间的关联关系数据。
示例9可包括示例1-示例8一个或多个所述的方法,其中,在所述以所述入口静态代码节点集合中的静态代码节点为起点,查找各个应用中关联的静态代码节点,并生成静态代码节点之间的关联关系数据之前,所述方法还包括:
根据各个应用的代码数据和/或配置数据,查找方法节点。
示例10可包括示例1-示例9一个或多个所述的方法,其中,所述以所述入口静态代码节点集合中的静态代码节点为起点,查找所述各个应用中关联的静态代码节点,并生成静态代码节点之间的关联关系数据包括:
判断所述方法节点中是否包含入口变量,其中,所述入口变量包括入口静态代码节点集合中的静态代码节点对应的变量;
若所述方法节点中包含所述入口变量,则将方法节点中受入口变量影响的变量确定为关联的静态代码节点,并生成静态代码节点之间的关联关系数据。
示例11可包括示例1-示例10一个或多个所述的方法,其中,所述静态代码节点包括形式参数节点,所述以所述入口静态代码节点集合中的静态代码节点为起点,查找各个应用中关联的静态代码节点,并生成静态代码节点之间的关联关系数据还包括:
解析所述方法节点调用的方法,得到虚调用函数;
查找所述虚调用函数对应的实际调用函数;
根据所述实际调用函数,创建形式参数节点。
示例12可包括示例1-示例11一个或多个所述的方法,其中,在所述根据所述实际调用函数,创建形式参数节点之后,所述方法还包括:
根据所述实际调用函数的函数摘要,确定静态代码节点之间的关联关系数据。
示例13可包括示例1-示例12一个或多个所述的方法,其中,若所述实际调用函数没有函数摘要,在所述根据所述实际调用函数的函数摘要,确定静态代码节点之间的关联关系之前,所述方法还包括:
创建所述实际调用函数的函数摘要。
示例14可包括示例1-示例13一个或多个所述的方法,其中,在所述基于所述关联关系数据,确定跨应用数据处理的数据处理路径之前,所述方法还包括:
汇集所述不同应用的处理节点以及处理节点之间的关联关系数据,得到跨多个应用的处理关系图。
示例15可包括示例1-示例14一个或多个所述的方法,其中,所述汇集所述不同应用的处理节点以及处理节点之间的关联关系数据,得到跨多个应用的处理关系图包括:
汇集所述多个应用的处理节点以及处理节点之间的关联关系数据;
合并跨应用的重合的处理节点,得到所述处理关系图。
示例16可包括示例1-示例15一个或多个所述的方法,其中,所述处理节点包括远程调用节点、以及所述远程调用节点直接关联的远程调用入口节点和远程调用返回节点,所述合并跨应用的重合的处理节点,得到所述处理关系图包括:
针对各个远程调用节点,查找重合的远程调用入口节点;
获取不同的远程调用入口节点的唯一性标识;
采用所述唯一性标识,对从所述远程调用入口节点到对应的远程调用返回节点之间的处理节点和处理节点之间的关联关系数据进行标记。
示例17可包括示例1-示例16一个或多个所述的方法,其中,所述从应用的处理节点中查找具有跨应用特性的特征处理节点包括:
调用各代码分析服务器,分别根据其上存储的单个应用的代码数据,分别确定特征处理节点;
所述汇集所述多个应用的处理节点以及处理节点之间的关联关系数据,包括:
将所述各代码分析服务器上的处理节点以及处理节点之间的关联关系数据上传至图数据仓库。
示例18可包括示例1-示例17一个或多个所述的方法,其中,所述将所述各代码分析服务器上的处理节点以及处理节点之间的关联关系数据上传至图数据仓库包括:
根据上传配置策略上传所述处理节点以及处理节点之间的关联关系数据至图数据仓库。
示例19可包括示例1-示例18一个或多个所述的方法,其中,所述基于所述关联关系数据,确定跨应用数据处理的数据处理路径包括:
基于所述跨多个应用的处理关系图,确定数据处理路径。
示例20可包括示例1-示例19一个或多个所述的方法,其中,所述基于所述跨多个应用的处理关系图,确定数据处理路径包括:
将所述处理关系图导入在线图计算平台;
在所述在线图计算平台上在线搜索所述数据处理路径。
示例21可包括示例1-示例20一个或多个所述的方法,其中,所述基于所述跨多个应用的处理关系图,确定数据处理路径包括:
将所述处理关系图导入离线图计算平台;
提交针对数据处理路径的分析任务到离线图计算平台;
获取所述离线图计算平台对数据处理路径的分析结果。
示例22可包括示例1-示例21一个或多个所述的方法,其中,在所述汇集所述不同应用的处理节点以及处理节点之间的关联关系数据,得到跨多个应用的处理关系图之前,所述方法还包括:
针对各个应用,分别遍历所述处理节点以及处理节点之间的关联关系数据,得到各个数据处理路径的入口的入口处理节点;
获取所述入口处理节点的唯一性标识;
采用所述入口处理节点的唯一性标识,对与所述入口处理节点直接或间接关联的处理节点及其关联关系数据进行标记。
示例23可包括示例1-示例22一个或多个所述的方法,其中,在所述基于所述关联关系数据,确定跨应用数据处理的数据处理路径之前,所述方法还包括:
合并所述各个应用中重合的处理节点和/或关联关系数据;
和/或,根据需要去除具有预设特征的处理节点。
示例24可包括示例1-示例23一个或多个所述的方法,其中,所述处理节点包括数据发布节点、数据存储节点、远程调用节点、静态代码节点中至少一种,其中,所述数据发布节点包括网络地址路径和参数,所述数据存储节点包括数据表标识和字段标识,所述远程调用节点包括远程调用标识和参数,所述静态代码节点包括静态代码包名、静态代码类名、静态代码方法名、静态代码参数。
示例25可包括示例1-示例24一个或多个所述的方法,其中,所述获取多个应用的代码数据和/或配置数据包括:
根据所述代码数据和/或配置数据的资源类型,确定所述代码数据和/或配置数据的获取策略;
根据所述获取策略,获取所述多个应用的代码数据和/或配置数据。
示例26可包括示例1-示例25一个或多个所述的方法,其中,在所述根据所述代码数据和/或配置数据,分别确定各个应用中的特征处理节点之前,所述方法还包括:
删除与所述数据处理路径无关的代码数据和/或配置数据。
示例27包括一种数据泄露检测方法,包括:
接收目标数据,其中,所述目标数据对应于多个应用;
获取所述多个应用的处理节点以及处理节点之间的关联关系数据,其中,所述处理节点包括具有跨应用特性的特征处理节点;
确定跨应用处理所述目标数据的数据处理路径;
根据所述数据处理路径,确定所述目标数据的目标处理节点。
示例28包括一种数据处理路径的方法装置,包括:
节点查找模块,用于从应用的处理节点中查找具有跨应用特性的特征处理节点;
数据确定模块,拥有根据所述特征处理节点确定不同应用的处理节点之间的关联关系数据;
路径确定模块,用于基于所述关联关系数据,确定跨应用数据处理的数据处理路径。
示例29可包括示例28所述的装置,其中,所述节点查找模块包括:
数据获取子模块,用于获取多个应用的代码数据和/或配置数据;
节点确定子模块,用于根据所述代码数据和/或配置数据,分别确定各个应用中的特征处理节点。
示例30可包括示例28和/或示例29所述的装置,其中,所述节点确定子模块包括:
信息提取单元,用于从各个应用的代码数据和/或配置数据中提取具有跨应用特性的特征处理信息;
节点生成单元,用于根据所述特征处理信息,生成特征处理节点。
示例31可包括示例28-示例30一个或多个所述的装置,其中,所述处理节点包括静态代码节点,所述数据确定模块包括:
数据生成子模块,用于根据所述特征处理信息,生成与所述特征处理节点直接关联的静态代码节点以及对应的关联关系数据。
示例32可包括示例28-示例31一个或多个所述的装置,其中,所述特征处理信息包括数据发布信息、数据存储信息和远程调用信息中至少一种,所述特征处理节点包括数据发布节点、或数据存储节点和远程调用节点中至少一种。
示例33可包括示例28-示例32一个或多个所述的装置,其中,所述信息提取单元包括:
文件解析子单元,用于解析所述代码数据的配置文件,确定所述代码数据的框架类型或存储类型或远程调用类型,其中,所述框架类型包括webx 框架或spring框架,所述存储类型包括iBatis类型或MyBatis类型;
信息提取子模块,用于依据所述代码数据的框架类型或存储类型或远程调用类型,提取各种特征处理信息。
示例34可包括示例28-示例33一个或多个所述的装置,其中,所述数据确定模块还包括:
关系数据确定子模块,用于根据所述特征处理节点直接关联的静态代码节点,确定与所述特征处理节点间接关联的静态代码节点以及对应的关联关系数据。
示例35可包括示例28-示例34一个或多个所述的装置,其中,所述关系数据确定子模块包括:
节点汇集单元,用于汇集与所述特征处理节点直接关联的静态代码节点,得到入口静态代码节点集合;
节点查找单元,用于以所述入口静态代码节点集合中的静态代码节点为起点,查找各个应用中关联的静态代码节点,并生成静态代码节点之间的关联关系数据。
示例36可包括示例28-示例35一个或多个所述的装置,其中,所述装置还包括:
方法节点查找模块,用于在所述以所述入口静态代码节点集合中的静态代码节点为起点,查找各个应用中关联的静态代码节点,并生成静态代码节点之间的关联关系数据之前,根据各个应用的代码数据和/或配置数据,查找方法节点。
示例37可包括示例28-示例36一个或多个所述的装置,其中,所述节点查找单元包括:
变量判断子单元,用于判断所述方法节点中是否包含入口变量,其中,所述入口变量包括入口静态代码节点集合中的静态代码节点对应的变量;
关系数据生成子单元,用于若所述方法节点中包含所述入口变量,则将方法节点中受入口变量影响的变量确定为关联的静态代码节点,并生成静态代码节点之间的关联关系数据。
示例38可包括示例28-示例37一个或多个所述的装置,其中,所述静态代码节点包括形式参数节点,所述节点查找单元还包括:
函数解析子单元,用于解析所述方法节点调用的方法,得到虚调用函数;
实际函数查找子单元,用于查找所述虚调用函数对应的实际调用函数;
节点创建子单元,用于根据所述实际调用函数,创建形式参数节点。
示例39可包括示例28-示例38一个或多个所述的装置,其中,所述装置还包括:
关系数据确定模块,用于在所述根据所述实际调用函数,创建形式参数节点之后,根据所述实际调用函数的函数摘要,确定静态代码节点之间的关联关系数据。
示例40可包括示例28-示例39一个或多个所述的装置,其中,若所述实际调用函数没有函数摘要,所述装置还包括:
摘要创建模块,用于在所述根据所述实际调用函数的函数摘要,确定静态代码节点之间的关联关系之前,创建所述实际调用函数的函数摘要。
示例41可包括示例28-示例40一个或多个所述的装置,其中,所述装置还包括:
关系图汇集模块,用于在所述基于所述关联关系数据,确定跨应用数据处理的数据处理路径之前,汇集所述不同应用的处理节点以及处理节点之间的关联关系数据,得到跨多个应用的处理关系图。
示例42可包括示例28-示例41一个或多个所述的装置,其中,所述关系图汇集模块包括:
关系数据汇集子模块,用于汇集所述多个应用的处理节点以及处理节点之间的关联关系数据;
节点合并子模块,用于合并跨应用的重合的处理节点,得到所述处理关系图。
示例43可包括示例28-示例42一个或多个所述的装置,其中,所述处理节点包括远程调用节点、以及所述远程调用节点直接关联的远程调用入口节点和远程调用返回节点,所述节点合并子模块包括:
节点查找单元,用于针对各个远程调用节点,查找重合的远程调用入口节点;
标识获取单元,用于获取不同的远程调用入口节点的唯一性标识;
标记单元,用于采用所述唯一性标识,对从所述远程调用入口节点到对应的远程调用返回节点之间的处理节点和处理节点之间的关联关系数据进行标记。
示例44可包括示例28-示例43一个或多个所述的装置,其中,所述节点查找模块包括:
节点确定子模块,用于调用各代码分析服务器,分别根据其上存储的单个应用的代码数据,分别确定特征处理节点;
所述关系图汇集模块包括:
数据上传子模块,用于将所述各代码分析服务器上的处理节点以及处理节点之间的关联关系数据上传至图数据仓库。
示例45可包括示例28-示例44一个或多个所述的装置,其中,所述数据上传子模块包括:
上传单元,用于根据上传配置策略上传所述处理节点以及处理节点之间的关联关系数据至图数据仓库。
示例46可包括示例28-示例45一个或多个所述的装置,其中,所述路径确定模块包括:
路径确定子模块,用于基于所述跨多个应用的处理关系图,确定数据处理路径。
示例47可包括示例28-示例46一个或多个所述的装置,其中,所述路径确定子模块包括:
在线导入单元,用于将所述处理关系图导入在线图计算平台;
在线计算单元,用于在所述在线图计算平台上在线搜索所述数据处理路径。
示例48可包括示例28-示例47一个或多个所述的装置,其中,所述路径确定子模块包括:
离线导入单元,用于将所述处理关系图导入离线图计算平台;
任务提交单元,用于提交针对数据处理路径的分析任务到离线图计算平台;
结果获取单元,用于获取所述离线图计算平台对数据处理路径的分析结果。
示例49可包括示例28-示例48一个或多个所述的装置,其中,所述装置还包括:
入口节点遍历模块,用于在所述汇集所述不同应用的处理节点以及处理节点之间的关联关系数据,得到跨多个应用的处理关系图之前,针对各个应用,分别遍历所述处理节点以及处理节点之间的关联关系数据,得到各个数据处理路径的入口的入口处理节点;
标识获取模块,用于获取所述入口处理节点的唯一性标识;
标记模块,用于采用所述入口处理节点的唯一性标识,对与所述入口处理节点直接或间接关联的处理节点及其关联关系数据进行标记。
示例50可包括示例28-示例49一个或多个所述的装置,其中,所述装置还包括:
数据合并模块,用于在所述基于所述关联关系数据,确定跨应用数据处理的数据处理路径之前,合并所述各个应用中重合的处理节点和/或关联关系数据;
和/或,节点去除模块,用于根据需要去除具有预设特征的处理节点。
示例51可包括示例28-示例50一个或多个所述的装置,其中,所述处理节点包括数据发布节点、数据存储节点、远程调用节点、静态代码节点中至少一种,其中,所述数据发布节点包括网络地址路径和参数,所述数据存储节点包括数据表标识和字段标识,所述远程调用节点包括远程调用标识和参数,所述静态代码节点包括静态代码包名、静态代码类名、静态代码方法名、静态代码参数。
示例52可包括示例28-示例51一个或多个所述的装置,其中,所述数据获取子模块包括:
获取策略确定单元,用于根据所述代码数据和/或配置数据的资源类型,确定所述代码数据和/或配置数据的获取策略;
数据获取单元,用于根据所述获取策略,获取所述多个应用的代码数据和/或配置数据。
示例53可包括示例28-示例52一个或多个所述的装置,其中,所述装置还包括:
无关数据删除模块,用于在所述根据所述代码数据和/或配置数据,分别确定各个应用中的特征处理节点之前,删除与所述数据处理路径无关的代码数据和/或配置数据。
示例54包括一种数据处理装置,包括:
数据接收模块,用于接收目标数据,其中,所述目标数据对应于多个应用;
数据获取模块,用于获取所述多个应用的处理节点以及处理节点之间的关联关系数据,其中,所述处理节点包括具有跨应用特性的特征处理节点;
路径确定模块,用于确定跨应用处理所述目标数据的数据处理路径;
节点确定模块,用于根据所述数据处理路径,确定所述目标数据的目标处理节点。
示例55包括一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如示例1-27一个或多个的方法。
示例56包括一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如示例1-27一个或多个的方法。
虽然某些实施例是以说明和描述为目的的,各种各样的替代、和/或、等效的实施方案、或计算来达到同样的目的实施例示出和描述的实现,不脱离本申请的实施范围。本申请旨在覆盖本文讨论的实施例的任何修改或变化。因此,显然本文描述的实施例仅由权利要求和它们的等同物来限定。
Claims (29)
1.一种数据处理路径的分析方法,其特征在于,包括:
从应用的处理节点中查找具有跨应用特性的特征处理节点;所述特征处理节点、所述特征处理节点连接的至少一个处理节点属于不同应用;
根据所述特征处理节点确定不同应用的处理节点之间的关联关系数据;所述关联关系数据用于记录所述处理节点之间的关联关系;
基于所述关联关系数据,确定跨应用数据处理的数据处理路径。
2.根据权利要求1所述的方法,其特征在于,所述从应用的处理节点中查找具有跨应用特性的特征处理节点包括:
获取多个应用的代码数据和/或配置数据;
根据所述代码数据和/或配置数据,分别确定各个应用中的特征处理节点。
3.根据权利要求2所述的方法,其特征在于,所述根据所述代码数据和/或配置数据,分别确定各个应用中的特征处理节点包括:
从各个应用的代码数据和/或配置数据中提取具有跨应用特性的特征处理信息;
根据所述特征处理信息,生成特征处理节点。
4.根据权利要求3所述的方法,其特征在于,所述处理节点包括静态代码节点,所述根据所述特征处理节点确定不同应用的处理节点之间的关联关系数据包括:
根据所述特征处理信息,生成与所述特征处理节点直接关联的静态代码节点以及对应的关联关系数据。
5.根据权利要求3或4所述的方法,其特征在于,所述特征处理信息包括数据发布信息、数据存储信息和远程调用信息中至少一种,所述特征处理节点包括数据发布节点、或数据存储节点和远程调用节点中至少一种。
6.根据权利要求5所述的方法,其特征在于,所述从各个应用的代码数据中提取具有跨应用特性的特征处理信息包括:
解析所述代码数据的配置文件,确定所述代码数据的框架类型或存储类型或远程调用类型,其中,所述框架类型包括webx框架或spring框架,所述存储类型包括iBatis类型或MyBatis类型;
依据所述代码数据的框架类型或存储类型或远程调用类型,提取各种特征处理信息。
7.根据权利要求4所述的方法,其特征在于,所述根据所述特征处理节点确定不同应用的处理节点之间的关联关系数据还包括:
根据所述特征处理节点直接关联的静态代码节点,确定与所述特征处理节点间接关联的静态代码节点以及对应的关联关系数据。
8.根据权利要求7所述的方法,其特征在于,所述根据所述特征处理节点直接关联的静态代码节点,确定与所述特征处理节点间接关联的静态代码节点以及对应的关联关系数据包括:
汇集与所述特征处理节点直接关联的静态代码节点,得到入口静态代码节点集合;
以所述入口静态代码节点集合中的静态代码节点为起点,查找各个应用中关联的静态代码节点,并生成静态代码节点之间的关联关系数据。
9.根据权利要求8所述的方法,其特征在于,在所述以所述入口静态代码节点集合中的静态代码节点为起点,查找各个应用中关联的静态代码节点,并生成静态代码节点之间的关联关系数据之前,所述方法还包括:
根据各个应用的代码数据和/或配置数据,查找方法节点。
10.根据权利要求9所述的方法,其特征在于,所述以所述入口静态代码节点集合中的静态代码节点为起点,查找所述各个应用中关联的静态代码节点,并生成静态代码节点之间的关联关系数据包括:
判断所述方法节点中是否包含入口变量,其中,所述入口变量包括入口静态代码节点集合中的静态代码节点对应的变量;
若所述方法节点中包含所述入口变量,则将方法节点中受入口变量影响的变量确定为关联的静态代码节点,并生成静态代码节点之间的关联关系数据。
11.根据权利要求10所述的方法,其特征在于,所述静态代码节点包括形式参数节点,所述以所述入口静态代码节点集合中的静态代码节点为起点,查找各个应用中关联的静态代码节点,并生成静态代码节点之间的关联关系数据还包括:
解析所述方法节点调用的方法,得到虚调用函数;
查找所述虚调用函数对应的实际调用函数;
根据所述实际调用函数,创建形式参数节点。
12.根据权利要求11所述的方法,其特征在于,在所述根据所述实际调用函数,创建形式参数节点之后,所述方法还包括:
根据所述实际调用函数的函数摘要,确定静态代码节点之间的关联关系数据。
13.根据权利要求12所述的方法,其特征在于,若所述实际调用函数没有函数摘要,在所述根据所述实际调用函数的函数摘要,确定静态代码节点之间的关联关系之前,所述方法还包括:
创建所述实际调用函数的函数摘要。
14.根据权利要求1所述的方法,其特征在于,在所述基于所述关联关系数据,确定跨应用数据处理的数据处理路径之前,所述方法还包括:
汇集所述不同应用的处理节点以及处理节点之间的关联关系数据,得到跨多个应用的处理关系图。
15.根据权利要求14所述的方法,其特征在于,所述汇集所述不同应用的处理节点以及处理节点之间的关联关系数据,得到跨多个应用的处理关系图包括:
汇集所述多个应用的处理节点以及处理节点之间的关联关系数据;
合并跨应用的重合的处理节点,得到所述处理关系图。
16.根据权利要求15所述的方法,其特征在于,所述处理节点包括远程调用节点、以及所述远程调用节点直接关联的远程调用入口节点和远程调用返回节点,所述合并跨应用的重合的处理节点,得到所述处理关系图包括:
针对各个远程调用节点,查找重合的远程调用入口节点;
获取不同的远程调用入口节点的唯一性标识;
采用所述唯一性标识,对从所述远程调用入口节点到对应的远程调用返回节点之间的处理节点和处理节点之间的关联关系数据进行标记。
17.根据权利要求14所述的方法,其特征在于,所述从应用的处理节点中查找具有跨应用特性的特征处理节点包括:
调用各代码分析服务器,分别根据其上存储的单个应用的代码数据,分别确定特征处理节点;
所述汇集所述多个应用的处理节点以及处理节点之间的关联关系数据,包括:
将所述各代码分析服务器上的处理节点以及处理节点之间的关联关系数据上传至图数据仓库。
18.根据权利要求17所述的方法,其特征在于,所述将所述各代码分析服务器上的处理节点以及处理节点之间的关联关系数据上传至图数据仓库包括:
根据上传配置策略上传所述处理节点以及处理节点之间的关联关系数据至图数据仓库。
19.根据权利要求14所述的方法,其特征在于,所述基于所述关联关系数据,确定跨应用数据处理的数据处理路径包括:
基于所述跨多个应用的处理关系图,确定数据处理路径。
20.根据权利要求19所述的方法,其特征在于,所述基于所述跨多个应用的处理关系图,确定数据处理路径包括:
将所述处理关系图导入在线图计算平台;
在所述在线图计算平台上在线搜索所述数据处理路径。
21.根据权利要求19所述的方法,其特征在于,所述基于所述跨多个应用的处理关系图,确定数据处理路径包括:
将所述处理关系图导入离线图计算平台;
提交针对数据处理路径的分析任务到离线图计算平台;
获取所述离线图计算平台对数据处理路径的分析结果。
22.根据权利要求14所述的方法,其特征在于,在所述汇集所述不同应用的处理节点以及处理节点之间的关联关系数据,得到跨多个应用的处理关系图之前,所述方法还包括:
针对各个应用,分别遍历所述处理节点以及处理节点之间的关联关系数据,得到各个数据处理路径的入口的入口处理节点;
获取所述入口处理节点的唯一性标识;
采用所述入口处理节点的唯一性标识,对与所述入口处理节点直接或间接关联的处理节点及其关联关系数据进行标记。
23.根据权利要求1所述的方法,其特征在于,在所述基于所述关联关系数据,确定跨应用数据处理的数据处理路径之前,所述方法还包括:
合并所述各个应用中重合的处理节点和/或关联关系数据;
和/或,根据需要去除具有预设特征的处理节点。
24.根据权利要求1所述的方法,其特征在于,所述处理节点包括数据发布节点、数据存储节点、远程调用节点、静态代码节点中至少一种,其中,所述数据发布节点包括网络地址路径和参数,所述数据存储节点包括数据表标识和字段标识,所述远程调用节点包括远程调用标识和参数,所述静态代码节点包括静态代码包名、静态代码类名、静态代码方法名、静态代码参数。
25.根据权利要求2所述的方法,其特征在于,所述获取多个应用的代码数据和/或配置数据包括:
根据所述代码数据和/或配置数据的资源类型,确定所述代码数据和/或配置数据的获取策略;
根据所述获取策略,获取所述多个应用的代码数据和/或配置数据。
26.根据权利要求2所述的方法,其特征在于,在所述根据所述代码数据和/或配置数据,分别确定各个应用中的特征处理节点之前,所述方法还包括:
删除与所述数据处理路径无关的代码数据和/或配置数据。
27.一种数据处理方法,其特征在于,包括:
接收目标数据,其中,所述目标数据对应于多个应用;
获取所述多个应用的处理节点以及处理节点之间的关联关系数据,其中,所述处理节点包括具有跨应用特性的特征处理节点;所述特征处理节点、所述特征处理节点连接的至少一个处理节点属于不同应用;所述关联关系数据用于记录所述处理节点之间的关联关系;
确定跨应用处理所述目标数据的数据处理路径;
根据所述数据处理路径,确定所述目标数据的目标处理节点。
28.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1-27任一项的方法。
29.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-27任一项的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810903153.5A CN110826057B (zh) | 2018-08-09 | 2018-08-09 | 数据处理路径的分析方法、计算机设备、存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810903153.5A CN110826057B (zh) | 2018-08-09 | 2018-08-09 | 数据处理路径的分析方法、计算机设备、存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110826057A CN110826057A (zh) | 2020-02-21 |
CN110826057B true CN110826057B (zh) | 2023-06-02 |
Family
ID=69540915
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810903153.5A Active CN110826057B (zh) | 2018-08-09 | 2018-08-09 | 数据处理路径的分析方法、计算机设备、存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110826057B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111359210B (zh) * | 2020-03-05 | 2023-03-24 | 深圳市腾讯计算机系统有限公司 | 一种数据处理方法、装置、电子设备以及存储介质 |
CN111949269B (zh) * | 2020-07-14 | 2021-06-11 | 华中科技大学 | 一种COStream语法分析过程中符号表和静态数据流图生成方法 |
CN113407515A (zh) * | 2020-12-04 | 2021-09-17 | 高慧军 | 应用于人工智能的大数据维护方法及大数据服务器 |
CN117675593B (zh) * | 2023-12-05 | 2024-10-01 | 北京安普诺信息技术有限公司 | 基于代码疫苗iast探针的应用拓扑构建方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102999420A (zh) * | 2011-09-13 | 2013-03-27 | 阿里巴巴集团控股有限公司 | 基于dom的跨站脚本漏洞测试方法和系统 |
CN106302303A (zh) * | 2015-05-11 | 2017-01-04 | 林友哲 | 一种用于跨应用用户信息传递的登陆协议运行方法 |
CN107301090A (zh) * | 2016-04-14 | 2017-10-27 | 华为技术有限公司 | 在存储服务器中为应用设置数据处理路径的方法及装置 |
CN107483221A (zh) * | 2016-06-08 | 2017-12-15 | 阿里巴巴集团控股有限公司 | 一种跨应用问题排查方法、装置及系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10120997B2 (en) * | 2015-01-01 | 2018-11-06 | Checkmarx Ltd. | Code instrumentation for runtime application self-protection |
-
2018
- 2018-08-09 CN CN201810903153.5A patent/CN110826057B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102999420A (zh) * | 2011-09-13 | 2013-03-27 | 阿里巴巴集团控股有限公司 | 基于dom的跨站脚本漏洞测试方法和系统 |
CN106302303A (zh) * | 2015-05-11 | 2017-01-04 | 林友哲 | 一种用于跨应用用户信息传递的登陆协议运行方法 |
CN107301090A (zh) * | 2016-04-14 | 2017-10-27 | 华为技术有限公司 | 在存储服务器中为应用设置数据处理路径的方法及装置 |
CN107483221A (zh) * | 2016-06-08 | 2017-12-15 | 阿里巴巴集团控股有限公司 | 一种跨应用问题排查方法、装置及系统 |
Non-Patent Citations (2)
Title |
---|
张飞 ; 朱志祥 ; 王雄 ; .论XSS攻击方式和防范措施.西安文理学院学报(自然科学版).2013,(第04期),第59-63页. * |
李洁 ; 俞研 ; 吴家顺 ; .基于动态污点分析的DOM XSS漏洞检测算法.计算机应用.2016,(第05期),第74-77页. * |
Also Published As
Publication number | Publication date |
---|---|
CN110826057A (zh) | 2020-02-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110826057B (zh) | 数据处理路径的分析方法、计算机设备、存储介质 | |
US10824404B2 (en) | Methods and systems for uploading a program based on a target network platform | |
CN109564540B (zh) | 用于jit编译器的调试的系统、方法和设备 | |
JP2019053729A (ja) | スマートコントラクトのテスト方法及びテスト装置 | |
CN105718354A (zh) | 一种故障信息的重现方法和重现装置 | |
US9588872B2 (en) | Discovery of code paths | |
US10754628B2 (en) | Extracting web API endpoint data from source code to identify potential security threats | |
US11816479B2 (en) | System and method for implementing a code audit tool | |
CN115203004A (zh) | 代码覆盖率测试方法、装置、存储介质及电子设备 | |
CN116302930A (zh) | 应用测试方法和装置 | |
CN111221721A (zh) | 一种单元测试案例自动化录制和执行方法及装置 | |
CN110334302B (zh) | 复杂Web应用前端运行时分析方法 | |
CN115599386A (zh) | 代码生成方法、装置、设备及存储介质 | |
KR101767481B1 (ko) | 프로그램 분석 장치 및 프로그램 분석 제공 방법 | |
CN114116509A (zh) | 程序分析方法、装置、电子设备和存储介质 | |
CN112860507A (zh) | 分布式链路跟踪系统采样率的控制方法和装置 | |
US8612941B2 (en) | System and method for analysis of a large code base using partitioning | |
US20150261646A1 (en) | Selective profiling of applications | |
CN114329495A (zh) | 基于内生安全的资产漏洞静态分析方法及装置 | |
CN114546406A (zh) | 一种清洗冗余代码的方法、装置及相关设备 | |
CN113139184A (zh) | 基于静态分析的Binder通信过载漏洞的检测方法 | |
CN112181816A (zh) | 一种基于场景的接口测试方法、装置、计算机设备及介质 | |
US12045155B1 (en) | Efficient memory leak detection in database systems | |
US20240232234A9 (en) | User interface for providing an entity relationship diagram | |
CN114780952B (zh) | 敏感应用调用场景的检测方法、系统及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |