CN115129598A - 一种sql语句的风险检测方法、装置、***及介质 - Google Patents

一种sql语句的风险检测方法、装置、***及介质 Download PDF

Info

Publication number
CN115129598A
CN115129598A CN202210783536.XA CN202210783536A CN115129598A CN 115129598 A CN115129598 A CN 115129598A CN 202210783536 A CN202210783536 A CN 202210783536A CN 115129598 A CN115129598 A CN 115129598A
Authority
CN
China
Prior art keywords
sql
node
risk
file
matching rule
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
Application number
CN202210783536.XA
Other languages
English (en)
Inventor
周小亮
邹亮亮
杨坤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ping An Bank Co Ltd
Original Assignee
Ping An Bank Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Ping An Bank Co Ltd filed Critical Ping An Bank Co Ltd
Priority to CN202210783536.XA priority Critical patent/CN115129598A/zh
Publication of CN115129598A publication Critical patent/CN115129598A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/242Query formulation
    • G06F16/2433Query languages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种SQL语句的风险检测方法、装置、***及介质,方法包括:获取待检测的SQL文件;对所述待检测的SQL文件进行节点分析,将节点分析结果与预设匹配规则进行匹配;根据所述节点分析结果与所述预设匹配规则是否匹配,确认所述SQL文件中是否存在整表删除的风险操作。通过对待检测的SQL文件进行节点分析,并将节点分析结果与预设匹配规则进行自动匹配检测,可批量对多个项目代码进行自动的风险检测,以识别代码中是否存在整表删除的风险操作,提高了SQL语句的风险检测效率和准确性。

Description

