SQL注入拦截检测方法、装置、设备及计算机可读介质与流程

文档序号:15455352发布日期:2018-09-15 00:57阅读:282来源:国知局

本发明涉及网络安全技术领域,尤其涉及一种sql注入拦截检测方法及装置、设备和计算机可读介质。



背景技术:

目前互联网企业面临大量的黑客攻击,其中相当大的比例是sql注入攻击。

目前的sql(structuredquerylanguage,结构化查询语言)注入拦截主要是靠waf(webapplicationfirewall,网站应用级入侵防御系统)进行拦截。waf中利用正则进行拦截和检测,然而由于很多复杂情况难以描述,因此正则规则单纯基于文本特性的误报率高。



技术实现要素:

本发明实施例提供一种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指令中的sql语句解析成语法树结构;

拦截子模块,用于判断该语法树结构是否与黑名单中的语法树的特征匹配;若是,则进行拦截。

结合第二方面,本发明在第二方面的第二种实施方式中,所述分析模块包括:

向量生成子模块,用于将接收的sql指令根据语法规则生成向量;

相似度计算子模块,用于计算接收的sql指令的向量与恶意sql指令的向量样本的相似度;若相似度达到设定阈值,则判定接收的sql指令为恶意指令。

结合第二方面或第二方面的任意一种实施方式,本发明在第二方面的第三种实施方式中,还包括:黑名单更新模块,用于当所述分析模型判定接收的sql指令为恶意指令时,根据所述接收的sql指令在黑名单中增加恶意sql指令的语法结构规则。

所述装置的功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的模块。

在一个可能的设计中,sql注入拦截检测装置的结构中包括处理器和存储器,所述存储器用于存储支持sql注入拦截检测装置执行上述第一方面中sql注入拦截检测方法的程序,所述处理器被配置为用于执行所述存储器中存储的程序。所述sql注入拦截检测装置还可以包括通信接口,用于sql注入拦截检测装置与其他设备或通信网络通信。

第三方面,本发明实施例提供了一种计算机可读介质,用于存储sql注入拦截检测装置所用的计算机软件指令,其包括用于执行上述第一方面的sql注入拦截检测方法所涉及的程序。

本发明实施例结合了在线检测和离线分析两种方式,可以对入侵的恶意sql命令进行拦截,还可以通过离线分析发现并补充规则的漏洞。

上述概述仅仅是为了说明书的目的,并不意图以任何方式进行限制。除上述描述的示意性的方面、实施方式和特征之外,通过参考附图和以下的详细描述,本发明进一步的方面、实施方式和特征将会是容易明白的。

附图说明

在附图中,除非另外规定,否则贯穿多个附图相同的附图标记表示相同或相似的部件或元素。这些附图不一定是按照比例绘制的。应该理解,这些附图仅描绘了根据本发明公开的一些实施方式,而不应将其视为是对本发明范围的限制。

图1为本发明一实施例的sql注入拦截检测方法的流程图;

图2为本发明一实施例的步骤s110的流程图;

图3为本发明一实施例的步骤s120的流程图;

图4为本发明一实施例的sql注入拦截检测方法的应用示意图;

图5为本发明另一实施例的sql注入拦截检测装置的框图;

图6为本发明一实施例的sql注入拦截检测设备的框图。

具体实施方式

在下文中,仅简单地描述了某些示例性实施例。正如本领域技术人员可认识到的那样,在不脱离本发明的精神或范围的情况下,可通过各种不同方式修改所描述的实施例。因此,附图和描述被认为本质上是示例性的而非限制性的。本发明实施例主要提供了一种通sql注入拦截检测的方法及装置,下面分别通过以下实施例进行技术方案的展开描述。

请参阅图1,其为本发明实施例一的sql注入拦截检测方法的流程图。本实施例一提供了一种sql注入拦截检测方法,包括以下步骤:

s110:根据sql语法树规则对接收的sql指令进行检测,判断接收的sql指令是否为恶意指令。若是,可以对接收的sql指令进行拦截。

在本发明实施例中,sql语法树规则是一种sql转换规则,用于将sql指令转化为对应的语法结构。

s120:若接收的sql指令没有命中语法树规则,则通过分析模型对接收的sql指令进行分析,判断接收的sql指令是否为潜在恶意指令。

在一种可能的实现方式中,如图2所示,所述步骤s110中具体包括:

s111:将接收的sql指令中的sql语句解析成语法树结构。

例如,接收的sql语句为“select*fromt1whereid=‘4’like‘%”。将其解析为语法树结构为“const_fieldlikeconst_field”。

s112:判断该语法树结构是否与黑名单中的语法树的特征匹配;若是,则进行拦截。

例如,根据正常的sql语句,可以设定的规则:like操作符两边的子树不可以是常量。因此,将like两边的子树为常量的添加至黑名单中。依据这个规则,则接收的sql语句与黑名单中的语法树特征匹配,因此将其拦截。

所述的分析模型中可以存储大量的正确sql样本集合和恶意注入sql样本集合,通过分析接收的sql指令的相似度进行判断。

