CN117056347A - Sql语句永真式注入检测方法、装置、计算机设备及存储介质 - Google Patents

Sql语句永真式注入检测方法、装置、计算机设备及存储介质 Download PDF

Info

Publication number
CN117056347A
CN117056347A CN202310926149.1A CN202310926149A CN117056347A CN 117056347 A CN117056347 A CN 117056347A CN 202310926149 A CN202310926149 A CN 202310926149A CN 117056347 A CN117056347 A CN 117056347A
Authority
CN
China
Prior art keywords
sql
expression
grammar
injection
forever
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
CN202310926149.1A
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.)
Hangzhou Meichuang Technology Co ltd
Original Assignee
Hangzhou Meichuang Technology 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 Hangzhou Meichuang Technology Co ltd filed Critical Hangzhou Meichuang Technology Co ltd
Priority to CN202310926149.1A priority Critical patent/CN117056347A/zh
Publication of CN117056347A publication Critical patent/CN117056347A/zh
Pending legal-status Critical Current

Links

Classifications

    • 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
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/205Parsing
    • G06F40/211Syntactic parsing, e.g. based on context-free grammar [CFG] or unification grammars
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Linguistics (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Mathematical Physics (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • General Health & Medical Sciences (AREA)
  • Stored Programmes (AREA)

Abstract

本发明实施例公开了SQL语句永真式注入检测方法、装置、计算机设备及存储介质。所述方法包括:获取用户输入参数,以形成SQL语句;对所述SQL语句进行词法语法分析,并构建抽象语法树;根据所述抽象语法树确定条件表达式类型,并计算表达式结果;判断所述表达式结果是否是OR表达式且永真;若所述表达式结果是OR表达式且永真,则确定SQL语句为SQL永真式注入语句。通过实施本发明实施例的方法可判断出复杂运算下的永真表达式,提高漏洞检出率,降低永真注入的风险,实现无需安装插件,无需复杂配置地识别SQL永真式注入。

Description

SQL语句永真式注入检测方法、装置、计算机设备及存储介质
技术领域
本发明涉及数据安全,更具体地说是指SQL语句永真式注入检测方法、装置、计算机设备及存储介质。
背景技术
Web应用程序是目前互联网时代下最常见且便捷使用的应用程序,一般是B/S模式,通过浏览器即可访问。Web应用程序的核心之一就是对数据库的处理,页面操作在后端代码中通过具体的SQL语句实现。
SQL注入是web应用中最常见也最具风险的漏洞之一。通常是由于Web应用程序在代码编写中未对用户的输入做有效的过滤和限制,导致攻击者可利用页面输入将危险SQL作为参数注入到后端预设的执行SQL中,使服务器错误执行了不被允许的SQL,可对数据库做增删改等危险操作,或是获得不可公开的数据。典型的SQL注入方式是通过插入一个OR永真式来绕过原定的条件判断。即如何判别语句中存在OR永真式,是防范SQL注入的关键,识别OR注入的传统方式是:通过正则表达式匹配永真式,通过反向引用来检测等号两边的内容是否一致,正则表达式为\b(or\s+)([.\d]+)(\s*=\s*)(\2)\b,但是正则表达式无法匹配复杂的永真式,比如数值四则运算结果进行比较:1+2<=2+3,以及更复杂的函数运算:sin(1)+cos(2)+tan(3)!=sin(2)+cos(3)+tan(4)。
因此,有必要设计一种新的方法,实现无需安装插件,无需复杂配置地识别SQL永真式注入。
发明内容
本发明的目的在于克服现有技术的缺陷,提供SQL语句永真式注入检测方法、装置、计算机设备及存储介质。
为实现上述目的,本发明采用以下技术方案:SQL语句永真式注入检测方法,包括:
获取用户输入参数,以形成SQL语句;
对所述SQL语句进行词法语法分析,并构建抽象语法树;
根据所述抽象语法树确定条件表达式类型,并计算表达式结果;
判断所述表达式结果是否是OR表达式且永真;
若所述表达式结果是OR表达式且永真,则确定SQL语句为SQL永真式注入语句。
其进一步技术方案为:所述获取用户输入参数,以形成SQL语句,包括:
获取用户输入参数,并将所述用户输入参数与代码中内置SQL拼接,以得到SQL语句。
其进一步技术方案为:所述对所述SQL语句进行词法语法分析,并构建抽象语法树,包括:
对所述SQL语句进行词法分析,以得到单词列表;
遍历所述单词列表,基于SQL语法根据单词不同的属性对所述单词列表进行封装,将相互关联的模块组合成相应语法对象,根据语法对象的先后顺序构建出有层级关系的树型结构,以得到抽象语法树。
其进一步技术方案为:所述对所述SQL语句进行词法分析,以得到单词列表,包括:
将所述SQL语句分割成若干个模块,并为各个模块添加上关键字、标识符相关属性,以构建单词列表。
其进一步技术方案为:所述根据所述抽象语法树确定条件表达式类型,并计算表达式结果,包括:
遍历抽象语法树,根据封装的语法对象类型,提取其中代表OR表达式的对象,以确定表达式的内容及表达式所在的节点位置,以得到OR表达式信息;
确定所述OR表达式信息下各个节点的算式信息,并计算四则运费结果,以得到表达式结果。
本发明还提供了SQL语句永真式注入检测装置,包括:
获取单元,用于获取用户输入参数,以形成SQL语句;
分析单元,用于对所述SQL语句进行词法语法分析,并构建抽象语法树;
计算单元,用于根据所述抽象语法树确定条件表达式类型,并计算表达式结果;
判断单元,用于判断所述表达式结果是否是OR表达式且永真;
第一确定单元,用于若所述表达式结果是OR表达式且永真,则确定SQL语句为SQL永真式注入语句。
其进一步技术方案为:所述获取单元,用于获取用户输入参数,并将所述用户输入参数与代码中内置SQL拼接,以得到SQL语句。
其进一步技术方案为:所述分析单元包括:
词法分析子单元,用于对所述SQL语句进行词法分析,以得到单词列表;
树构建子单元,用于遍历所述单词列表,基于SQL语法根据单词不同的属性对所述单词列表进行封装,将相互关联的模块组合成相应语法对象,根据语法对象的先后顺序构建出有层级关系的树型结构,以得到抽象语法树。
本发明还提供了一种计算机设备,所述计算机设备包括存储器及处理器,所述存储器上存储有计算机程序,所述处理器执行所述计算机程序时实现上述的方法。
本发明还提供了一种存储介质,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述的方法。
本发明与现有技术相比的有益效果是:本发明通过对用户输入参数构成的SQL语句进行词法语法分析,并构建抽象语法树,通过该语法树定位条件表达式出现位置,再进行针对性的计算验证。相比传统正则只能做简单计算,可判断出复杂运算下的永真表达式,提高漏洞检出率,降低永真注入的风险,实现无需安装插件,无需复杂配置地识别SQL永真式注入。
下面结合附图和具体实施例对本发明作进一步描述。
附图说明
为了更清楚地说明本发明实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的SQL语句永真式注入检测方法的应用场景示意图;
图2为本发明实施例提供的SQL语句永真式注入检测方法的流程示意图;
图3为本发明实施例提供的SQL语句永真式注入检测方法的子流程示意图;
图4为本发明实施例提供的SQL语句永真式注入检测方法的子流程示意图;
图5为本发明实施例提供的抽象语法树的示意图;
图6为本发明实施例提供的SQL语句永真式注入检测装置的示意性框图;
图7为本发明实施例提供的SQL语句永真式注入检测装置的分析单元的示意性框图;
图8为本发明实施例提供的SQL语句永真式注入检测装置的计算单元的示意性框图;
图9为本发明实施例提供的计算机设备的示意性框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本发明说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本发明。如在本发明说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
还应当进一步理解,在本发明说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
请参阅图1和图2,图1为本发明实施例提供的SQL语句永真式注入检测方法的应用场景示意图。图2为本发明实施例提供的SQL语句永真式注入检测方法的示意性流程图。该SQL语句永真式注入检测方法应用于服务器中。该服务器与终端进行数据交互,通过从终端获取用户输入参数之后,形成SQL语句,并根据该语句构建抽象语法树,由此计算SQL的表达式,根据表达式确定SQL语句是否是SQL永真式注入语句,实现无需安装插件,无需复杂配置地识别SQL永真式注入。
图2是本发明实施例提供的SQL语句永真式注入检测方法的流程示意图。如图2所示,该方法包括以下步骤S110至S160。
S110、获取用户输入参数,以形成SQL语句。
在本实施例中,SQL语句是指终端查询的语句。
具体地,获取用户输入参数,并将所述用户输入参数与代码中内置SQL拼接,以得到SQL语句。
S120、对所述SQL语句进行词法语法分析,并构建抽象语法树。
在本实施例中,抽象语法树是指SQL语句构成的有层级关系的树型结构,如图5所示。
在一实施例中,请参阅图3,上述的步骤S120可包括步骤S121~S122。
S121、对所述SQL语句进行词法分析,以得到单词列表。
在本实施例中,单词列表是指SQl语句拆分成若干个单词,且这些单词标记对应的属性后构成的列表。
具体地,将所述SQL语句分割成若干个模块,并为各个模块添加上关键字、标识符相关属性,以构建单词列表。
在本实施例中,根据SQL语句的基本关键字:“SELECT”、“CREATE”等,有差异的针对各数据库特殊关键字:“UPSERT”,“REPLACE”等,以及各类符号:分号,引号,运算符等,将传入SQL分割成数个基本模块,并为各个模块添加上“关键字”、“标识符”等相关属性,最后构建出一组单词模块列表。
S122、遍历所述单词列表,基于SQL语法根据单词不同的属性对所述单词列表进行封装,将相互关联的模块组合成相应语法对象,根据语法对象的先后顺序构建出有层级关系的树型结构,以得到抽象语法树。
具体地,遍历所述单词模块列表,识别单词模块属性,如若此模块为“关键字”,进一步判断是否为基本操作关键字,如“SELECT“,则可关联到SELECT语法内置的类,构建该类。每一个SQL语法都有其固定的结构,包含一系列该语法必出现或可能出现的相关关键词,如”SELECT“中的”FROM“和”WHERE“等。以其顺序、位置以及上下文信息为基本逻辑进行语法解析。往下遍历单词模块列表,根据上述逻辑,可得到对应位置的单词模块所代表的数据信息,如表、列,或触发新操作关键字。不同的信息类型封装为对应的类存储携带的内容。将这些封装后的信息保存到上述构建的类的对应字段中。由此可得到一个有层级关系的树型结构,得到抽象语法树。
S130、根据所述抽象语法树确定条件表达式类型,并计算表达式结果。
在本实施例中,条件表达式类型是指OR表达式该类型;表达式结构是指四则运费结果。
在一实施例中,请参阅图4,上述的步骤S130可包括步骤S131~S132。
S131、遍历抽象语法树,根据封装的语法对象类型,提取其中代表OR表达式的对象,以确定表达式的内容及表达式所在的节点位置,以得到OR表达式信息;
具体地,遍历抽象语法树,提取节点中的类,通过类属性可得其在一句SQL语句中对应的位置。可判断出是否可能存在引起风险的OR表格式。如一句简单的“SELECTa FROM bWHERE c;“查询操作中,依次提取a,b,c节点封装的信息,通过该节点所处位置和类型判断是否需进一步往下遍历其节点。如若b是简单字段封装了表名,则无需再向下遍历;若b是一个嵌套SELECT属性子节点,则需进入该节点继续判断,若该子节点的WHERE节点中存在OR表达式对象,定位此节点位置,即得到OR表达式信息。
在本实施例中,OR表达信息是指OR表达式的内容及表达式所在的节点位置。
S132、确定所述OR表达式信息下各个节点的算式信息,并计算四则运费结果,以得到表达式结果。
在本实施例中,由于语法对象本身为多个带有属性的单词模块构成,可以通过单词模块的属性识别表达式运算符号,常量数字,或是另一个表达式,即能获取到该表达式下各个节点的算式信息,可计算获得四则运费结果。
在本实施例中,由于语法对象本身为多个带有属性的单词模块构成,提取到的OR表达式节点中带有完整的数据,包含OR左右两边信息,属性可能为数字,字符串或一个表达式等,存储在OR节点的子节点中。依次提取左右节点信息,根据属性做出不同处理,例如若为常量则取值,若为算术表达式则取其节点中数据和运算符进行计算,若为数据库函数则依据定义取其参数计算。最终得到左右节点的计算结果。
S140、判断所述表达式结果是否是OR表达式且永真;
S150、若所述表达式结果是OR表达式且永真,则确定SQL语句为SQL永真式注入语句。
S160、若所述表达式结果不是OR表达式或不是永真,则确定SQL语句不是SQL永真式注入语句。
在本实施例中,除了表达式结果不是OR表达式或不是永真的情况,还包括词法语法分析不成功,都可以确定SQL语句不是SQL永真式注入语句
举个例子:用户做一次查询操作,在web应用程序中进行登录,输入用户名:andy,密码:xxx'OR sin(1)+cos(2)+tan(3)!=sin(2)+cos(3)+tan(4)--;点击查询后,服务器获得一条查询SQL语句:SELECT user_id FROM user WHERE user_name='andy'ANDpassword='xxx'OR sin(1)+cos(2)+tan(3)!=sin(2)+cos(3)+tan(4)--';“OR”之后为风险注入内容;进行语法分析,生成抽象语法树。定位OR运算符节点位置,获取表达式内容如图5所示;根据各子节点表达式属性进行分析和处理。如:若左右两边都为常量则判定为运算等式可进行计算。得到运算结果,若仍是表达式,向下遍历。若是变量/字段,不可计算;该例中,可计算部分为sin(1)+cos(2)+tan(3)!=sin(2)+cos(3)+tan(4)。计算后可得左右两边不等,该表达式永真;已知OR运算符,且含有永真式,可判定为存在SQL永真注入。
上述的SQl语句永真式注入检测方法,通过对用户输入参数构成的SQL语句进行词法语法分析,并构建抽象语法树,通过该语法树定位条件表达式出现位置,再进行针对性的计算验证。相比传统正则只能做简单计算,可判断出复杂运算下的永真表达式,提高漏洞检出率,降低永真注入的风险,实现无需安装插件,无需复杂配置地识别SQL永真式注入。
图6是本发明实施例提供的一种SQL语句永真式注入检测装置300的示意性框图。如图6所示,对应于以上SQL语句永真式注入检测方法,本发明还提供一种SQL语句永真式注入检测装置300。该SQL语句永真式注入检测装置300包括用于执行上述SQL语句永真式注入检测方法的单元,该装置可以被配置于服务器中。具体地,请参阅图6,该SQL语句永真式注入检测装置300包括获取单元301、分析单元302、计算单元303、判断单元304、第一确定单元305以及第二确定单元306。
获取单元301,用于获取用户输入参数,以形成SQL语句;分析单元302,用于对所述SQL语句进行词法语法分析,并构建抽象语法树;计算单元303,用于根据所述抽象语法树确定条件表达式类型,并计算表达式结果;判断单元304,用于判断所述表达式结果是否是OR表达式且永真;第一确定单元305,用于若所述表达式结果是OR表达式且永真,则确定SQL语句为SQL永真式注入语句。第二确定单元306,用于若所述表达式结果不是OR表达式或不是永真,则确定SQL语句不是SQL永真式注入语句。
在一实施例中,所述获取单元301,用于获取用户输入参数,并将所述用户输入参数与代码中内置SQL拼接,以得到SQL语句。
在一实施例中,如图7所示,所述分析单元302包括词法分析子单元3021以及树构建子单元3022。
词法分析子单元3021,用于对所述SQL语句进行词法分析,以得到单词列表;树构建子单元3022,用于遍历所述单词列表,基于SQL语法根据单词不同的属性对所述单词列表进行封装,将相互关联的模块组合成相应语法对象,根据语法对象的先后顺序构建出有层级关系的树型结构,以得到抽象语法树。
在一实施例中,词法分析子单元3021,用于将所述SQL语句分割成若干个模块,并为各个模块添加上关键字、标识符相关属性,以构建单词列表。
在一实施例中,如图8所示,所述计算单元303包括表达式确定子单元3031以及表达式计算子单元3032。
表达式确定子单元3031,用于遍历抽象语法树,根据封装的语法对象类型,提取其中代表OR表达式的对象,以确定表达式的内容及表达式所在的节点位置,以得到OR表达式信息;表达式计算子单元3032,用于确定所述OR表达式信息下各个节点的算式信息,并计算四则运费结果,以得到表达式结果。
需要说明的是,所属领域的技术人员可以清楚地了解到,上述SQL语句永真式注入检测装置300和各单元的具体实现过程,可以参考前述方法实施例中的相应描述,为了描述的方便和简洁,在此不再赘述。
上述SQL语句永真式注入检测装置300可以实现为一种计算机程序的形式,该计算机程序可以在如图9所示的计算机设备上运行。
请参阅图9,图9是本申请实施例提供的一种计算机设备的示意性框图。该计算机设备500可以是服务器,其中,服务器可以是独立的服务器,也可以是多个服务器组成的服务器集群。
参阅图9,该计算机设备500包括通过系统总线501连接的处理器502、存储器和网络接口505,其中,存储器可以包括非易失性存储介质503和内存储器504。
该非易失性存储介质503可存储操作系统5031和计算机程序5032。该计算机程序5032包括程序指令,该程序指令被执行时,可使得处理器502执行一种SQL语句永真式注入检测方法。
该处理器502用于提供计算和控制能力,以支撑整个计算机设备500的运行。
该内存储器504为非易失性存储介质503中的计算机程序5032的运行提供环境,该计算机程序5032被处理器502执行时,可使得处理器502执行一种SQL语句永真式注入检测方法。
该网络接口505用于与其它设备进行网络通信。本领域技术人员可以理解,图9中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备500的限定,具体的计算机设备500可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
其中,所述处理器502用于运行存储在存储器中的计算机程序5032,以实现如下步骤:
获取用户输入参数,以形成SQL语句;对所述SQL语句进行词法语法分析,并构建抽象语法树;根据所述抽象语法树确定条件表达式类型,并计算表达式结果;判断所述表达式结果是否是OR表达式且永真;若所述表达式结果是OR表达式且永真,则确定SQL语句为SQL永真式注入语句。
在一实施例中,处理器502在实现所述获取用户输入参数,以形成SQL语句步骤时,具体实现如下步骤:
获取用户输入参数,并将所述用户输入参数与代码中内置SQL拼接,以得到SQL语句。
在一实施例中,处理器502在实现所述对所述SQL语句进行词法语法分析,并构建抽象语法树步骤时,具体实现如下步骤:
对所述SQL语句进行词法分析,以得到单词列表;遍历所述单词列表,基于SQL语法根据单词不同的属性对所述单词列表进行封装,将相互关联的模块组合成相应语法对象,根据语法对象的先后顺序构建出有层级关系的树型结构,以得到抽象语法树。
在一实施例中,处理器502在实现所述对所述SQL语句进行词法分析,以得到单词列表步骤时,具体实现如下步骤:
将所述SQL语句分割成若干个模块,并为各个模块添加上关键字、标识符相关属性,以构建单词列表。
在一实施例中,处理器502在实现所述根据所述抽象语法树确定条件表达式类型,并计算表达式结果步骤时,具体实现如下步骤:
遍历抽象语法树,根据封装的语法对象类型,提取其中代表OR表达式的对象,以确定表达式的内容及表达式所在的节点位置,以得到OR表达式信息;确定所述OR表达式信息下各个节点的算式信息,并计算四则运费结果,以得到表达式结果。
应当理解,在本申请实施例中,处理器502可以是中央处理单元(CentralProcessing Unit,CPU),该处理器502还可以是其他通用处理器、数字信号处理器(DigitalSignal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。其中,通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
本领域普通技术人员可以理解的是实现上述实施例的方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成。该计算机程序包括程序指令,计算机程序可存储于一存储介质中,该存储介质为计算机可读存储介质。该程序指令被该计算机系统中的至少一个处理器执行,以实现上述方法的实施例的流程步骤。
因此,本发明还提供一种存储介质。该存储介质可以为计算机可读存储介质。该存储介质存储有计算机程序,其中该计算机程序被处理器执行时使处理器执行如下步骤:
获取用户输入参数,以形成SQL语句;对所述SQL语句进行词法语法分析,并构建抽象语法树;根据所述抽象语法树确定条件表达式类型,并计算表达式结果;判断所述表达式结果是否是OR表达式且永真;若所述表达式结果是OR表达式且永真,则确定SQL语句为SQL永真式注入语句。
在一实施例中,所述处理器在执行所述计算机程序而实现所述获取用户输入参数,以形成SQL语句步骤时,具体实现如下步骤:
获取用户输入参数,并将所述用户输入参数与代码中内置SQL拼接,以得到SQL语句。
在一实施例中,所述处理器在执行所述计算机程序而实现所述对所述SQL语句进行词法语法分析,并构建抽象语法树步骤时,具体实现如下步骤:
对所述SQL语句进行词法分析,以得到单词列表;遍历所述单词列表,基于SQL语法根据单词不同的属性对所述单词列表进行封装,将相互关联的模块组合成相应语法对象,根据语法对象的先后顺序构建出有层级关系的树型结构,以得到抽象语法树。
在一实施例中,所述处理器在执行所述计算机程序而实现所述对所述SQL语句进行词法分析,以得到单词列表步骤时,具体实现如下步骤:
将所述SQL语句分割成若干个模块,并为各个模块添加上关键字、标识符相关属性,以构建单词列表。
在一实施例中,所述处理器在执行所述计算机程序而实现所述根据所述抽象语法树确定条件表达式类型,并计算表达式结果步骤时,具体实现如下步骤:
遍历抽象语法树,根据封装的语法对象类型,提取其中代表OR表达式的对象,以确定表达式的内容及表达式所在的节点位置,以得到OR表达式信息;确定所述OR表达式信息下各个节点的算式信息,并计算四则运费结果,以得到表达式结果。
所述存储介质可以是U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、磁碟或者光盘等各种可以存储程序代码的计算机可读存储介质。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的。例如,各个单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。
本发明实施例方法中的步骤可以根据实际需要进行顺序调整、合并和删减。本发明实施例装置中的单元可以根据实际需要进行合并、划分和删减。另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。
该集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,终端,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

Claims (10)

1.SQL语句永真式注入检测方法,其特征在于,包括:
获取用户输入参数,以形成SQL语句;
对所述SQL语句进行词法语法分析,并构建抽象语法树;
根据所述抽象语法树确定条件表达式类型,并计算表达式结果;
判断所述表达式结果是否是OR表达式且永真;
若所述表达式结果是OR表达式且永真,则确定SQL语句为SQL永真式注入语句。
2.根据权利要求1所述的SQL语句永真式注入检测方法,其特征在于,所述获取用户输入参数,以形成SQL语句,包括:
获取用户输入参数,并将所述用户输入参数与代码中内置SQL拼接,以得到SQL语句。
3.根据权利要求1所述的SQL语句永真式注入检测方法,其特征在于,所述对所述SQL语句进行词法语法分析,并构建抽象语法树,包括:
对所述SQL语句进行词法分析,以得到单词列表;
遍历所述单词列表,基于SQL语法根据单词不同的属性对所述单词列表进行封装,将相互关联的模块组合成相应语法对象,根据语法对象的先后顺序构建出有层级关系的树型结构,以得到抽象语法树。
4.根据权利要求3所述的SQL语句永真式注入检测方法,其特征在于,所述对所述SQL语句进行词法分析,以得到单词列表,包括:
将所述SQL语句分割成若干个模块,并为各个模块添加上关键字、标识符相关属性,以构建单词列表。
5.根据权利要求1所述的SQL语句永真式注入检测方法,其特征在于,所述根据所述抽象语法树确定条件表达式类型,并计算表达式结果,包括:
遍历抽象语法树,根据封装的语法对象类型,提取其中代表OR表达式的对象,以确定表达式的内容及表达式所在的节点位置,以得到OR表达式信息;
确定所述OR表达式信息下各个节点的算式信息,并计算四则运费结果,以得到表达式结果。
6.SQL语句永真式注入检测装置,其特征在于,包括:
获取单元,用于获取用户输入参数,以形成SQL语句;
分析单元,用于对所述SQL语句进行词法语法分析,并构建抽象语法树;
计算单元,用于根据所述抽象语法树确定条件表达式类型,并计算表达式结果;
判断单元,用于判断所述表达式结果是否是OR表达式且永真;
第一确定单元,用于若所述表达式结果是OR表达式且永真,则确定SQL语句为SQL永真式注入语句。
7.根据权利要求6所述的SQL语句永真式注入检测装置,其特征在于,所述获取单元,用于获取用户输入参数,并将所述用户输入参数与代码中内置SQL拼接,以得到SQL语句。
8.根据权利要求6所述的SQL语句永真式注入检测装置,其特征在于,所述分析单元包括:
词法分析子单元,用于对所述SQL语句进行词法分析,以得到单词列表;
树构建子单元,用于遍历所述单词列表,基于SQL语法根据单词不同的属性对所述单词列表进行封装,将相互关联的模块组合成相应语法对象,根据语法对象的先后顺序构建出有层级关系的树型结构,以得到抽象语法树。
9.一种计算机设备,其特征在于,所述计算机设备包括存储器及处理器,所述存储器上存储有计算机程序,所述处理器执行所述计算机程序时实现如权利要求1至5中任一项所述的方法。
10.一种存储介质,其特征在于,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至5中任一项所述的方法。
CN202310926149.1A 2023-07-26 2023-07-26 Sql语句永真式注入检测方法、装置、计算机设备及存储介质 Pending CN117056347A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310926149.1A CN117056347A (zh) 2023-07-26 2023-07-26 Sql语句永真式注入检测方法、装置、计算机设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310926149.1A CN117056347A (zh) 2023-07-26 2023-07-26 Sql语句永真式注入检测方法、装置、计算机设备及存储介质

Publications (1)

Publication Number Publication Date
CN117056347A true CN117056347A (zh) 2023-11-14

Family

ID=88659931

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310926149.1A Pending CN117056347A (zh) 2023-07-26 2023-07-26 Sql语句永真式注入检测方法、装置、计算机设备及存储介质

Country Status (1)

Country Link
CN (1) CN117056347A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN118012673A (zh) * 2024-04-08 2024-05-10 杭州美创科技股份有限公司 数据库数据资产保护方法、装置、计算机设备及存储介质

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN118012673A (zh) * 2024-04-08 2024-05-10 杭州美创科技股份有限公司 数据库数据资产保护方法、装置、计算机设备及存储介质

Similar Documents

Publication Publication Date Title
CN109426722B (zh) Sql注入缺陷检测方法、系统、设备及存储介质
CN107292170B (zh) Sql注入攻击的检测方法及装置、系统
US10545999B2 (en) Building features and indexing for knowledge-based matching
CN107844705B (zh) 基于二进制代码特征的第三方组件漏洞检测方法
CN110427754B (zh) 网络应用攻击检测方法、装置、设备及存储介质
US8892580B2 (en) Transformation of regular expressions
US7725466B2 (en) High accuracy document information-element vector encoding server
US20080320031A1 (en) Method and device for analyzing an expression to evaluate
CN110581864B (zh) 一种sql注入攻击的检测方法及装置
US9311058B2 (en) Jabba language
JP2020126641A (ja) Apiマッシュアップ探査及びリコメンデーション
CN112035508A (zh) 基于sql在线元数据解析的方法及系统、设备
CN117056347A (zh) Sql语句永真式注入检测方法、装置、计算机设备及存储介质
CN113961930A (zh) Sql注入漏洞检测方法、装置及电子设备
CN110096599A (zh) 知识图谱的生成方法及装置
CN115269427A (zh) 针对web注入漏洞的中间语言表示方法及系统
US9600644B2 (en) Method, a computer program and apparatus for analyzing symbols in a computer
US10025936B2 (en) Systems and methods for SQL value evaluation to detect evaluation flaws
US10789067B2 (en) System and method for identifying open source usage
WO2017049254A1 (en) Systems and methods for sql type and/or value evaluation to detect evaluation flaws
CN115801456B (zh) 网络攻击检测方法、装置、电子设备及存储介质
CN116756341A (zh) 基于多源漏洞数据的完备知识图谱构建方法
Jin et al. Intelligent Screening and Mining Technology of Software Vulnerability Programs in Power Internet of Things Terminals
Li Automatically Generating Searchable Fingerprints For WordPress Plugins Using Static Program Analysis
CN114281696A (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