一种SQL语句的风险检测方法、装置、***及介质
技术领域
本发明涉及计算机技术领域,尤其涉及一种SQL语句的风险检测方法、装置、***及介质。
背景技术
SQL(Structured Query Language,结构化查询语言)是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库***。
在项目开发过程中,开发人员由于对业务考虑不够周全,可能存在整表删除数据库代码语句的情况,对数据库整表删除代码,若符合编译器要求并不会造成编译或者执行错误,但在上线运行一段时间后,由于业务场景更新,或者业务场景发生变化,触发对已经删除的数据的访问的时候,就可能会出现异常,而一旦出现异常,因为已经对数据进行了物理删除无法恢复,导致SQL代码所应用的数据库***难以正常运行。
现有的对SQL语句的检测基本靠程序员自身代码能力和对业务场景判断,及人工代码审查解决此类问题,检查方式容易存在遗漏且耗时,风险检测效率与准确性均较低。
发明内容
鉴于上述现有技术的不足,本发明的目的在于提供一种SQL语句的风险检测方法、装置、***及介质,旨在提高SQL语句检测的效率和准确性。
本发明的技术方案如下:
一种SQL语句的风险检测方法,包括:
获取待检测的SQL文件;
对所述待检测的SQL文件进行节点分析,将节点分析结果与预设匹配规则进行匹配;
根据所述节点分析结果与所述预设匹配规则是否匹配,确认所述SQL文件中是否存在整表删除的风险操作。
在一个实施例中,所述获取待检测的SQL文件,包括:
获取集成有SQL语句的源代码;
或者,
获取集成有SQL语句的配置文件。
在一个实施例中,当获取集成有SQL语句的源代码时,所述对所述待检测的SQL文件进行节点分析,将节点分析结果与预设匹配规则进行匹配,包括:
对所述集成有SQL语句的源代码构建抽象语法树;
分析所述抽象语法树的结构,获取所述抽象语法树中的变量节点;
对所述变量节点中的字符串进行标准转换处理;
将经标准转换处理后的字符串与预设匹配规则进行匹配。
在一个实施例中,所述预设匹配规则包括:
所述变量节点中包括存在删除语句且不存在条件语句的风险节点;
以及,
当存在所述风险节点的平行节点时,所述平行节点中不存在条件语句。
在一个实施例中,当获取集成有SQL语句的配置文件时,所述对所述待检测的SQL文件进行节点分析,将节点分析结果与预设匹配规则进行匹配,包括:
获取所述集成有SQL语句的配置文件中的节点信息;
将所述节点信息与预设匹配规则进行匹配。
在一个实施例中,所述预设匹配规则包括:
所述节点信息中存在删除节点且所述删除节点中不存在条件语句;
以及,
当存在所述删除节点的平行节点时,所述平行节点中不存在条件语句。
在一个实施例中,所述根据所述节点分析结果与所述预设匹配规则是否匹配,确认所述SQL文件中是否存在整表删除的风险操作,具体包括:
若所述节点分析结果与所述预设匹配规则匹配,则所述SQL文件中存在整表删除的风险操作;
或者,
若所述节点分析结果与所述预设匹配规则不匹配,则所述SQL文件中不存在整表删除的风险操作。
一种SQL语句的风险检测装置,包括:
获取模块,用于获取待检测的SQL文件;
分析匹配模块,用于对所述待检测的SQL文件进行节点分析,将节点分析结果与预设匹配规则进行匹配;
检测模块,用于根据所述节点分析结果与所述预设匹配规则是否匹配,确认所述SQL文件中是否存在整表删除的风险操作。
一种SQL语句的风险检测***,所述***包括至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行上述SQL语句的风险检测方法。
一种非易失性计算机可读存储介质,所述非易失性计算机可读存储介质存储有计算机可执行指令,该计算机可执行指令被一个或多个处理器执行时,可使得所述一个或多个处理器执行上述的SQL语句的风险检测方法。
有益效果:本发明公开了一种SQL语句的风险检测方法、装置、***及介质,相比于现有技术,本发明实施例通过对待检测的SQL文件进行节点分析,并将节点分析结果与预设匹配规则进行自动匹配检测,可批量对多个项目代码进行自动的风险检测,以识别代码中是否存在整表删除的风险操作,提高了SQL语句的风险检测效率和准确性。
附图说明
下面将结合附图及实施例对本发明作进一步说明,附图中:
图1为本发明提供的SQL语句的风险检测方法的一个流程图;
图2为本发明提供的SQL语句的风险检测方法中一个实施例的流程图;
图3为本发明提供的SQL语句的风险检测方法中另一个实施例的流程图;
图4为本发明提供的SQL语句的风险检测装置的功能模块示意图;
图5为本发明提供的SQL语句的风险检测***的硬件结构示意图。
具体实施方式
为使本发明的目的、技术方案及效果更加清楚、明确,以下对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。以下结合附图对本发明实施例进行介绍。
请参阅图1,图1为本发明提供的SQL语句的风险检测方法一个实施例的流程图。本实施例提供的SQL语句的风险检测方法适用于对SQL代码中的整表删除风险进行快速检测的情况,具体应用于包括终端设备、网络和服务器构成的测试***,其中网络为用于在终端设备和服务器直接提供通信链路的介质,其可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等;终端设备上的操作***可以包括手持设备操作***(iPhoneoperating system,iOS***)、安卓***或其他操作***,终端设备通过网络连接到服务器以实现交互,从而进行接收或发送数据等操作,具体可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、便携式计算机和台式服务器等等。如图1所示,该方法具体包括如下步骤:
S100、获取待检测的SQL文件。
本实施例中,在进行SQL语句的风险检测时,先获取待检测的SQL文件,例如可以批量对多个项目的全量代码进行检测,或者也可以单独对开发人员提交的增量代码进行检测,以实现不同业务场景下的SQL语句风险检测。
在一个实施例中中,步骤S100包括:
获取集成有SQL语句的源代码;
或者,
获取集成有SQL语句的配置文件。
本实施例中,由于SQL语句的编写在java项目中主要通过两种方式实现,一种是通过在java代码中集成SQL语句,另一种则是通过在MyBatis配置文件中集成SQL语句,MyBatis是支持普通SQL查询、存储过程和高级映射的优秀持久层框架,其消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索,可以使用简单的XML(ExtensibleMarkup Language,可扩展标记语言)或注解来配置和映射原生信息,将接口和Java的POJOs(Plain Ordinary Java Object,普通的Java对象)映射成数据库中的记录。因此针对这两种方式,在获取待检测的SQL文件时,可获取集成有SQL语句的java源代码,也可获取集成有SQL语句的MyBatis配置文件。
其中,在获取MyBatis配置文件时,先拉取java项目代码,之后查找并分析整个项目中的XML文件,并进一步分析XML文件中是否存在mapper节点,如果存在,则将该文件确认为Mybatis配置文件,从而实现MyBatis配置文件的高效准确获取。
S200、对所述待检测的SQL文件进行节点分析,将节点分析结果与预设匹配规则进行匹配。
本实施例中,通过对待检测的SQL文件进行节点分析,以获取SQL文件中的节点内容以及节点关系等等,并且将节点分析结果与预设匹配规则进行自动高效的匹配检测,该预设匹配规则是预先设置的用于检测SQL语句中是否存在整表删除这类风险操作的规则,与预设匹配规则进行匹配即可快速获知待检测的SQL文件中的风险情况。
S300、根据所述节点分析结果与所述预设匹配规则是否匹配,确认所述SQL文件中是否存在整表删除的风险操作。
本实施例中,根据节点分析结果与预设匹配规则之间的匹配情况,来确认SQL文件中是否存在整表删除的风险操作,具体若所述节点分析结果与所述预设匹配规则匹配,则所述SQL文件中存在整表删除的风险操作;或者,若所述节点分析结果与所述预设匹配规则不匹配,则所述SQL文件中不存在整表删除的风险操作,将人工查找风险转化为自动高效的匹配检测,避免人工方式造成的遗漏以及耗时长等情况,且可批量对多个项目代码进行匹配识别,有效节约检测时间,提高检测效率与精度。
在一个实施例中,当获取集成有SQL语句的源代码时,步骤S200,包括:
对所述集成有SQL语句的源代码构建抽象语法树;
分析所述抽象语法树的结构,获取所述抽象语法树中的变量节点;
对所述变量节点中的字符串进行标准转换处理;
将经标准转换处理后的字符串与预设匹配规则进行匹配。
本实施例中,当针对在java代码中集成SQL语句的情况进行风险检测时,在直接拉取java源代码后,则对该源代码构建抽象语法树,抽象语法树(Abstract Syntax Tree,AST)是源代码语法结构的一种抽象表示,以树状的形式表现编程语言的语法结构,树上的每个节点都表示源代码中的一种结构,去除了冗余的描述和符号,可以很直观地识别出语法树上每一个阶段节点之间的关系,利于实现快速高效的风险检测,本实施例中具体可以使用python第三方依赖库javalang构建抽象语法树,当然,在其他实施例中还可采用其它方式构建抽象语法树,例如现有的构建语法树的工具JDT、ANTLR等等,本实施例对此不作限定。
之后对抽象语法树的结构进行分析,可通过XPath(XML Path Language,XML路径语言)找到抽象语法树中的变量节点,XPath基于XML的树状结构,提供在数据结构树中找寻节点的能力,可准确获取抽象语法树中的变量节点,之后对变量节点中的字符串进行标准转换处理,以便后续实现统一高效的匹配识别,具体是将变量节点中的字符串统一转换为小写字母,之后将统一转换后的字符串与预设匹配规则进行匹配,以实现快速高效的风险检测。
具体地,本实施例中的预设匹配规则为所述变量节点中包括存在删除语句且不存在条件语句的风险节点;以及,当存在所述风险节点的平行节点时,所述平行节点中不存在条件语句。即识别到变量节点并统一转换处理后,则判断全部的变量节点中是否包括了存在删除语句且不存在条件语句的风险节点,若存在则进一步确认是否存在风险节点的平行节点,若不存在平行节点,则认为该风险节点为整表删除操作的风险语句,若存在平行节点,则进一步匹配确认平行节点中不存在条件语句,当满足上述预设匹配规则时则确认当前SQL文件中存储整表删除的风险操作。
具体实施时,请参阅图2,其为本发明提供的SQL语句的风险检测方法中一个实施例的流程图,如图2所示,方法包括如下步骤:
S201、获取源代码;
S202、构建抽象语法树;
S203、分析获取变量节点;
S204、将变量节点中的字符串统一转化为小写;
S205、判断变量节点中是否存在delete from删除语句且不存在where条件语句,若是,则执行步骤S206,否则,确认当前不存在整表删除;
S206、判断该变量节点的平行节点中是否不存在where条件语句,若是,则确认当前存在整表删除,否则,确认当前不存在整表删除。
本实施例中,当针对在java代码中集成SQL语句的情况进行风险检测时,在直接拉取java源代码后,则对该源代码构建抽象语法树,之后分析抽象语法树中的结构,通过XPath找到其中的变量节点,之后将变量节点中的字符串统一转换为小写,之后依次判断各个变量节点的字符串中是否存在delete from删除语句,如果不存在,则不需要分析该变量节点,如果存在,则进一步判断该变量节点的字符串中是否存在where条件语句;如果存在where条件语句,则不需要分析该变量节点,如果不存在where条件语句,则将该变量节点确认为风险节点,进一步判断该风险节点是否存在平行节点;若不存在平行节点,则该风险节点符合预设匹配规则,当前存在整表删除操作,若存在平行节点,则进一步判断平行节点中是否存在where条件语句;若存在where条件语句,则该风险节点不符合预设匹配规则,当前不存在整表删除操作,若不存在where条件语句,则该风险节点符合预设匹配规则,当前存在整表删除操作,实现快速地对java源代码中SQL风险语句的快速准确识别。
在一个实施例中,当获取集成有SQL语句的配置文件时,步骤S200,包括:
获取所述集成有SQL语句的配置文件中的节点信息;
将所述节点信息与预设匹配规则进行匹配。
本实施例中,当针对在Mybatis配置文件中集成SQL语句的情况进行风险检测时,则在获取了配置文件后,直接获取其中的节点信息,由于配置文件采用XML文件格式,在通过XML DOM(XML Document Object Model,XML文档对象模型)这一定义访问和操作XML文档的标准方法对XML文件进行访问时,XML DOM会将XML文档作为一个树形结构,XML文档中的每个成分都是一个节点,这颗节点树展示了节点的集合,以及它们之间的联系。因此可直接获取配置文件中的全部节点信息,并将节点信息与预设匹配规则进行匹配,进而实现精准高效的风险SQL语句识别。
具体地,本实施例中的预设匹配规则为所述节点信息中存在删除节点且所述删除节点中不存在条件语句;以及,当存在所述删除节点的平行节点时,所述平行节点中不存在条件语句。即根据获取到的节点信息,判断全部节点中是否存在删除节点且所述删除节点中不存在条件语句的情况,若存在则进一步确认该删除节点是否存在平行节点,若不存在平行节点,则认为该删除节点为整表删除操作的风险语句,若存在平行节点,则进一步匹配确认平行节点中不存在条件语句,当满足上述预设匹配规则时则确认当前SQL文件中存储整表删除的风险操作。
具体实施时,请参阅图3,其为本发明提供的SQL语句的风险检测方法中另一个实施例的流程图,如图3所示,方法包括如下步骤:
S301、获取配置文件;
S302、获取节点信息;
S303、判断节点信息中是否存在delete节点且delete节点中不存在where条件语句,若是,则执行步骤S304,否则,确认当前不存在整表删除;
S304、判断该delete节点的平行节点中是否不存在where条件语句,若是,则确认当前存在整表删除,否则,确认当前不存在整表删除。
本实施例中,当针对在Mybatis配置文件中集成SQL语句的情况进行风险检测时,先拉取java项目代码,之后查找并分析整个项目中的XML文件,并进一步分析XML文件中是否存在mapper节点,如果存在,则将该文件确认为Mybatis配置文件,以实现配置文件的获取。
之后获取配置文件中的节点信息,判断节点信息中是否存在delete节点,若不存在,则当前的节点信息与预设匹配规则不匹配,不存在整表删除操作,如果存在,则进一步判断delete节点的字符串中是否存在where语句;如果存在where条件语句,则预设匹配规则不匹配,不存在整表删除操作,如果不存在where条件语句,则进一步判断该delete节点是否存在平行节点;若不存在平行节点,则该风险节点符合预设匹配规则,当前存在整表删除操作,若存在平行节点,则进一步判断平行节点中是否存在where条件语句;若存在where条件语句,则该delete节点不符合预设匹配规则,当前不存在整表删除操作,若不存在where条件语句,则该delete节点符合预设匹配规则,当前存在整表删除操作,实现快速地对Mybatis配置文件中SQL风险语句的快速准确识别。
本发明另一实施例提供一种SQL语句的风险检测装置,包括:
获取模块11,用于获取待检测的SQL文件;
分析匹配模块12,用于对所述待检测的SQL文件进行节点分析,将节点分析结果与预设匹配规则进行匹配;
检测模块13,用于根据所述节点分析结果与所述预设匹配规则是否匹配,确认所述SQL文件中是否存在整表删除的风险操作。
获取模块11、分析匹配模块12和检测模块13依次连接,本发明所称的模块是指能够完成特定功能的一系列计算机程序指令段,比程序更适合于描述SQL语句的风险检测的执行过程,各模块的具体实施方式请参考上述对应的方法实施例,此处不再赘述。
在一个实施例中,所述获取模块11,包括:
第一获取单元,用于获取集成有SQL语句的源代码;
第二获取单元,用于获取集成有SQL语句的配置文件。
在一个实施例中,所述分析匹配模块12,包括:
构建单元,用于对所述集成有SQL语句的源代码构建抽象语法树;
节点分析单元,用于分析所述抽象语法树的结构,获取所述抽象语法树中的变量节点;
转化单元,用于对所述变量节点中的字符串进行标准转换处理;
匹配单元,用于将经标准转换处理后的字符串与预设匹配规则进行匹配。
在一个实施例中,所述预设匹配规则包括:
所述变量节点中包括存在删除语句且不存在条件语句的风险节点;
以及,
当存在所述风险节点的平行节点时,所述平行节点中不存在条件语句。
在一个实施例中,所述分析匹配模块12,包括:
节点获取单元,用于获取所述集成有SQL语句的配置文件中的节点信息;
匹配单元,用于将所述节点信息与预设匹配规则进行匹配。
在一个实施例中,所述预设匹配规则包括:
所述节点信息中存在删除节点且所述删除节点中不存在条件语句;
以及,
当存在所述删除节点的平行节点时,所述平行节点中不存在条件语句。
在一个实施例中,所述检测模块13,具体用于:
若所述节点分析结果与所述预设匹配规则匹配,则所述SQL文件中存在整表删除的风险操作;
或者,
若所述节点分析结果与所述预设匹配规则不匹配,则所述SQL文件中不存在整表删除的风险操作。
本发明另一实施例提供一种SQL语句的风险检测***,如图5所示,***10包括:
一个或多个处理器110以及存储器120,图5中以一个处理器110为例进行介绍,处理器110和存储器120可以通过总线或者其他方式连接,图5中以通过总线连接为例。
处理器110用于完成***10的各种控制逻辑,其可以为通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、单片机、ARM(Acorn RISCMachine)或其它可编程逻辑器件、分立门或晶体管逻辑、分立的硬件组件或者这些部件的任何组合。还有,处理器110还可以是任何传统处理器、微处理器或状态机。处理器110也可以被实现为计算设备的组合,例如,DSP和微处理器的组合、多个微处理器、一个或多个微处理器结合DSP和/或任何其它这种配置。
存储器120作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,如本发明实施例中的SQL语句的风险检测方法对应的程序指令。处理器110通过运行存储在存储器120中的非易失性软件程序、指令以及单元,从而执行***10的各种功能应用以及数据处理,即实现上述方法实施例中的SQL语句的风险检测方法。
存储器120可以包括存储程序区和存储数据区,其中,存储程序区可存储操作***、至少一个功能所需要的应用程序;存储数据区可存储根据***10使用所创建的数据等。此外,存储器120可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器120可选包括相对于处理器110远程设置的存储器,这些远程存储器可以通过网络连接至***10。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
一个或者多个单元存储在存储器120中,当被一个或者多个处理器110执行时,执行上述任意方法实施例中的SQL语句的风险检测方法,例如,执行以上描述的图1中的方法步骤S100至步骤S300。
本发明实施例提供了一种非易失性计算机可读存储介质,计算机可读存储介质存储有计算机可执行指令,该计算机可执行指令被一个或多个处理器执行,例如,执行以上描述的图1中的方法步骤S100至步骤S300。
作为示例,非易失性存储介质能够包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦ROM(EEPROM)或闪速存储器。易失性存储器能够包括作为外部高速缓存存储器的随机存取存储器(RAM)。通过说明而非限制,RAM可以以诸如同步RAM(SRAM)、动态RAM、(DRAM)、同步DRAM(SDRAM)、双数据速率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、Synchlink DRAM(SLDRAM)以及直接Rambus(兰巴斯)RAM(DRRAM)之类的许多形式得到。本文中所描述的操作环境的所公开的存储器组件或存储器旨在包括这些和/或任何其他适合类型的存储器中的一个或多个。
综上,本发明公开的一种SQL语句的风险检测方法、装置、***及介质中,方法通过获取待检测的SQL文件;对所述待检测的SQL文件进行节点分析,将节点分析结果与预设匹配规则进行匹配;根据所述节点分析结果与所述预设匹配规则是否匹配,确认所述SQL文件中是否存在整表删除的风险操作。通过对待检测的SQL文件进行节点分析,并将节点分析结果与预设匹配规则进行自动匹配检测,可批量对多个项目代码进行自动的风险检测,以识别代码中是否存在整表删除的风险操作,提高了SQL语句的风险检测效率和准确性。
当然,本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关硬件(如处理器,控制器等)来完成,所述的计算机程序可存储于一非易失性计算机可读取的存储介质中,该计算机程序在执行时可包括如上述各方法实施例的流程。其中所述的存储介质可为存储器、磁碟、软盘、闪存、光存储器等。
应当理解的是,本发明的应用不限于上述的举例,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,所有这些改进和变换都应属于本发明所附权利要求的保护范围。

