CN117708824A - 基于数据流追踪的代码审计方法、装置、设备及介质 - Google Patents
基于数据流追踪的代码审计方法、装置、设备及介质 Download PDFInfo
- Publication number
- CN117708824A CN117708824A CN202311464437.6A CN202311464437A CN117708824A CN 117708824 A CN117708824 A CN 117708824A CN 202311464437 A CN202311464437 A CN 202311464437A CN 117708824 A CN117708824 A CN 117708824A
- Authority
- CN
- China
- Prior art keywords
- code
- data stream
- source code
- component
- application source
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 48
- 238000012550 audit Methods 0.000 claims abstract description 59
- 230000002452 interceptive effect Effects 0.000 claims abstract description 34
- 238000004458 analytical method Methods 0.000 claims description 22
- 230000003993 interaction Effects 0.000 claims description 18
- 238000013515 script Methods 0.000 claims description 16
- 238000004590 computer program Methods 0.000 claims description 13
- 238000000605 extraction Methods 0.000 claims description 8
- 230000008676 import Effects 0.000 claims description 8
- 238000012545 processing Methods 0.000 claims description 7
- 238000010276 construction Methods 0.000 claims description 5
- 238000012360 testing method Methods 0.000 claims description 5
- 238000001514 detection method Methods 0.000 abstract description 8
- 230000006870 function Effects 0.000 description 14
- 238000004891 communication Methods 0.000 description 9
- 238000007726 management method Methods 0.000 description 6
- 238000013473 artificial intelligence Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 230000000694 effects Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000011161 development Methods 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000012384 transportation and delivery Methods 0.000 description 2
- 241000157302 Bison bison athabascae Species 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 1
- 238000010921 in-depth analysis Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
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/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/577—Assessing vulnerabilities and evaluating computer system security
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/03—Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
- G06F2221/033—Test or assess software
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Stored Programmes (AREA)
Abstract
本发明涉及代码审计技术领域,揭露一种基于数据流追踪的代码审计方法、装置、设备及介质,该方法包括:根据被测应用源代码的后端代码数据流提取被测应用源代码的入口节点及引用组件;构建入口节点的前端数据流,并构建引用组件的组件数据流;将前端数据流、组件数据流与后端代码数据流进行数据流拼接,得到被测应用源代码的交互数据流;利用预设的代码审计规则对交互数据流进行规则匹配,得到被测应用源代码的代码审计结果。通过本发明实施的根据交互数据流对被测应用源代码进行代码审计,能够全面的分析被测应用源代码代码中的安全漏洞,从而降低检测结果的误报率,同时优化代码审计工作流程,减少工作量,提高代码审计的效率。
Description
技术领域
本发明涉及代码审计技术领域,尤其涉及一种基于数据流追踪的代码审计方法、装置、设备及介质。
背景技术
随着网络技术和应用的飞速发展,信息***安全正面临着前所未有的巨大挑战。网络化和互联互通性已经成为当前软件和信息***发展的大势所趋,信息***与互联网或者其他网络的互连,也将直接导致***的受攻击面增大,***面临的安全威胁空前增高。另一方面,随着构建在信息***之上的各种业务应用的不断丰富,软件和信息***复杂程度的不断提高,***中隐藏的各种安全隐患也越来越多,并且常常难以发现和消除。
近几年重大安全事件的频频发生,显示了当前信息***安全形势的严峻性,仅仅依靠传统的安全防护机制来保障信息***安全的做法已经逐渐力不从心。目前已经有越来越多的管理部门和企业用户已经认识到软件代码自身安全问题是保障信息***安全的基础,用户对软件源代码安全检测产品的需求也日益增多,很多用户希望通过部署源代码安全检测产品来解决软件开发和测试过程中的安全需求。目前市场上的国内外源码安全性检测商业产品普遍存在误报过高问题,仅支持单语言数据流进行构建,且仅对后端接收的数据进行数据流追踪,忽略了前端发送的数据,不能进行完整的数据流追踪,需要人工额外进行追踪分析,大大降低了代码审计的效率以及准确度,导致代码审计的效率以及准确度较低。
发明内容
本发明提供一种基于数据流追踪的代码审计方法、装置、设备及介质,其主要目的在于解决代码审计时效率较差以及准确度较低的问题。
为实现上述目的,本发明提供的一种基于数据流追踪的代码审计方法,包括:获取被测应用源代码的后端代码数据流,根据后端代码数据流提取被测应用源代码的入口节点及引用组件;根据入口节点的源代码构建入口节点的前端数据流,并根据引用组件的源代码构建引用组件的组件数据流;将前端数据流、组件数据流与后端代码数据流进行数据流拼接,得到被测应用源代码的交互数据流;利用预设的代码审计规则对交互数据流进行规则匹配,得到被测应用源代码的代码审计结果。
本发明还提供一种基于数据流追踪的代码审计装置,包括:入口节点及引用组件提取模块,用于获取被测应用源代码的后端代码数据流,根据后端代码数据流提取被测应用源代码的入口节点及引用组件;前端数据流及组件数据流构建模块,用于根据入口节点的源代码构建入口节点的前端数据流,并根据引用组件的源代码构建引用组件的组件数据流;数据流拼接模块,用于将前端数据流、组件数据流与后端代码数据流进行数据流拼接,得到被测应用源代码的交互数据流;代码审计模块,用于利用预设的代码审计规则对交互数据流进行规则匹配,得到被测应用源代码的代码审计结果。
本发明还提供一种电子设备,电子设备包括:与至少一个处理器通信连接的存储器;其中,处理器用于执行存储在存储器上的计算机程序;存储器存储有可被至少一个处理器执行的计算机程序,计算机程序被至少一个处理器执行,以使至少一个处理器能够执行上述的一种基于数据流追踪的代码审计方法。
本发明还提供一种计算机可读存储介质,存储有计算机程序,其特征在于,计算机程序被处理器执行时,实现上述任意一项的基于数据流追踪的代码审计方法。
本发明实施例通过后端代码数据流提取被测应用源代码的入口节点及引用组件,能够分析出被测应用源代码在前端的前端数据流以及在组件的组件数据流,进一步对被测应用源代码进行持续的数据流追踪,有利于发现潜在的安全风险,提高被测应用源代码代码审计的准确度;将前端数据流、组件数据流与后端代码数据流进行数据流拼接,能够实现前后端数据流的交互以及组件数据流的交互,更全面地理解被测应用源代码的数据流动情况,有利于发现潜在的安全风险,提高被测应用源代码代码审计的准确度;利用预设的代码审计规则对交互数据流进行规则匹配,能够得到被测应用源代码代码中的安全漏洞,从而降低检测结果的误报率,同时优化代码审计工作流程,为代码审计人员提供更详细的数据流信息,减少工作量,提高代码审计的效率。因此本发明提出的一种基于数据流追踪的代码审计方法、装置、设备及介质,可以解决代码审计时效率较差以及准确度较低的问题。
附图说明
图1为本发明一实施例提供的一种基于数据流追踪的代码审计方法的流程示意图;
图2为本发明一实施例提供的构建入口节点的前端数据流的流程示意图;
图3为本发明一实施例提供的一种基于数据流追踪的代码审计装置的功能模块图;
图4为发明一实施例提供的实现一种基于数据流追踪的代码审计方法的电子设备的结构示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本申请实施例提供一种基于数据流追踪的代码审计方法。一种基于数据流追踪的代码审计方法的执行主体包括但不限于服务端、终端等能够被配置为执行本申请实施例提供的该方法的电子设备中的至少一种。换言之,一种基于数据流追踪的代码审计方法可以由安装在终端设备或服务端设备的软件或硬件来执行,软件可以是区块链平台。服务端包括但不限于:单台服务器、服务器集群、云端服务器或云端服务器集群等。服务器可以是独立的服务器,也可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(Content Delivery Network,CDN)、以及大数据和人工智能平台等基础云计算服务的云服务器。
参照图1所示,为本发明一实施例提供的一种基于数据流追踪的代码审计方法的流程示意图。
S1、获取被测应用源代码的后端代码数据流,根据后端代码数据流提取被测应用源代码的入口节点及引用组件。
本发明实施例中,被测应用源代码是需要进行代码审计的静态应用源代码,后端代码数据流是指被测应用源代码的源代码中函数、URL(Uniform Resource Locator,统一资源定位符)、HTTP方法等在后端代码中的调用关系,通过后端代码数据流确定后端代码中方法以及函数之间的调用关系。
在一个实施例中,根据后端代码数据流提取被测应用源代码的入口节点及引用组件,包括:提取后端代码数据流中的路由关系,根据路由关系确定被测应用源代码的入口节点;识别后端代码数据流中的导入语句以及组件文件信息;根据导入语句以及组件文件信息确定被测应用源代码的引用组件。
本发明实施例中,路由关系是后端代码数据流中方法、函数以及参数等在被测应用源代码中的调用关系,通过路由关系反向查找后端代码数据流中方法、函数以及参数等在前端的入口节点,进而能够分析出被测应用源代码在前端的数据流,实现前后端数据流的交互,更全面地理解被测应用源代码的数据流动情况,有利于发现潜在的安全风险,提高被测应用源代码代码审计的准确度。
例如,在一个实施例中,从后端代码数据流中query的参数路径看,query参数没有安全校验,因此存在安全隐患,但是我们无法得知前端代码中是否做了安全校验,因此需要反向查找前端哪个页面调用了该方法;此时通过controller层(视图控制层,后端代码的入口,也是给前端开放的入口)的路由信息可以进行反向查找,定位到页面SqlInjection.html,得到入口节点。
在一个实施例中,导入语句为代码数据中的import语句等导入语句,通过导入语句向被测应用源代码中导入所需的文件、类、组件等,进而通过识别导入语句所导入的组件信息以及组件文件信息中所包含的开源组件,能够得到被测应用源代码的引用组件。其中,组件文件信息是包含外部组件名称、组件源代码等组件信息的文件,从而通过组件文件信息能够确定被测应用源代码的外部引用组件。
S2、根据入口节点的源代码构建入口节点的前端数据流,并根据引用组件的源代码构建引用组件的组件数据流。
在一个实施例中,入口节点的数据流是入口节点的源代码的代码数据流,实现被测应用源代码在前端中的代码数据流追踪;组件数据流是引用组件的源代码的代码数据流,实现被测应用源代码在外部引用组件中的代码数据流追踪。
在一个实施例中,参阅图2所示,根据入口节点的源代码构建入口节点的前端数据流,包括:S21、确定入口节点的源代码对应的代码编译类别;S22、根据代码编译类别对入口节点的源代码进行代码解析,得到代码语法树;S23、根据代码语法树提取源代码的路由信息,根据路由信息生成前端数据流。
在一个实施例中,代码编译类型是源代码的代码编译语言,例如,jsp语言、python语言、Java语言,C语言等编译语言。不同的代码编译类别对应不同的代码解析脚本,以对源代码进行代码解析,得到代码语法树。具体地,代码解析脚本针对不同编译类别的代码编译语言预先编写相应的语法解析规则以及词法解析规则,再利用flex、bison等生成器生成代码解析脚本,以将源代码解析为相同格式的代码语法树。
在一个实施例中,根据代码语法树能够获取源代码中每个函数、方法以及参数等的语法结构,即路由信息,进而通过遍历代码语法树的路由信息能够确定每个函数、方法以及参数等在源代码中的调用关系,因此,生成入口节点的前端数据流。
在一个实施例中,根据根据代码编译类别对入口节点的源代码进行代码解析,得到代码语法树,包括:获取代码编译类别对应的代码解析脚本,其中,代码解析脚本中包括词法解析脚本以及语法解析脚本;利用词法解析脚本将入口节点的源代码解析为单词序列;利用语法解析脚本记性单词序列解析为代码语法树。
在一个实施例中,词法解析脚本能将源代码中的每个语句按照词、符号等进行划分,得到单词序列,再利用语法解析脚本解析单词序列对应的语法结构,进而得到代码语法树。
在一个实施例中,可以根据上述构建入口节点的前端数据流的方法构建引用组件的组件数据流,通过组件数据流分析被测应用源代码后端代码中引用的第三方组件的数据流动情况,从而对被测应用源代码进行持续的数据流追踪。
S3、将前端数据流、组件数据流与后端代码数据流进行数据流拼接,得到被测应用源代码的交互数据流。
在一个实施例中,交互数据流包括前端数据流与后端代码数据流之间的前后端交互数据流,以及组件数据流与后端代码数据流之间的组件交互数据流,根据交互数据流全面地对被测应用源代码的代码路由进行分析,从而提高代码审计的效果。
在一个实施例中,将前端数据流、组件数据流与后端代码数据流进行数据流拼接,得到被测应用源代码的交互数据流,包括:将前端数据流与后端代码数据流进行拼接,得到前后端交互数据流;将组件数据流与后端代码数据流进行拼接,得到组件交互数据流;汇集前后端交互数据流以及组件交互数据流,得到被测应用源代码的交互数据流。
在一个实施例中,通过前后端交互数据流能够对前端请求发送的数据进行定位和分析,获取前端发送的数据并构建数前端数据流,再根据前端数据流图与后端的数据流进行拼接,从而获取完整的双向数据流图,能够更全面地理解应用的前后端数据流动情况,有利于发现潜在的安全风险,提高被测应用源代码的代码审计效果。
在一个实施例中,通过对后端后端代码数据流中引用的第三方组件进行深入分析得到组件交互数据流,能够对组件进行持续的数据流追踪以发现更多的代码潜在风险,并提供更精准的代码审计结果。
S4、利用预设的代码审计规则对交互数据流进行规则匹配,得到被测应用源代码的代码审计结果。
在一个实施例中,代码审计规则是预先设定的代码审计标准文本,例如,前后端交流数据中缺失安全验证,引用的外部组件在国家信息漏洞库中存在安全漏洞,则可能会存在安全隐患,需要对对应的代码进行进一步地审计处理。
在一个实施例中,利用预设的代码审计规则对交互数据流进行规则匹配,得到被测应用源代码的代码审计结果,包括:从代码审计规则中确定代码审计准则,将代码审计准则转化为准则表达式;利用准则表达式对交互数据流进行匹配,得到被测应用源代码的代码审计结果。
在一个实施例中代码审计准则是代码审计规则中具体的代码安全规范,例如,引用组件的来源,数据流中的路由关系等,将交互数据流中的数据流逐一与准则表达式匹配,得到匹配结果。
在一个实施例中,利用准则表达式对交互数据流进行匹配,得到被测应用源代码的代码审计结果,包括:将准则表达式划分为多个可独立检验的规则块;分别利用规则块与交互数据流进行匹配,得到规则匹配结果;将规则匹配结果作为被测应用源代码的代码审计结果。
在一个实施例中,一个规则块对应一个代码审计规则,若规则块与交互数据流匹配成功,则匹配的数据流就存在规则块对应的代码审计规则中的代码漏洞,需要对数据流所对应的被测应用源代码进行处理;通过规则块分别与交互数据流进行匹配,能够避免规则匹配过程的中的匹配遗漏,以全面地对被测应用源代码进行代码审计。
在一个实施例中,代码审计结果能够对被测应用源代码的代码中存在安全漏洞的后端代码数据流进行检测,得到被测应用源代码代码中的安全漏洞,从而降低检测结果的误报率;此外,还可以协助审计人员进行高效的安全审计,降低审计人员的工作负担,优化安全审计工作流程,为代码审计人员提供更为详细的数据流信息,辅助代码审计人员更好的理解和进行代码审计工作,减少工作量,提高代码审计的效率。
本发明实施例通过后端代码数据流提取被测应用源代码的入口节点及引用组件,能够分析出被测应用源代码在前端的前端数据流以及在组件的组件数据流,进一步对被测应用源代码进行持续的数据流追踪,有利于发现潜在的安全风险,提高被测应用源代码代码审计的准确度;将前端数据流、组件数据流与后端代码数据流进行数据流拼接,能够实现前后端数据流的交互以及组件数据流的交互,更全面地理解被测应用源代码的数据流动情况,有利于发现潜在的安全风险,提高被测应用源代码代码审计的准确度;利用预设的代码审计规则对交互数据流进行规则匹配,能够得到被测应用源代码代码中的安全漏洞,从而降低检测结果的误报率,同时优化代码审计工作流程,为代码审计人员提供更详细的数据流信息,减少工作量,提高代码审计的效率。因此本发明提出的一种基于数据流追踪的代码审计方法,可以解决代码审计时效率较差以及准确度较低的问题。
如图3所示,是本发明一实施例提供的应用于用户端时的一种基于数据流追踪的代码审计装置的功能模块图。
本发明一种基于数据流追踪的代码审计装置300可以安装于电子设备中。根据实现的功能,一种基于数据流追踪的代码审计装置300可以包括入口节点及引用组件提取模块301、前端数据流及组件数据流构建模块302、数据流拼接模块303以及代码审计模块304。本发明模块也可以称之为单元,是指一种能够被电子设备处理器所执行,并且能够完成固定功能的一系列计算机程序段,其存储在电子设备的存储器中。
在本实施例中,关于各模块/单元的功能如下:入口节点及引用组件提取模块301,用于获取被测应用源代码的后端代码数据流,根据后端代码数据流提取被测应用源代码的入口节点及引用组件;前端数据流及组件数据流构建模块302,用于根据入口节点的源代码构建入口节点的前端数据流,并根据引用组件的源代码构建引用组件的组件数据流;数据流拼接模块303,用于将前端数据流、组件数据流与后端代码数据流进行数据流拼接,得到被测应用源代码的交互数据流;代码审计模块304,用于利用预设的代码审计规则对交互数据流进行规则匹配,得到被测应用源代码的代码审计结果。
详细地,在一个实施例中一种基于数据流追踪的代码审计装置300中的各模块在使用时采用与附图中的一种基于数据流追踪的代码审计方法一样的技术手段,并能够产生相同的技术效果,这里不再赘述。
如图4所示,是本发明一实施例提供的实现一种基于数据流追踪的代码审计方法的电子设备的结构示意图。
电子设备400可以包括处理器401、存储器402、通信总线403以及通信接口404,还可以包括存储在存储器402中并可在处理器401上运行的计算机程序,如一种基于数据流追踪的代码审计程序。
其中,处理器401在一些实施例中可以由集成电路组成,例如可以由单个封装的集成电路所组成,也可以是由多个相同功能或不同功能封装的集成电路所组成,包括一个或者多个中央处理器(Central Processing Unit,CPU)、微处理器、数字处理芯片、图形处理器及各种控制芯片的组合等。处理器401是电子设备的控制核心(Control Unit),利用各种接口和线路连接整个电子设备的各个部件,通过运行或执行存储在存储器402内的程序或者模块(例如执行一种基于数据流追踪的代码审计程序等),以及调用存储在存储器402内的数据,以执行电子设备的各种功能和处理数据。
存储器402至少包括一种类型的可读存储介质,可读存储介质包括闪存、移动硬盘、多媒体卡、卡型存储器(例如:SD或DX存储器等)、磁性存储器、磁盘、光盘等。存储器402在一些实施例中可以是电子设备的内部存储单元,例如该电子设备的移动硬盘。存储器402在另一些实施例中也可以是电子设备的外部存储设备,例如电子设备上配备的插接式移动硬盘、智能存储卡(Smart Media Card,SMC)、安全数字(Secure Digital,SD)卡、闪存卡(Flash Card)等。进一步地,存储器402还可以既包括电子设备的内部存储单元也包括外部存储设备。存储器402不仅可以用于存储安装于电子设备的应用软件及各类数据,例如基于一种基于数据流追踪的代码审计程序的代码等,还可以用于暂时地存储已经输出或者将要输出的数据。
通信总线403可以是外设部件互连标准(Peripheral Component Interconnect,简称PCI)总线或扩展工业标准结构(Extended Industry Standard Architecture,简称EISA)总线等。该总线可以分为地址总线、数据总线、控制总线等。总线被设置为实现存储器402以及至少一个处理器401等之间的连接通信。
通信接口404用于上述电子设备与其他设备之间的通信,包括网络接口和用户接口。可选地,网络接口可以包括有线接口和/或无线接口(如WI-FI接口、蓝牙接口等),通常用于在该电子设备与其他电子设备之间建立通信连接。用户接口可以是显示器(Display)、输入单元(比如键盘(Keyboard)),可选地,用户接口还可以是标准的有线接口、无线接口。可选地,在一些实施例中,显示器可以是LED显示器、液晶显示器、触控式液晶显示器以及OLED(Organic Light-Emitting Diode,有机发光二极管)触摸器等。其中,显示器也可以适当的称为显示屏或显示单元,用于显示在电子设备中处理的信息以及用于显示可视化的用户界面。
图4仅示出了具有部件的电子设备,本领域技术人员可以理解的是,图4示出的结构并不构成对电子设备400的限定,可以包括比图示更少或者更多的部件,或者组合某些部件,或者不同的部件布置。
例如,尽管未示出,电子设备还可以包括给各个部件供电的电源(比如电池),优选地,电源可以通过电源管理装置与至少一个处理器401逻辑相连,从而通过电源管理装置实现充电管理、放电管理、以及功耗管理等功能。电源还可以包括一个或一个以上的直流或交流电源、再充电装置、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。电子设备还可以包括多种传感器、蓝牙模块、Wi-Fi模块等,在此不再赘述。
应该了解,实施例仅为说明之用,在专利申请范围上并不受此结构的限制。
本发明还提供一种计算机可读存储介质,可读存储介质存储有计算机程序,计算机程序在被处理器所执行时,可以实现上述任一实施例的一种基于数据流追踪的代码审计方法。需要说明的是,计算机可读存储介质可以是易失性的,也可以是非易失性的。例如,计算机可读介质可以包括:能够携带计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)。在本发明所提供的几个实施例中,应该理解到,所揭露的设备,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能模块的形式实现。
对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。
因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本发明内。不应将权利要求中的任何附关联图标记视为限制所涉及的权利要求。
本申请实施例可以基于人工智能技术对相关的数据进行获取和处理。其中,人工智能(Artificial Intelligence,AI)是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用***。
此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。***权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一、第二等词语用来表示名称,而并不表示任何特定的顺序。
最后应说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或等同替换,而不脱离本发明技术方案的精神和范围。
Claims (10)
1.一种基于数据流追踪的代码审计方法,其特征在于,所述方法包括:
获取被测应用源代码的后端代码数据流,根据所述后端代码数据流提取所述被测应用源代码的入口节点及引用组件;
根据所述入口节点的源代码构建所述入口节点的前端数据流,并根据所述引用组件的源代码构建所述引用组件的组件数据流;
将所述前端数据流、所述组件数据流与所述后端代码数据流进行数据流拼接,得到所述被测应用源代码的交互数据流;
利用预设的代码审计规则对所述交互数据流进行规则匹配,得到所述被测应用源代码的代码审计结果。
2.如权利要求1所述的一种基于数据流追踪的代码审计方法,其特征在于,所述根据所述后端代码数据流提取所述被测应用源代码的入口节点及引用组件,包括:
提取所述后端代码数据流中的路由关系,根据所述路由关系确定所述被测应用源代码的入口节点;
识别所述后端代码数据流中的导入语句以及组件文件信息;
根据所述导入语句以及所述组件文件信息确定所述被测应用源代码的引用组件。
3.如权利要求1所述的一种基于数据流追踪的代码审计方法,其特征在于,所述根据所述入口节点的源代码构建所述入口节点的前端数据流,包括:
确定所述入口节点的源代码对应的代码编译类别;
根据所述代码编译类别对所述入口节点的源代码进行代码解析,得到代码语法树;
根据所述代码语法树提取所述源代码的路由信息,根据所述路由信息生成前端数据流。
4.如权利要求3所述的一种基于数据流追踪的代码审计方法,其特征在于,所述根据所述根据所述代码编译类别对所述入口节点的源代码进行代码解析,得到代码语法树,包括:
获取所述代码编译类别对应的代码解析脚本;其中,所述代码解析脚本中包括词法解析脚本以及语法解析脚本;
利用所述词法解析脚本将所述入口节点的源代码解析为单词序列;
利用所述语法解析脚本记性所述单词序列解析为代码语法树。
5.如权利要求1所述的一种基于数据流追踪的代码审计方法,其特征在于,所述将所述前端数据流、所述组件数据流与所述后端代码数据流进行数据流拼接,得到所述被测应用源代码的交互数据流,包括:
将所述前端数据流与所述后端代码数据流进行拼接,得到前后端交互数据流;
将所述组件数据流与所述后端代码数据流进行拼接,得到组件交互数据流;
汇集所述前后端交互数据流以及所述组件交互数据流,得到所述被测应用源代码的交互数据流。
6.如权利要求1所述的一种基于数据流追踪的代码审计方法,其特征在于,所述利用预设的代码审计规则对所述交互数据流进行规则匹配,得到所述被测应用源代码的代码审计结果,包括:
从所述代码审计规则中确定代码审计准则,将所述代码审计准则转化为准则表达式;
利用所述准则表达式对所述交互数据流进行匹配,得到所述被测应用源代码的代码审计结果。
7.如权利要求1所述的一种基于数据流追踪的代码审计方法,其特征在于,所述利用所述准则表达式对所述交互数据流进行匹配,得到所述被测应用源代码的代码审计结果,包括:
将所述准则表达式划分为多个可独立检验的规则块;
分别利用所述规则块与所述交互数据流进行匹配,得到规则匹配结果;
将所述规则匹配结果作为所述被测应用源代码的代码审计结果。
8.一种基于数据流追踪的代码审计装置,其特征在于,所述装置包括:
入口节点及引用组件提取模块,用于获取被测应用源代码的后端代码数据流,根据所述后端代码数据流提取所述被测应用源代码的入口节点及引用组件;
前端数据流及组件数据流构建模块,用于根据所述入口节点的源代码构建所述入口节点的前端数据流,并根据所述引用组件的源代码构建所述引用组件的组件数据流;
数据流拼接模块,用于将所述前端数据流、所述组件数据流与所述后端代码数据流进行数据流拼接,得到所述被测应用源代码的交互数据流;
代码审计模块,用于利用预设的代码审计规则对所述交互数据流进行规则匹配,得到所述被测应用源代码的代码审计结果。
9.一种电子设备,其特征在于,所述电子设备包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述处理器用于执行存储在所述存储器上的计算机程序;
所述存储器存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行如权利要求1至7中任意一项所述的基于数据流追踪的代码审计方法。
10.一种计算机可读存储介质,存储有计算机程序,其特征在于,所述计算机程序被处理器执行时,实现权利要求1至7中任意一项所述的基于数据流追踪的代码审计方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311464437.6A CN117708824A (zh) | 2023-11-03 | 2023-11-03 | 基于数据流追踪的代码审计方法、装置、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311464437.6A CN117708824A (zh) | 2023-11-03 | 2023-11-03 | 基于数据流追踪的代码审计方法、装置、设备及介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117708824A true CN117708824A (zh) | 2024-03-15 |
Family
ID=90163098
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311464437.6A Pending CN117708824A (zh) | 2023-11-03 | 2023-11-03 | 基于数据流追踪的代码审计方法、装置、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117708824A (zh) |
-
2023
- 2023-11-03 CN CN202311464437.6A patent/CN117708824A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10169005B2 (en) | Consolidating and reusing portal information | |
CN111435393B (zh) | 对象漏洞的检测方法、装置、介质及电子设备 | |
CN109408763B (zh) | 一种对不同模板的简历进行管理的方法及*** | |
CN111488573A (zh) | 链接库检测方法、装置、电子设备和计算机可读存储介质 | |
CN115599386A (zh) | 代码生成方法、装置、设备及存储介质 | |
CN110351131B (zh) | 一种用于分布式链路的监控方法、装置和电子设备 | |
CN113885876A (zh) | 一种参数校验方法、装置、存储介质及计算机*** | |
CN114626061A (zh) | 网页木马检测的方法、装置、电子设备及介质 | |
US8607201B2 (en) | Augmenting visualization of a call stack | |
CN113032586B (zh) | 对文本中的时间信息进行提取的方法、装置及电子设备 | |
CN109901934B (zh) | 生成接口帮助文档的方法和装置 | |
CN115640279A (zh) | 一种数据血缘关系的构建方法和装置 | |
CN117708824A (zh) | 基于数据流追踪的代码审计方法、装置、设备及介质 | |
CN113051171B (zh) | 接口测试方法、装置、设备及存储介质 | |
CN115033489A (zh) | 代码资源检测方法、装置、电子设备及存储介质 | |
CN113110947B (zh) | 一种程序调用链生成方法、***、电子设备及介质 | |
CN111399843B (zh) | 将sql运行信息映射到sql文件的方法、***及电子设备 | |
CN113032256A (zh) | 自动化测试方法、装置、计算机***和可读存储介质 | |
CN113935847A (zh) | 线上流程的风险处理方法、装置、服务器及介质 | |
CN110297639B (zh) | 用于检测代码的方法和装置 | |
CN113535568B (zh) | 应用部署版本的验证方法、装置、设备和介质 | |
CN111290870A (zh) | 一种检测异常的方法和装置 | |
CN112527880B (zh) | 大数据集群元数据信息的采集方法、装置、设备及介质 | |
CN110825438B (zh) | 用于模拟人工智能芯片的数据处理的方法和装置 | |
US20240045955A1 (en) | Identifying security events in programming code for logging |
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 |