数据库防护方法及装置、存储介质、计算机设备与流程

文档序号:24049641发布日期:2021-02-23 20:59阅读:89来源:国知局
数据库防护方法及装置、存储介质、计算机设备与流程

[0001]
本申请涉及数据库安全技术领域,尤其是涉及到一种数据库防护方法及装置、存储介质、计算机设备。


背景技术:

[0002]
sql是结构化查询语言(structured query language)的简称,是一种特殊目的的编程语言,作为数据库查询和程序设计语言,其被用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。sql注入,是指通过把sql命令插入到web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的sql命令。
[0003]
目前针对利用数据库攻击数据库的行为主要有两种防御方式,一种是通过waf(web应用防火墙)的特征匹配,这种产品部署在web应用的前面,通过检测分析发往web应用的请求数据包来检测攻击;例如在http请求的流量中发现('or'1'='1)等数据库攻击特征时,即拦截阻断;这种防护方式无法穷举所有的攻击特征,并且很难应对攻击者对payload的各种编码(比如'or'1'='1进行url编码为'%20or%20'1'%20=%20'1)。还有一种是通过数据库防火墙的方式,这种产品部署在数据库的前面,也是利用攻击特征匹配的方式进行防御,但这种产品相比waf,能够获得完整的数据库执行语句(select name from user where id='1'or'1'='1'),并且数据库执行语句不再涉及各种编码,所以可以很清晰的发现攻击特征,但是缺点也是无法穷举所有的攻击特征。
[0004]
以上两种方式都可以看做是通过特征判断是否是攻击行为,所以会产生误报或漏报的情况,目前,需要一种行之有效的能够提高数据库攻击识别效果的方法。


技术实现要素:

[0005]
有鉴于此,本申请提供了一种数据库防护方法及装置、存储介质、计算机设备,不存在改动语句就能绕过检测的风险,能够实现sql注入的精准防护
[0006]
根据本申请的一个方面,提供了一种数据库防护方法,包括:
[0007]
监控脚本解释器中的目标数据库操作函数,并对访问所述目标数据库的sql语句进行采集;
[0008]
对所述sql语句进行解析,得到所述sql语句的语句结构;
[0009]
根据预设sql语句结构库以及所述sql语句的语句结构,检测所述sql语句是否为数据库攻击,并拦截所述数据库攻击。
[0010]
具体地,所述监控脚本解释器中的目标数据库操作函数之前,所述方法还包括:
[0011]
对所述目标数据库进行至少一次安全访问;
[0012]
通过对所述解释执行器的监控,对所述安全访问的安全sql语句进行采集;
[0013]
分析所述安全sql语句的语句结构,并根据所述安全sql语句的语句结构建立所述预设sql语句结构库。
[0014]
具体地,所述分析所述安全sql语句的语句结构,具体包括:
[0015]
将所述安全sql语句中的参数删除,生成所述安全sql语句的语句结构。
[0016]
具体地,所述根据预设sql语句结构库,检测所述sql语句是否为数据库攻击,并拦截所述数据库攻击,具体包括:
[0017]
在所述预设sql语句结构库中查找是否存在与所述sql语句结构一致的语句结构;
[0018]
若存在,则所述sql语句不属于所述数据库攻击,执行所述sql语句,否则,判定所述sql语句属于所述数据库攻击,并拦截所述数据库攻击。
[0019]
具体地,所述判定所述sql语句属于所述数据库攻击,并拦截所述sql语句,具体包括:
[0020]
将所述sql语句上报至目标数据库安全管理系统中,以利用所述目标数据库安全管理系统生成并反馈对所述sql语句的处理指令,所述处理指令包括执行指令或拦截指令;
[0021]
若接收到所述执行指令,则执行所述sql语句,并将所述sql语句的语句结构加入至所述预设sql语句结构库中;
[0022]
若接收到所述拦截指令,则拦截所述sql语句,并向管理员报警。
[0023]
具体地,所述安全访问包括新增操作、删除操作、修改操作以及查询操作中的任意一种或其组合。
[0024]
根据本申请的另一方面,提供了一种数据库防护装置,包括:
[0025]
sql语句采集模块,用于监控脚本解释器中的目标数据库操作函数,并对访问所述目标数据库的sql语句进行采集;
[0026]
语句结构解析模块,用于对所述sql语句进行解析,得到所述sql语句的语句结构;
[0027]
sql注入检测模块,用于根据预设sql语句结构库以及所述sql语句的语句结构,检测所述sql语句是否为数据库攻击,并拦截所述数据库攻击。
[0028]
具体地,所述装置还包括:
[0029]
安全访问模块,用于监控脚本解释器中的目标数据库操作函数之前,对所述目标数据库进行至少一次安全访问;
[0030]
安全语句采集模块,用于通过对所述解释执行器的监控,对所述安全访问的安全sql语句进行采集;
[0031]
结构库建立模块,用于分析所述安全sql语句的语句结构,并根据所述安全sql语句的语句结构建立所述预设sql语句结构库。
[0032]
具体地,所述结构库建立模块,具体包括:
[0033]
结构提取单元,用于将所述安全sql语句中的参数删除,生成所述安全sql语句的语句结构。
[0034]
具体地,所述sql注入检测模块,具体包括:
[0035]
语句结构查询单元,用于在所述预设sql语句结构库中查找是否存在与所述sql语句结构一致的语句结构;
[0036]
sql语句处理单元,用于若存在,则所述sql语句不属于所述数据库攻击,执行所述sql语句,否则,判定所述sql语句属于所述数据库攻击,并拦截所述数据库攻击。
[0037]
具体地,所述sql语句处理单元,具体包括:
[0038]
上报子单元,用于将所述sql语句上报至目标数据库安全管理系统中,以利用所述目标数据库安全管理系统生成并反馈对所述sql语句的处理指令,所述处理指令包括执行
指令或拦截指令;
[0039]
执行子单元,用于若接收到所述执行指令,则执行所述sql语句,并将所述sql语句的语句结构加入至所述预设sql语句结构库中;
[0040]
拦截子单元,用于若接收到所述拦截指令,则拦截所述sql语句,并向管理员报警。
[0041]
具体地,所述安全访问包括新增操作、删除操作、修改操作以及查询操作中的任意一种或其组合。
[0042]
依据本申请又一个方面,提供了一种存储介质,其上存储有计算机程序,所述程序被处理器执行时实现上述数据库防护方法。
[0043]
依据本申请再一个方面,提供了一种计算机设备,包括存储介质、处理器及存储在存储介质上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述数据库防护方法。
[0044]
借由上述技术方案,本申请提供的一种数据库防护方法及装置、存储介质、计算机设备,通过监控脚本解释执行器中操作目标数据库的函数,捕获对目标数据库的访问sql语句,并利用预先设置的安全的语句结构与实际捕获的sql语句的语句结构实现对数据库攻击的检测以及防护。本申请实施例利用sql语句的语句结构实现对数据库攻击的检测,而现有技术中通常是通过查找攻击特征确定数据库攻击,由于无法穷举所有攻击特征,攻击者只需对语句进行改动就可绕过攻击检测,容易造成误报或漏报,与之相比,本申请不存在改动语句就能绕过检测的风险,能够实现sql注入的精准防护。
[0045]
上述说明仅是本申请技术方案的概述,为了能够更清楚了解本申请的技术手段,而可依照说明书的内容予以实施,并且为了让本申请的上述和其它目的、特征和优点能够更明显易懂,以下特举本申请的具体实施方式。
附图说明
[0046]
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
[0047]
图1示出了本申请实施例提供的一种数据库防护方法的流程示意图;
[0048]
图2示出了本申请实施例提供的另一种数据库防护方法的流程示意图;
[0049]
图3示出了本申请实施例提供的一种数据库防护装置的结构示意图;
[0050]
图4示出了本申请实施例提供的另一种数据库防护装置的结构示意图。
具体实施方式
[0051]
下文中将参考附图并结合实施例来详细说明本申请。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
[0052]
在本实施例中提供了一种数据库防护方法,如图1所示,该方法包括:
[0053]
步骤101,监控脚本解释器中的目标数据库操作函数,并捕获访问目标数据库的sql语句。
[0054]
本申请实施例主要应用于对数据库攻击数据库服务器的行为进行防护,另外,本申请实施例主要针对于解释执行类脚本,通过监控解释执行器,当目标数据库被访问时,从解释执行器中捕获对目标数据库的访问sql语句,以通过分析获取的sql语句对访问请求的
安全性进行检测。例如,在某网站业务中正常情况下是利用php脚本解释执行器里的mysql_query函数执行“select name from user where id='1'”语句,但是在攻击者利用sql注入漏洞传入'or'1'='1拼接之后,数据库攻击执行语句变成了利用mysql_query函数执行“select name from user where id='1'or'1'='1'”。
[0055]
步骤102,对sql语句进行解析,得到sql语句的语句结构。
[0056]
一般来说,攻击者对数据库进行攻击时,对数据库的数据库攻击请求语句通常与正常访问数据库使用的sql语句有所不同。例如,上述的正常情况下利用php脚本解释执行器里的mysql_query函数执行“select name from user where id='1'”语句,相应的语句结构即为select...from...where...,而在攻击者利用sql注入漏洞传入'or'1'='1拼接之后,使执行语句变成了“select name from user where id='1'or'1'='1'”,相应的语句结构即变为select...from...where...or...,这明显破坏了正常的语句结构,所以可以据此判断为攻击行为。
[0057]
步骤103,根据预设sql语句结构库以及sql语句的语句结构,检测sql语句是否为数据库攻击,并拦截数据库攻击。
[0058]
利用预先建立的预设sql语句结构库,分析获取到的相应语句结构的sql语句是否为数据库攻击,如果发现数据库攻击,应直接组织该sql语句执行,拦截数据库攻击。具体来说,sql语句的语句结构如果与预设sql语句结构库中预先保存的语句结构一致,则说明该语句结构是被认为安全的、不存在数据库攻击风险的语句结构,执行该sql语句不会对数据库造成安全威胁,可以执行该语句实现对目标数据库的访问,否则,则说明该sql语句不符合预先约定的可访问规则,存在数据库攻击风险,应对其进行拦截,以免造成数据库安全隐患。
[0059]
举例来说,对于上述步骤102中的例子,假设预设sql语句结构库中预先存储的mysql_query函数对应的语句结构为select...from...where...,而实际捕获的mysql_query函数对应的待执行的sql语句为“select name from user where id='1'or'1'='1'”,显然,实际语句的语句结构变为select...from...where...or...,与预先建立的安全的语句结构不同,存在数据库攻击风险,应阻止语句“select name from user where id='1'or'1'='1'”被执行,防止其对数据库造成攻击。
[0060]
通过应用本实施例的技术方案,通过监控脚本解释执行器中操作目标数据库的函数,捕获对目标数据库的访问sql语句,并利用预先设置的安全的语句结构与实际捕获的sql语句的语句结构实现对数据库攻击的检测以及防护。本申请实施例利用sql语句的语句结构实现对数据库攻击的检测,而现有技术中通常是通过查找攻击特征确定数据库攻击,由于无法穷举所有攻击特征,攻击者只需对语句进行改动就可绕过攻击检测,容易造成误报或漏报,与之相比,本申请不存在改动语句就能绕过检测的风险,能够实现sql注入的精准防护。
[0061]
进一步的,作为上述实施例具体实施方式的细化和扩展,为了完整说明本实施例的具体实施过程,提供了另一种数据库防护方法,如图2所示,该方法包括:
[0062]
步骤201,对目标数据库进行至少一次安全访问。
[0063]
步骤202,通过对解释执行器的监控,对安全访问的安全sql语句进行采集。
[0064]
步骤203,分析安全sql语句的语句结构,并根据安全sql语句的语句结构建立预设
sql语句结构库。
[0065]
在本申请实施例的步骤201至步骤203中,为了实现对目标数据库的数据库攻击检测,在监控解释执行器之前,应预先获取到对目标数据库进行安全访问的sql语句,并根据安全的sql语句提取出对应的语句结构,从而建立上述的sql语句结构库,显然,建立的sql语句结构库中包含的语句结构都属于对目标数据库进行非攻击性安全访问使用的sql语句对应的语句结构,在后续利用sql语句结构库进行注入攻击检测时,可将该sql语句结构库作为访问白名单。
[0066]
具体来说,首先,应对目标数据库进行至少一次的安全访问,安全访问操作可以为对目标数据库中的数据进行新增、删除、修改或者查询的操作,具体操作可以由技术人员操作完成,另外,也可以对目标数据库的访问操作进行收集,由技术人员从中挑选出安全的访问行为;其次,通过对解释执行器的监控,将对目标数据库进行安全访问时使用的安全sql语句收集起来;最后,对得到的安全sql语句进行语句结构的分析,利用每一句安全sql语句对应的语句结构建立上述的预设sql语句结构库,也即技术人员预先对可信的语句结构进行管控,以供后续利用该语句结构库,分析实际对目标数据库进行访问所使用的sql语句是否属于数据库攻击。
[0067]
在本申请的上述实施例中,具体地,安全访问包括新增操作、删除操作、修改操作以及查询操作中的任意一种或其组合。
[0068]
另外,在上述步骤203中,从安全sql语句中提取相应的语句结构的方法,具体可以包括:将安全sql语句中的参数删除,生成安全sql语句的语句结构。
[0069]
在上述实施例中,可以利用特殊的预设符号代替语句中的参数,或者直接将参数删除得到相应语句结构,对于预设符号本申请实施例不做特殊限定,只需要将sql语句中出现的参数都用同一种约定的特殊符号代替即可,值得注意的是,该预设符号不能与sql语句中可能会出现的命令符号相同。另外,对sql语句的参数部分选择删除或是用预设符号代替,可由本领域技术人员根据实际需要自行设置。
[0070]
例如,安全sql语句为“select name from user where id='1'”语句,将参数删除后,可以得到该安全语句的语句结构为“select...from...where...”。
[0071]
步骤204,监控脚本解释器中的目标数据库操作函数,并对访问目标数据库的sql语句进行采集。
[0072]
建立预设sql语句结构库之后,则可以利用该结构库对实际访问目标数据库的语句进行数据库攻击检测,具体可以通过监控目标数据库的解释执行器,当存在访问请欲对目标数据库进行访问时,捕获相应的sql访问语句。
[0073]
步骤205,对sql语句进行解析,得到sql语句的语句结构。
[0074]
对捕获的sql语句进行解析,得到相应的语句结构,具体获取语句结构的方式,可参见上述步骤203的实施例中从安全sql语句中提取语句结构的方式。
[0075]
例如,实际捕获的sql语句为“select name from user where id='1'or'1'='1'”,采用符号...代替语句中参数,可以得到该安全语句的语句结构为“select...from...where...or...”。
[0076]
步骤206,在预设sql语句结构库中查找是否存在与sql语句结构一致的语句结构。
[0077]
步骤207,若存在,则sql语句不属于数据库攻击,执行sql语句,否则,判定sql语句
属于数据库攻击,并拦截数据库攻击。
[0078]
在步骤206和步骤207中,在预先利用安全访问语句建立的sql语句结构库中,查找是否与捕获的sql语句相同的语句结构,若结构库中存在与sql语句相同的语句结构,说明在建立预设sql语句结构库时,执行过与该语句结构相同的访问语句,则该sql语句不属于数据库攻击,可以执行;而若结构库中不存在与sql语句相同的语句结构,说明在建立预设sql语句结构库时,没有执行过于该语句结构相同的访问语句,则该sql语句可能属于数据库攻击,应进行拦截。
[0079]
另外,为了避免sql语句结构库建立不全面,对于捕获到的sql语句的相应语句结构与结构库中不一致的情况,本申请实施例还可以采取以下方法:
[0080]
步骤2071,将sql语句上报至目标数据库安全管理系统中,以利用目标数据库安全管理系统生成并反馈对sql语句的处理指令,处理指令包括执行指令或拦截指令;
[0081]
步骤2072,若接收到执行指令,则执行sql语句,并将sql语句的语句结构加入至预设sql语句结构库中;
[0082]
步骤2073,若接收到拦截指令,则拦截sql语句,并向管理员报警。
[0083]
在上述实施例中,若sql语句结构库中不包含与sql语句相同的语句结构,则可以将sql语句上报到目标数据库对应的安全管理系统中,以便利用安全管理系统对sql语句进行分析,判断其是否为数据库攻击并生成对sql语句的处理指令,根据该处理指令,可以确定对sql语句的具体处理方案,具体地,如果处理指令为执行指令,说明该sql语句被认定为非数据库攻击的安全访问语句,则可以执行该语句,并将其对应的语句结构加入至预设sql语句结构库中,以便下次捕获到相同语句结构的sql语句时,可以快速的依据sql语句结构库放行该访问语句;如果处理指令为拦截指令,说明该sql语句被认定为数据库攻击,则应阻止该语句被执行,并进行报警。
[0084]
通过应用本实施例的技术方案,通过监控脚本解释执行器中操作数据库的函数,从而利用操作数据库sql语句的语句结构结合预设sql语句结构库进行数据库攻击的安全防护,并且,涉及了sql语句结构库更新方案,能够将新出现的属于安全访问的sql语句对应的语句结构不断补充添加至结构库中,完善结构库,从而不存在改动语句就能绕过检测的风险,实现了对数据库攻击的精准防护。
[0085]
进一步的,作为图1方法的具体实现,本申请实施例提供了一种数据库防护装置,如图3所示,该装置包括:sql语句采集模块31、语句结构解析模块32、sql注入检测模块33。
[0086]
sql语句采集模块31,用于监控脚本解释器中的目标数据库操作函数,并对访问目标数据库的sql语句进行采集;
[0087]
语句结构解析模块32,用于对sql语句进行解析,得到sql语句的语句结构;
[0088]
sql注入检测模块33,用于根据预设sql语句结构库以及sql语句的语句结构,检测sql语句是否为数据库攻击,并拦截数据库攻击。
[0089]
在具体的应用场景中,该装置还包括:
[0090]
安全访问模块34,用于监控脚本解释器中的目标数据库操作函数之前,对目标数据库进行至少一次安全访问;
[0091]
安全语句采集模块35,用于通过对解释执行器的监控,对安全访问的安全sql语句进行采集;
[0092]
结构库建立模块36,用于分析安全sql语句的语句结构,并根据安全sql语句的语句结构建立预设sql语句结构库。
[0093]
具体地,结构库建立模块36,具体用于将安全sql语句中的参数删除,生成安全sql语句的语句结构。
[0094]
具体地,sql注入检测模块33,具体包括:语句结构查询单元331、sql语句处理单元332。
[0095]
语句结构查询单元331,用于在预设sql语句结构库中查找是否存在与sql语句结构一致的语句结构;
[0096]
sql语句处理单元332,用于若存在,则sql语句不属于数据库攻击,执行sql语句,否则,判定sql语句属于数据库攻击,并拦截数据库攻击。
[0097]
具体地,sql语句处理单元332,具体包括:上报子单元3321、执行子单元3322、拦截子单元3323。
[0098]
上报子单元3321,用于将sql语句上报至目标数据库安全管理系统中,以利用目标数据库安全管理系统生成并反馈对sql语句的处理指令,处理指令包括执行指令或拦截指令;
[0099]
执行子单元3322,用于若接收到执行指令,则执行sql语句,并将sql语句的语句结构加入至预设sql语句结构库中;
[0100]
拦截子单元3323,用于若接收到拦截指令,则拦截sql语句,并向管理员报警。
[0101]
具体地,安全访问包括新增操作、删除操作、修改操作以及查询操作中的任意一种或其组合。
[0102]
需要说明的是,本申请实施例提供的一种数据库防护装置所涉及各功能单元的其他相应描述,可以参考图1和图2中的对应描述,在此不再赘述。
[0103]
基于上述如图1和图2所示方法,相应的,本申请实施例还提供了一种存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述如图1和图2所示的数据库防护方法。
[0104]
基于这样的理解,本申请的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是cd-rom,u盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施场景所述的方法。
[0105]
基于上述如图1、图2所示的方法,以及图3、图4所示的虚拟装置实施例,为了实现上述目的,本申请实施例还提供了一种计算机设备,具体可以为个人计算机、服务器、网络设备等,该计算机设备包括存储介质和处理器;存储介质,用于存储计算机程序;处理器,用于执行计算机程序以实现上述如图1和图2所示的数据库防护方法。
[0106]
可选地,该计算机设备还可以包括用户接口、网络接口、摄像头、射频(radio frequency,rf)电路,传感器、音频电路、wi-fi模块等等。用户接口可以包括显示屏(display)、输入单元比如键盘(keyboard)等,可选用户接口还可以包括usb接口、读卡器接口等。网络接口可选的可以包括标准的有线接口、无线接口(如蓝牙接口、wi-fi接口)等。
[0107]
本领域技术人员可以理解,本实施例提供的一种计算机设备结构并不构成对该计算机设备的限定,可以包括更多或更少的部件,或者组合某些部件,或者不同的部件布置。
[0108]
存储介质中还可以包括操作系统、网络通信模块。操作系统是管理和保存计算机设备硬件和软件资源的程序,支持信息处理程序以及其它软件和/或程序的运行。网络通信模块用于实现存储介质内部各组件之间的通信,以及与该实体设备中其它硬件和软件之间通信。
[0109]
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本申请可以借助软件加必要的通用硬件平台的方式来实现,也可以通过硬件实现通过监控脚本解释执行器中操作目标数据库的函数,捕获对目标数据库的访问sql语句,并利用预先设置的安全的语句结构与实际捕获的sql语句的语句结构实现对数据库攻击的检测以及防护。本申请实施例利用sql语句的语句结构实现对数据库攻击的检测,而现有技术中通常是通过查找攻击特征确定数据库攻击,由于无法穷举所有攻击特征,攻击者只需对语句进行改动就可绕过攻击检测,容易造成误报或漏报,与之相比,本申请不存在改动语句就能绕过检测的风险,能够实现sql注入的精准防护。
[0110]
本发明实施例提供了以下技术方案:
[0111]
1、一种数据库防护方法,包括:
[0112]
监控目标数据库对应的解释执行器,并对访问所述目标数据库的sql语句进行采集;
[0113]
对所述sql语句进行解析,得到所述sql语句的语句结构;
[0114]
根据预设sql语句结构库以及所述sql语句的语句结构,检测所述sql语句是否为数据库攻击,并拦截所述数据库攻击。
[0115]
2、根据1所述的方法,所述监控目标数据库对应的解释执行器之前,所述方法还包括:
[0116]
对所述目标数据库进行至少一次安全访问;
[0117]
通过对所述解释执行器的监控,对所述安全访问的安全sql语句进行采集;
[0118]
分析所述安全sql语句的语句结构,并根据所述安全sql语句的语句结构建立所述预设sql语句结构库。
[0119]
3、根据2所述的方法,所述分析所述安全sql语句的语句结构,具体包括:
[0120]
将所述安全sql语句中的参数删除,生成所述安全sql语句的语句结构。
[0121]
4、根据3所述的方法,所述根据预设sql语句结构库,检测所述sql语句是否为数据库攻击,并拦截所述数据库攻击,具体包括:
[0122]
在所述预设sql语句结构库中查找是否存在与所述sql语句结构一致的语句结构;
[0123]
若存在,则所述sql语句不属于所述数据库攻击,执行所述sql语句,否则,判定所述sql语句属于所述数据库攻击,并拦截所述数据库攻击。
[0124]
5、根据4所述的方法,所述判定所述sql语句属于所述数据库攻击,并拦截所述sql语句,具体包括:
[0125]
将所述sql语句上报至目标数据库安全管理系统中,以利用所述目标数据库安全管理系统生成并反馈对所述sql语句的处理指令,所述处理指令包括执行指令或拦截指令;
[0126]
若接收到所述执行指令,则执行所述sql语句,并将所述sql语句的语句结构加入至所述预设sql语句结构库中;
[0127]
若接收到所述拦截指令,则拦截所述sql语句,并向管理员报警。
[0128]
6、根据2至5中任一项所述的方法,所述安全访问包括新增操作、删除操作、修改操作以及查询操作中的任意一种或其组合。
[0129]
7、一种数据库防护装置,包括:
[0130]
sql语句采集模块,用于监控目标数据库对应的解释执行器,并对访问所述目标数据库的sql语句进行采集;
[0131]
语句结构解析模块,用于对所述sql语句进行解析,得到所述sql语句的语句结构;
[0132]
sql注入检测模块,用于根据预设sql语句结构库以及所述sql语句的语句结构,检测所述sql语句是否为数据库攻击,并拦截所述数据库攻击。
[0133]
8、根据7所述的装置,所述装置还包括:
[0134]
安全访问模块,用于监控目标数据库对应的解释执行器之前,对所述目标数据库进行至少一次安全访问;
[0135]
安全语句采集模块,用于通过对所述解释执行器的监控,对所述安全访问的安全sql语句进行采集;
[0136]
结构库建立模块,用于分析所述安全sql语句的语句结构,并根据所述安全sql语句的语句结构建立所述预设sql语句结构库。
[0137]
9、根据8所述的装置,所述结构库建立模块,具体用于:
[0138]
将所述安全sql语句中的参数删除,生成所述安全sql语句的语句结构。
[0139]
10、根据9所述的装置,所述sql注入检测模块,具体包括:
[0140]
语句结构查询单元,用于在所述预设sql语句结构库中查找是否存在与所述sql语句结构一致的语句结构;
[0141]
sql语句处理单元,用于若存在,则所述sql语句不属于所述数据库攻击,执行所述sql语句,否则,判定所述sql语句属于所述数据库攻击,并拦截所述数据库攻击。
[0142]
11、根据10所述的装置,所述sql语句处理单元,具体用于:
[0143]
将所述sql语句上报至目标数据库安全管理系统中,以利用所述目标数据库安全管理系统生成并反馈对所述sql语句的处理指令,所述处理指令包括执行指令或拦截指令;
[0144]
若接收到所述执行指令,则执行所述sql语句,并将所述sql语句的语句结构加入至所述预设sql语句结构库中;
[0145]
若接收到所述拦截指令,则拦截所述sql语句,并向管理员报警。
[0146]
12、根据7至11中任一项所述的装置,所述安全访问包括新增操作、删除操作、修改操作以及查询操作中的任意一种或其组合。
[0147]
13、一种存储介质,其上存储有计算机程序,所述程序被处理器执行时实现1至6中任一项所述的数据库防护方法。
[0148]
14、一种计算机设备,包括存储介质、处理器及存储在存储介质上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现1至6中任一项所述的数据库防护方法。
[0149]
本领域技术人员可以理解附图只是一个优选实施场景的示意图,附图中的模块或流程并不一定是实施本申请所必须的。本领域技术人员可以理解实施场景中的装置中的模块可以按照实施场景描述进行分布于实施场景的装置中,也可以进行相应变化位于不同于本实施场景的一个或多个装置中。上述实施场景的模块可以合并为一个模块,也可以进一
步拆分成多个子模块。
[0150]
上述本申请序号仅仅为了描述,不代表实施场景的优劣。以上公开的仅为本申请的几个具体实施场景,但是,本申请并非局限于此,任何本领域的技术人员能思之的变化都应落入本申请的保护范围。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1