Claims (10)

1.一种SQL语句的风险检测方法,其特征在于,包括:
获取待检测的SQL文件;
对所述待检测的SQL文件进行节点分析,将节点分析结果与预设匹配规则进行匹配;
根据所述节点分析结果与所述预设匹配规则是否匹配,确认所述SQL文件中是否存在整表删除的风险操作。
2.根据权利要求1所述的SQL语句的风险检测方法,其特征在于,所述获取待检测的SQL文件,包括:
获取集成有SQL语句的源代码;
或者,
获取集成有SQL语句的配置文件。
3.根据权利要求2所述的SQL语句的风险检测方法,其特征在于,当获取集成有SQL语句的源代码时,所述对所述待检测的SQL文件进行节点分析,将节点分析结果与预设匹配规则进行匹配,包括:
对所述集成有SQL语句的源代码构建抽象语法树;
分析所述抽象语法树的结构,获取所述抽象语法树中的变量节点;
对所述变量节点中的字符串进行标准转换处理;
将经标准转换处理后的字符串与预设匹配规则进行匹配。
4.根据权利要求3所述的SQL语句的风险检测方法,其特征在于,所述预设匹配规则包括:
所述变量节点中包括存在删除语句且不存在条件语句的风险节点;
以及,
当存在所述风险节点的平行节点时,所述平行节点中不存在条件语句。
5.根据权利要求2所述的SQL语句的风险检测方法,其特征在于,当获取集成有SQL语句的配置文件时,所述对所述待检测的SQL文件进行节点分析,将节点分析结果与预设匹配规则进行匹配,包括:
获取所述集成有SQL语句的配置文件中的节点信息;
将所述节点信息与预设匹配规则进行匹配。
6.根据权利要求5所述的SQL语句的风险检测方法,其特征在于,所述预设匹配规则包括:
所述节点信息中存在删除节点且所述删除节点中不存在条件语句;
以及,
当存在所述删除节点的平行节点时,所述平行节点中不存在条件语句。
7.根据权利要求1所述的SQL语句的风险检测方法,其特征在于,所述根据所述节点分析结果与所述预设匹配规则是否匹配,确认所述SQL文件中是否存在整表删除的风险操作,具体包括:
若所述节点分析结果与所述预设匹配规则匹配,则所述SQL文件中存在整表删除的风险操作;
或者,
若所述节点分析结果与所述预设匹配规则不匹配,则所述SQL文件中不存在整表删除的风险操作。
8.一种SQL语句的风险检测装置,其特征在于,包括:
获取模块,用于获取待检测的SQL文件;
分析匹配模块,用于对所述待检测的SQL文件进行节点分析,将节点分析结果与预设匹配规则进行匹配;
检测模块,用于根据所述节点分析结果与所述预设匹配规则是否匹配,确认所述SQL文件中是否存在整表删除的风险操作。
9.一种SQL语句的风险检测***,其特征在于,所述***包括至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-7任一项所述的SQL语句的风险检测方法。
10.一种非易失性计算机可读存储介质,其特征在于,所述非易失性计算机可读存储介质存储有计算机可执行指令,该计算机可执行指令被一个或多个处理器执行时,可使得所述一个或多个处理器执行权利要求1-7任一项所述的SQL语句的风险检测方法。
CN202210783536.XA 2022-06-27 2022-06-27 一种sql语句的风险检测方法、装置、***及介质 Pending CN115129598A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210783536.XA CN115129598A (zh) 2022-06-27 2022-06-27 一种sql语句的风险检测方法、装置、***及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210783536.XA CN115129598A (zh) 2022-06-27 2022-06-27 一种sql语句的风险检测方法、装置、***及介质