在一种可能的实现方式中,如图3所示,所述步骤s120中具体包括:

s121:将接收的sql指令根据语法规则生成向量。

sql指令可以按照yacc(yetanothercompilercompiler,生成语法分析器)语法定义文件中的语法规则为下标生成向量(vector)。比如sql语法文件中由1000条规则,则生成的向量的维度为1000维。

s122:计算接收的sql指令的向量与恶意sql指令的向量样本的相似度;若相似度达到设定阈值,则判定接收的sql指令为恶意指令。

在一个实施例中,所采用的相似度判断函数为欧式距离算法。比如,相似度阈值可设定为90%,若接收的sql语句的向量与恶意sql指令的向量样本的相似度达到该阈值,则初步判定为恶意指令,可以通过报警等方式提醒工作人员进行复查。

另外,作为本实施例的优选方式,还可以将接收的sql指令与正确sql样本指令进行相似度计算,然后再将两个相似度进行加权求和,获取一个最终的数值,通过判断该数值是否达到设定阈值来判断该sql指令是否为恶意指令。

在本实施例的检测方法中,还可以包括步骤s130:当所述分析模型判定接收的sql指令为恶意指令时,根据所述接收的sql指令在黑名单中增加恶意sql指令的语法结构规则。

如果判断为接收到的sql指令为恶意指令时,则此时可以根据该指令的语法结构对黑名单进行更新。

请参阅图4,其为本发明的拦截检测方法的应用示意图。本实施例通过数据库防火墙(dbproxy)对sql指令业务进行检测,判断是否为恶意指令。若是,则直接进行拦截。若否,则不进行拦截,然后再进行离线入侵检测。在检测时,通过sql注入库进行相似匹配,当相似度达到设定阈值时,则进行告警。然后,再通过智能运维监控系统(ark)对数据库防火墙进行规则的修改或增加。

本发明实施例还提供了一种sql注入拦截检测装置。请参阅图5,其为本实施例的sql注入拦截检测装置的框图。本实施例的一种sql注入拦截检测装置,包括:

检测模块110,用于根据sql语法树规则对接收的sql指令进行检测,判断接收的sql指令是否为恶意指令。

所述检测模块110包括:

解析子模块111,用于将接收的sql指令中的sql语句解析成语法树结构。

拦截子模块112,用于判断该语法树结构是否与黑名单中的语法树的特征匹配;若是,则进行拦截。

分析模块120,用于若接收的sql指令没有命中语法树规则,则通过分析模型对接收的sql指令进行分析,判断接收的sql指令是否为潜在恶意指令。

所述分析模块120包括:

向量生成子模块121,用于将接收的sql指令根据语法规则生成向量;

相似度计算子模块122,用于计算接收的sql指令的向量与恶意sql指令的向量样本的相似度;若相似度达到设定阈值,则判定接收的sql指令为恶意指令。

黑名单更新模块130,用于当所述分析模型判定接收的sql指令为恶意指令时,根据所述接收的sql指令在黑名单中增加恶意sql指令的语法结构规则。

本实施例装置的各个模块功能与上述实施例的sql注入拦截检测方法的原理类似,故不再赘述。

本发明实施例还提供一种sql注入拦截检测设备,如图6所示,该设备包括:存储器310和处理器320,存储器310内存储有可在处理器320上运行的计算机程序。所述处理器320执行所述计算机程序时实现上述实施例中的sql注入拦截检测方法。所述存储器310和处理器320的数量可以为一个或多个。

该设备还包括:

通信接口330,用于与外界设备进行通信,进行数据交互传输。

存储器310可能包含高速ram存储器,也可能还包括非易失性存储器(non-volatilememory),例如至少一个磁盘存储器。

如果存储器310、处理器320和通信接口330独立实现,则存储器310、处理器320和通信接口330可以通过总线相互连接并完成相互间的通信。所述总线可以是工业标准体系结构(isa,industrystandardarchitecture)总线、外部设备互连(pci,peripheralcomponent)总线或扩展工业标准体系结构(eisa,extendedindustrystandardcomponent)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图6中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。

可选的,在具体实现上,如果存储器310、处理器320及通信接口330集成在一块芯片上,则存储器310、处理器320及通信接口330可以通过内部接口完成相互间的通信。

在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。

此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。

流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属技术领域的技术人员所理解。

在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,“计算机可读介质”可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。

本发明实施例所述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质的更具体的示例至少(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(ram),只读存储器(rom),可擦除可编辑只读存储器(eprom或闪速存储器),光纤装置,以及便携式只读存储器(cdrom)。另外,计算机可读存储介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。

在本发明实施例中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于指令执行系统、输入法或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、射频(radiofrequency,rf)等等,或者上述的任意合适的组合。

应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(pga),现场可编程门阵列(fpga)等。

本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。

此外,在本发明各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读存储介质中。所述存储介质可以是只读存储器,磁盘或光盘等。

综上所述,本发明实施例结合了在线检测和离线分析两种方式,可以对入侵的恶意sql命令进行拦截,还可以通过离线分析发现并补充规则的漏洞。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到其各种变化或替换,这些都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1