一种结构化查询语言SQL注入攻击的检测方法和装置与流程

文档序号:11654763阅读:192来源:国知局
本发明涉及网络应用安全
技术领域
:,尤指一种结构化查询语言sql注入攻击的检测方法和装置。
背景技术
::目前,随着网络技术的迅速发展,越来越多的应用业务都采用网络(web)的方式来对外提供交互和服务,然而大部分应用业务在使用时很容易受到安全威胁,其中,最常见的安全威胁是结构化查询语言(structuredquerylanguage,简称:sql)注入攻击,会造成敏感数据泄露、木马植入等后果,从而危害很大。现有技术中,大部分厂商通常检测sql注入的方法主要是基于特征检测,该特征检测方法是指在web请求头的各个参数中检查是否含有sql语句关键字,例如select,union,where等等,如果出现关键字则报警;还有个别厂商会采用语法检测,因为构成有效的sql注入,其中,参数部分必须是完整sql语句的一部分,所以可以通过语法检查来判断是不是完整的sql语句;另外,还有厂商会在了解web服务器源码情况下,通过将源码中sql语句的用户输入部分替换成变量形成sql语句模板,作为后续sql注入检测基础。但是,基于特征检测方法,如果sql语法的关键字也往往是自然语言的词汇,在正常的web交互中,有一定概率出现上述关键字,这样会导致检测误判;采用语法检测方式的精度虽然比特征检测好很多,但一些比较简单的参数可能会命中语法,造成误报;另外,第三种检测方式的局限性则在于需要了解web服务器上每个涉及sql语句提交的源码片段,并且需要针对性设置,普适性比较差。因此,综上所述,现有技术的检测sql注入的方法精度低或普适性差。技术实现要素:为了解决上述技术问题,本发明提供了一种结构化查询语言sql注入攻击的检测方法和装置,基于java虚拟机环境的网页应用系统服务器,能够精确检测sql注入,从而保证了网络应用的业务访问安全。第一方面,本发明实施例提供一种结构化查询语言sql注入攻击的检测方法,基于java虚拟机环境的网页应用系统服务器,所述方法包括:获取业务请求信息和对应的数据库事件信息,其中,所述业务请求信息包括统一资源定位符url及参数信息,所述数据库事件信息包括根据所述业务请求信息向数据库请求数据时所触发的sql语句,并将所述业务请求信息和所述sql语句进行关联;根据所述sql语句构建sql语法树;自学习所述url识别出有效参数信息,自学习后建立所述url及有效参数信息所属的业务请求信息和所关联的sql语句的sql语法树的关系模型;检查后续业务请求信息和所关联的sql语句的sql语法树的关系,当检查结果和所述关系模型不一致时,则确认检测到sql注入攻击。第二方面,本发明实施例提供一种结构化查询语言sql注入攻击的检测装置,基于java虚拟机环境的网页应用系统服务器,所述装置包括:插件关联模块、解析模块、自学习模块和检测模块;所述插件关联模块,用于获取业务请求信息和对应的数据库事件信息,其中,所述业务请求信息包括统一资源定位符url及参数信息,所述数据库事件信息包括根据所述业务请求信息向数据库请求数据时所触发的sql语句,并将所述业务请求信息和所述sql语句进行关联;所述解析模块,用于根据所述sql语句构建sql语法树;所述自学习模块,用于自学习所述url识别出有效参数信息,自学习后建立所述url及有效参数信息所属的业务请求信息和所关联的sql语句的sql语法树的关系模型;所述检测模块,用于检查后续业务请求信息和所关联的sql语句的sql 语法树的关系,当检查结果和所述关系模型不一致时,则确认检测到sql注入攻击。本发明提供的一种结构化查询语言sql注入攻击的检测方法和装置,基于java虚拟机环境的网页应用系统服务器,通过对客户端的业务请求信息和所触发的sql语句进行关联,并对所述sql语句进行语法分析构建sql语法树,自学习所述url识别出有效参数信息,在自学习后建立所述url及有效参数信息和所属的业务请求信息所关联的sql语句的sql语法树的关系模型,将该关系模型做为检查基准,对后续的业务请求信息和所关联的sql语句的sql语法树的关系与该基准进行检查,如果检查结果不一致,确认检测到sql注入攻击,则拒绝业务访问,从而能够精确检测sql注入的威胁,从而保证了网络应用的业务访问安全。本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。附图说明附图用来提供对本发明技术方案的进一步理解,并且构成说明书的一部分,与本申请的实施例一起用于解释本发明的技术方案,并不构成对本发明技术方案的限制。图1为本发明提供的一种结构化查询语言sql注入攻击的检测方法实施例一的流程示意图;图2为本发明提供的一种结构化查询语言sql注入攻击的检测方法实施例一的sql语法结构树示意图;图3为本发明提供的一种结构化查询语言sql注入攻击的检测装置实施例一的结构示意图。具体实施方式为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申 请中的实施例及实施例中的特征可以相互任意组合。在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行。并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。本发明实施例涉及的基于java虚拟机环境的网页应用系统服务器,可以为部署了网页应用和网页应用的资源的服务器,用于检测网页应用系统抗sql注入攻击的能力,但并不以此为限。本发明实施例涉及的数据库可以部署在上述网页应用系统服务器上,还可以部署在与上述网页应用系统服务器不同的其他服务器上,只要能与上述网页应用系统服务器进行交互即可。本发明实施例涉及的终端,可以是例如:移动终端、测试设备、计算机等,用于发送业务请求信息的,但并不以此为限。本发明实施例涉及的方法,旨在解决现有技术中的检测sql注入的方法精度低或普适性差的技术问题。下面以具体地实施例对本发明的技术方案进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。图1为本发明提供的一种结构化查询语言sql注入攻击的检测方法实施例一的流程示意图,本实施例涉及的是如何进行结构化查询语言sql注入攻击检测的具体过程。如图1所示,基于java虚拟机环境的网页应用系统服务器,该方法包括:s101、获取业务请求信息和对应的数据库事件信息,其中,所述业务请求信息包括统一资源定位符url及参数信息,所述数据库事件信息包括根据所述业务请求信息向数据库请求数据时所触发的sql语句,并将所述业务请求信息和所述sql语句进行关联。具体的,终端向网页应用系统服务器发送业务请求信息,该业务可以为某个网页应用,该网页应用可以是网易邮箱、网上银行、淘宝购物等应用,该网页应用系统服务器在接收到业务请求信息,即进行http请求时,获取网 页应用统一资源定位符(uniformresourcelocator,简称:url)及参数信息;并且,该网页应用系统服务器在向数据库请求数据时,获取业务请求信息所触发的对应的sql语句,其中,通过在网页应用服务器上部署插件关联模块,使得该插件关联模块可以在处理该业务请求的类中加入统一资源定位符(uniformresourcelocator,简称:url)探针,在处理sql语句的类中加入sql探针,这样在网页应用系统服务器在向数据库请求时,在相应的sql语句请求中携带上对应的url信息,建立起网页应用访问url和对应sql语句的关联关系;在上述插件关联模块中的拦截代码可以采用java字节码操作技术,直接在相关类加载的时候进行字节码操作,并采用java模式中的代理模式从而达到获取url及参数信息和sql语句信息,并将所述业务的url及参数信息和所对应的触发的sql语句进行关联。s102、根据所述sql语句构建sql语法树。具体的,图2为本发明提供的一种结构化查询语言sql注入攻击的检测方法实施例一的sql语法树示意图,该网页应用系统服务器在获得http请求所对应的数据库查询sql语句信息后,对sql语句做语法分析,即对该sql语句的标识符、数据类型、函数、表达式、运算符、保留关键字等语法元素进行分析,从而构建sql语法树,例如业务请求信息对应的sql语句如下:“selectnamefromtable_awherepass=ppppp”如图2所示,该sql语法树为对上述sql语句进行语法分析所构建sql语法树。s103、自学习所述url识别出有效参数信息,自学习后建立所述url及有效参数信息所属的业务请求信息和所关联的sql语句的sql语法树的关系模型。具体的,通过将业务请求信息和对应的数据库事件信息中的sql语句进行关联后,其中,业务请求信息的参数信息具有多样性,例如:张三登录网易邮箱,李四登录网易邮箱,这些都是登录网易邮箱的业务请求,仅仅是账户的参数信息不同,“张三”、“李四”这样的参数信息是不会影响上述“登录网易邮箱”的业务请求和所关联的数据库事件信息中的sql语句的对应关 系,采用自学习url,对参数信息进行分类,可以分为无效参数信息和有效参数信息,继续上述实施例“张三”、“李四”即为无效参数信息,而对于“账户”是有效参数信息,识别出有效参数信息,即识别出对所属的业务请求信息所关联的sql语句的sql语法树有影响的有效参数信息,从而在自学习后建立所述url及有效参数信息所属的业务请求信息和所关联的sql语句的sql语法树信息的关系模型,并通过对每个url的粒度进行控制,从而使得可以在较短的时间内尽快完成业务请求信息中频率高的url的自学习,而对于请求业务信息频率低的url的自学习则可以保证学习的样本数量足够多,以便快速建立业务请求信息和sql语法树的关系模型。s104、检查后续业务请求信息和所关联的sql语句的sql语法树的关系,当检查结果和所述关系模型不一致时,则确认检测到sql注入攻击。具体的,按照自学习后所建立的关系模型来作为检查基准,检查后续业务请求信息和所关联的sql语句的sql语法树的关系,检查与自学习后所建立的关系模型是否一致,如果不一致,则确定检测到为sql注入攻击,并将检查结果输出。本发明实施例提供的一种结构化查询语言sql注入攻击的检测方法,应用于基于java虚拟机环境的网页应用系统服务器,通过对客户端的业务请求信息中的url及参数信息和所触发的sql语句进行关联,并对所述sql语句进行语法分析构建sql语法树,自学习所述url识别出有效参数信息,在自学习后建立所述url及有效参数信息所属的业务请求信息和所关联的sql语句的sql语法树的关系模型,将该关系模型做为检查基准,对后续的业务请求信息和所关联的sql语句的sql语法树的关系与该基准进行检查,如果检查结果不一致,则拒绝业务访问,从而能够精确检测sql注入的威胁,从而保证了网络应用的业务安全。进一步地,在上述实施例的基础上,还包括:当检查结果和所述关系模型一致时,则允许进行业务访问。具体的,按照自学习所建立的关系模型来作为检查基准,检查后续业务请求信息和所关联的sql语句的sql语法树的关系和自学习建立的关系模型是否一致,如果一致则认为是正常的业务访问,允许进行业务访问。因为sql注入攻击实质上是利用构建攻击向量来改变业务相关的sql语句语义,所以要形成有效sql注入攻击,所关联的sql语句的sql语法树结构和正常的语法树结构相比,必然发生变化,从而通过确定业务请求信息和sql语句的sql语法树的关系的一致性,进而保证了sql注入攻击都能被该方法精确检测出来。进一步地,在上述实施例的基础上,上述步骤103中所述采用自学习所述url识别出有效参数信息,包括:根据所述url预设自学习的阈值,并按照阈值设定的学习次数自学习所述url,识别出影响所属的业务请求信息和所关联的sql语句的sql语法树的对应关系的有效参数信息。具体的,根据url的不同可以预设自学习的阈值,即可以设定统一的学习次数,例如是5次,也可以根据不同的url设定不同的学习次数,例如url1可以是3次,url2可以是4次,具体可以根据实际需求来进行预设,一旦预设自学习的学习次数后,则按照设定学习次数来自学习url,对参数信息进行分类,其中,该参数信息可以分为无效参数和有效参数,识别出所属的业务请求信息和所关联的sql语句的sql语法树对应关系有影响的有效参数信息,剔除对所属的业务请求信息和所关联的sql语句的sql语法树对应关系无影响的无效参数,从而在自学习后建立所述url及有效参数信息所属的业务请求信息和所关联的sql语句的sql语法树的关系模型。通过预设自学习的阈值来对每个url及参数信息的粒度进行控制,从而使得可以在较短的时间内尽快完成业务请求信息中频率高的url的自学习,而对于请求业务信息频率低的url的自学习则可以保证学习的样本数量足够多,以便快速建立业务请求信息和sql语法树的关系模型。进一步地,在上述实施例的基础上,所述自学习所述url识别出有效参数信息,还包括:若确定所述url按照设定的学习次数完成自学习时,则停止所述url的自学习。具体的,在所述自学习所述url识别出有效参数信息的过程中,会确定该url自学习的状态,若确定该url按照设定的学习次数完成自学习时,即当相同url访问预定的学习次数以后,则停止所述url的自学习,直接 将该关系模型作为检查的基准,这样可以不用一直都对业务请求信息中的url进行自学习,尤其是使用频率高的业务请求信息,从而提高了网页应用的效率。进一步地,在上述实施例的基础上,所述自学习所述url识别出有效参数信息,还包括:若确定所述url未按照设定的学习次数完成自学习时,则对已识别出影响所属的业务请求信息和所关联的sql语句的sql语法树的对应关系的有效参数信息进行存储,直至确定按照设定的学习次数完成自学习时,则停止所述url的自学习。具体的,在所述自学习所述url识别出有效参数信息的过程中,会确定所述url自学习的状态,若未按照设定的学习次数完成自学习时,则对已识别出影响所属的业务请求信息和所关联的sql语句的语法树的对应关系的有效参数信息进行存储,在存储后允许业务进行访问,然后直至确定按照设定的学习次数完成完成自学习时,则停止所述url的自学习,这样通过确定所述url自学习的状态,从而避免重复构建关系模型基准,提高了网页应用的效率。进一步地,图3为一种结构化查询语言sql注入攻击的检测装置实施例一的结构示意图,如图3所示,该装置包括:插件关联模块10、解析模块20、自学习模块30和检测模块40;所述插件关联模块10,用于获取业务请求信息和对应的数据库事件信息,其中,所述业务请求信息包括统一资源定位符url及参数信息,所述数据库事件信息包括根据所述业务请求信息向数据库请求数据时所触发的sql语句,并将所述业务请求信息和所述sql语句进行关联;所述解析模块20,用于根据所述sql语句构建sql语法树;所述自学习模块30,用于自学习所述url识别出有效参数信息,自学习后建立所述url及有效参数信息所属的业务请求信息和所关联的sql语句的sql语法树的关系模型;所述检测模块40,用于检查后续业务请求信息和所关联的sql语句的sql语法树的关系,当检查结果和所述关系模型不一致时,则确认检测到sql注入攻击。本发明实施例提供的一种结构化查询语言sql注入攻击的检测装置,基于java虚拟机环境的网页应用系统服务器,包括:插件关联模块10、解析模块20、自学习模块30和检测模块40,通过对客户端的业务请求信息中的url及参数信息和所触发的sql语句进行关联,并对所述sql语句进行语法分析构建sql语法树,自学习所述url识别出有效参数信息,在自学习后建立所述url及有效参数信息所属的业务请求信息和所关联的sql语句的sql语法树的关系模型,将该关系模型做为检查基准,对后续的业务请求信息和所关联的sql语句的sql语法树的关系与该基准进行检查,如果检查结果不一致,确认检测到sql注入攻击,则拒绝业务访问,从而能够精确检测sql注入的威胁,从而保证了网络应用的业务访问安全。进一步地,在上述实施例的基础上,所述检测模块40还用于:当检查结果和所述关系模型一致时,则允许进行业务访问。本发明实施例提供的装置,可以执行上述方法实施例,其实现原理和技术效果类似,在此不再赘述。进一步地,在上述实施例的基础上,所述自学习模块30用于采用自学习所述url识别出有效参数信息,包括:所述自学习模块30用于根据所述url预设自学习的阈值,并按照阈值设定的学习次数自学习所述url,识别出影响所属的业务请求信息和所关联的sql语句的sql语法树的对应关系的有效参数信息。本发明实施例提供的装置,可以执行上述方法实施例,其实现原理和技术效果类似,在此不再赘述。进一步地,在上述实施例的基础上,所述自学习模块30还用于若确定按照所述设定的学习次数完成自学习时,则停止所述url的自学习。本发明实施例提供的装置,可以执行上述方法实施例,其实现原理和技术效果类似,在此不再赘述。进一步地,在上述实施例的基础上,所述自学习模块30还用于若确定所述url未按照设定的学习次数完成自学习时,则对已识别出影响所属的业务请求信息和所关联的sql语句的sql语法树的对应关系的有效参数信息进 行存储,直至确定按照设定的学习次数完成自学习时,则停止所述url的自学习。本发明实施例提供的装置,可以执行上述方法实施例,其实现原理和技术效果类似,在此不再赘述。虽然本发明所揭露的实施方式如上,但所述的内容仅为便于理解本发明而采用的实施方式,并非用以限定本发明。任何本发明所属领域内的技术人员,在不脱离本发明所揭露的精神和范围的前提下,可以在实施的形式及细节上进行任何的修改与变化,但本发明的专利保护范围,仍须以所附的权利要求书所界定的范围为准。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1