Publications (1)

Publication Number Publication Date
CN115129598A true CN115129598A (zh) 2022-09-30

Family

ID=83381127

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210783536.XA Pending CN115129598A (zh) 2022-06-27 2022-06-27 一种sql语句的风险检测方法、装置、***及介质

Country Status (1)

Country Link
CN (1) CN115129598A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117453578A (zh) * 2023-12-25 2024-01-26 杭州云动智能汽车技术有限公司 一种nmea语句检测方法、装置、电子设备及存储介质

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117453578A (zh) * 2023-12-25 2024-01-26 杭州云动智能汽车技术有限公司 一种nmea语句检测方法、装置、电子设备及存储介质
CN117453578B (zh) * 2023-12-25 2024-04-19 杭州云动智能汽车技术有限公司 一种nmea语句检测方法、装置、电子设备及存储介质

Similar Documents

Publication Publication Date Title
CN106951228B (zh) 版本迭代中差异的处理方法和装置
CN112181489B (zh) 代码迁移方法、装置、计算机设备及存储介质
CN111078568B (zh) 代码规范方法、装置、计算机设备和存储介质
CN112559354A (zh) 前端代码规范检测方法、装置、计算机设备及存储介质
CN111258563A (zh) 一种接口文档的生成方法、装置、存储介质及电子设备
CN112860265B (zh) 一种源代码数据库操作异常检测方法及装置
CN111984659B (zh) 数据更新方法、装置、计算机设备和存储介质
CN114579969A (zh) 漏洞检测方法、装置、电子设备及存储介质
CN112988595A (zh) 动态同步测试方法、装置、设备及存储介质
CN115129598A (zh) 一种sql语句的风险检测方法、装置、***及介质
CN110716804A (zh) 无用资源的自动删除方法、装置、存储介质及电子设备
CN112527315A (zh) 编程语言函数自动转化方法、装置、计算机设备及介质
US9747085B2 (en) Source code generation from prototype source
CN115794858A (zh) 查询语句处理方法、装置、设备及存储介质
CN115951916A (zh) 一种组件的处理方法、装置、电子设备及存储介质
CN112003837B (zh) 基于Modbus协议的设备智能适配方法、装置及存储介质
CN114625372A (zh) 组件自动编译方法、装置、计算机设备及存储介质
CN113050987A (zh) 一种接口文档的生成方法、装置、存储介质及电子设备
CN114647439A (zh) 一种代码扫描的方法、代码迁移的方法及相关装置
CN113138767A (zh) 代码语言转换方法、装置、电子设备及存储介质
CN112130860A (zh) Json对象解析方法、装置、电子设备及存储介质
CN116680311A (zh) 一种映射关系查找方法、装置、电子设备及存储介质
CN117130618B (zh) 智能卡可执行文件的增量编译方法、装置、设备
CN116719731A (zh) 一种复杂sql语句检测方法、装置、***及介质
CN116644087A (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