数据库注入攻击检测方法及系统的制作方法

文档序号:6618898阅读:177来源:国知局

专利名称::数据库注入攻击检测方法及系统的制作方法
技术领域
:本发明涉及信息安全领域,尤其涉及一种数据库注入攻击检测方法及系统。
背景技术
:随着Internet的发展,客户端/服务器(B/S)模式得到了越来越广泛的应用。B/S模式中经常出现用户与后台数据库服务器之间进行数据交互的情形,即用户在客户端的网页上通过表单输入并提交数据,服务端的应用程序根据用户提交的数据构造SQL语句,提交到数据库服务器进行处理,并向用户返回处理结果。在开发B/S模式的应用程序时,许多开发者忽略了对用户输入数据的合法性进行判断,使应用程序存在安全隐患。攻击者可以提交一段数据库查询代码,根据程序返回的结果,窃取某些他想得知的数据,这就是数据库注入攻击技术,也称SQL注入(SQLInjection)攻击。为了更好地对数据库服务器实施保护,网络安全审计产品得到了广泛的应用。它能够实时监测和记录用户对数据库的访问信息,生成数据库访问记录,并按照设定的规则对用户访问行为进行报警、阻断等操作。但是从数据库访问行为本身看,无论是用户的正常访问,还是攻击者的注入攻击,都表现为向数据库服务器提交并运行SQL语句,这就导致虽然网络安全审计产品可以记录用户对数据库的访问信息,但是审计产品本身无法区分一条数据库访问记录所代表的访问行为是正常的访问还是恶意的注入攻击。这样当攻击者实施注入攻击时,审计产品只能记录攻击者的行为,无法及时检测出攻击并实施阻断,只能通过事后分析的方式对攻击进行识别。另外,攻击者的访问记录被淹没在大量的访问记录中,安全管理人员只能通过经验进行识别,给事后分析带来了极大的不便。因此,业界亟待提出一种新的数据库注入攻击检测技术,以实时检测数据库访问行为,避免数据库遭受SQL注入攻击。
发明内容本发明所要解决的技术问题是在于需要提供一种数据库注入攻击检测方法及系统,以实时检测数据库访问行为。为了解决上述技术问题,本发明提供了一种数据库注入攻击检测方法,包括通过对数据库历史访问记录进行自学习,建立数据库访问行为模式库;接收数据库实时访问,根据所述访问行为模式库,判断所述实时访问是否为注入攻击,获得判断结果;根据所述判断结果及预设的响应方式,对所述实时访问进行响应。优选地,对所述历史访问记录进行自学习的步骤,包括设置所述历史访问记录;对所述历史访问记录中的每条记录进行SQL语句解析,提取SQL模板;根据所述SQL模板,建立所述访问行为模式库。优选地,所述SQL模板,包括数据库操作类型、数据库名称、数据表名称、操作字段名称、条件子句中的字段名称以及条件子句中的关系运算符。优选地,根据所述访问行为模式库,判断所述实时访问是否为注入攻击,获得判断结果的步骤,包括对所述实时访问进行SQL语句解析,提取所述实时访问的SQL模板;通过将所述实时访问的SQL模板与所述访问行为模式库进行比对,获得所述判断结果。优选地,通过对所述历史访问记录中的正常访问行为进行所述自学习,建立用于确认正常数据库访问的正常访问行为模式库。优选地,该方法进一步包括通过对所述历史访问记录中确认的注入攻击行为进行所述自学习,建立用于确认数据库注入攻击的攻击访问行为模式库。为了解决上述技术问题,本发明还提供了一种数据库注入攻击检测系统,包括存储模块,用于存储数据库历史访问记录;接收模块,用于接收数据库实时访问;解析模块,与所述存储模块及接收模块相连,用于对所述历史访问记录及实时访问进行SQL语句解析,提取SQL模板;自学习模块,与所述解析模块相连,用于根据所述历史访问记录的SQL模板,建立数据库访问行为模式库;判断模块,与所述解析模块及自学习模块相连,用于根据所述访问行为模式库及所述实时访问的SQL模板,判断所述实时访问是否为数据库注入攻击,获得判断结果;响应模块,与所述判断模块650相连,用于根据预设的响应方式及所述判断结果,对所述实时访问进行响应。优选地,所述解析模块提取的所述SQL模板,包括数据库操作类型、数据库名称、数据表名称、操作字段名称、条件子句中的字段名称以及条件子句中的关系运算符。优选地,所述自学习模块,通过对所述历史访问记录中的正常访问行为进行所述自学习,建立用于确认正常数据库访问的正常访问行为模式库。优选地,该系统进一步包括所述自学习模块,通过对所述历史访问记录中确认的注入攻击行为进行所述自学习,建立用于确认数据库注入攻击的攻击访问行为模式库。与现有技术相比,本发明通过对历史访问记录的学习,建立访问行为模式库,并根据访问行为模式库检测数据库注入攻击行为,能够实现自动识别正常数据库访问和注入攻击,并对注入攻击进行阻断,从而保护了数据库服务器的安全。另外,在检测过程中无需安全管理人员的干预,降低了安全管理人员日志处理的工作量。图1为本发明方法的流程示意图;图2为图1所示流程步骤SllO的自学习过程示意图;图3为图1所示流程步骤S120的判断过程示意图;图4为本发明方法第一实施例的流程示意图5为本发明方法第二实施例的流程示意图;图6是本发明系统实施例的组成示意图。具体实施例方式以下将结合附图及实施例来详细说明本发明的实施方式,借此对本发明如何应用技术手段来解决技术问题,并达成技术效果的实现过程能充分理解并据以实施。本发明首先通过对历史访问记录进行自学习,建立访问行为模式库,然后根据该访问行为模式库,直接对实时访问进行检测,可以实时阻断数据库注入攻击行为,避免数据库遭受SQL注入攻击。图1是本发明方法的流程示意图。如图1所示,该方法主要包括如下步骤步骤S110,通过对数据库历史访问记录进行自学习,建立数据库访问行为模式库;通过自学习建立的访问行为模式库,可以是根据历史访问记录中的正常访问行为所建立的正常访问行为模式库,也可以是根据历史访问记录中已经确认为注入攻击行为所建立的攻击访问行为模式库;该正常访问行为模式库用来确认正常的(或者称之为安全的)数据库实时访问,该攻击访问行为模式库用来确认注入攻击;步骤S120,接收数据库实时访问,根据所建立的访问行为模式库,判断该实时访问是否为注入攻击,获得判断结果;步骤S130,根据预设的响应方式及该判断结果,对该实时访问进行响应。图2为上述步骤SllO的自学习过程示意图。如图2所示,根据历史访问记录建立访问行为模式库的自学习过程,主要包括如下步骤步骤S210,设置用于自学习的数据库历史访问记录;步骤S220,对每条历史访问记录进行SQL语句解析,提取每条历史访问记录的SQL模板;步骤S230,根据所提取的历史访问记录的SQL模板,建立该访问行为模式库。上述步骤S220中的所提取的若干SQL模板,相互之间通过唯一的ID号码进行标识,其的内容包括但不局限于数据库操作类型、数据库名称、数据表名称、操作字段名称、条件子句中的字段名称以及条件子句中的关系运算符;上述步骤S230中建立该访问行为模式库时,可以与步骤S220的提取操作进行融合,对步骤S220中提取的SQL模板进行入库建模,不需要对所有的历史访问记录提取SQL模板之后,再建立访问行为模式库。如果访问行为模式库中已经存在同样的SQL模板,则不将其存入访问行为模式库中,并继续解析下一条历史访问记录,如果访问行为模式库中并没有同样的SQL模板,则其为一新的SQL模板,将其存入访问行为模式库中,再继续解析下一条历史访问记录。也就是说,对于同样的SQL模板,访问行为模式库中只保留一个,而对于重复的SQL模板,去掉即可。上述步骤S230中,根据正常访问行为的SQL模板建立该正常访问行为模式库,根据攻击访问行为的SQL模板建立攻击访问行为模式库。根据图2所示的自学习过程,图3为上述步骤S120的判断过程示意图。如图3所示,根据所建立的访问行为模式库判断该实时访问是否为注入攻击并获得判断结果的过程,主要包括如下步骤步骤S310,对所接收的数据库实时访问进行SQL语句解析,提取该实时访问的SQL模板;步骤S320,通过将该实时访问的SQL模板与自学习过程所建立的访问行为模式库进行比对,判断该实时访问是否为数据库注入攻击,获得判断结果;如果该实时访问的SQL模板包含在正常访问行为模式库中,则该实时访问为正常访问行为,对该实时访问予以放行;如果该实时访问的SQL模板包含在攻击访问行为模式库中,则该实时访问为数据库注入攻击行为,对该实时访问进行阻断;如果该实时访问的SQL模板即不在正常访问行为模式库中,也不在攻击访问行为模式库中,则该实时访问暂时还不能确定其为正常访问行为或者为数据库注入攻击行为,需要进一步进行识别,此时对该实时访问进行阻断并进行报警以完成进一步的识别。图4为本发明方法第一实施例的流程示意图。如图4所示,该方法第一实施例主要包括如下步骤步骤S410,设定数据库历史访问记录的起始时间为2009年1月1日12时,结束时间为2009年1月1日13时,在此期间内共观测到三条数据库访问记录,这三条数据库访问记录均为正常访问记录,分别为记录1selectvaluefromtable1whereusername=’Alice’;id^2insertintotable1valus('Jack',80);记录3:selectvaluefromtable1whereusername=,Bob';步骤S420,对这三条数据库访问记录进行SQL语句解析,提取每条历史访问记录的SQL模板,并根据所提取的历史访问记录的SQL模板,建立正常访问行为模式库;对记录1进行SQL语句解析,提取记录1的SQL模板为操作类型为“select”,数据表为“table1”,操作字段为“value”,条件子句中字段、关系运算符为{"username",“=”};此时数据库正常访问行为模式库为空,将该SQL模板加入到数据库正常访问行为模式库中;对记录2进行SQL语句解析,提取记录2的SQL模板为操作类型为“insert”,数据表为“table1”,操作字段为NULL,条件子句中字段、关系运算符为NULL;由于该SQL模板与数据库正常访问行为模式库中已有的模板(即记录1的SQL模板)不相同,因此将该记录2的SQL模块加入到数据库正常访问行为模式库中;对记录3进行SQL语句解析,提取记录3的SQL模板为操作类型为“select”,数据表为“table1”,操作字段为“value”,条件子句中字段、关系运算符为{"username",“=”};由于该SQL模板已出现在数据库正常访问行为模式库中,因此直接删除该SQL模板,由于该记录已经是设定的用于自学习的最后一条记录,因此自学习过程结束;步骤S430,接收到数据库实时访问,其访问记录为selectvalueformtable1whereusername=’Tom’or1>=1—;步骤S440,对该实时访问记录进行SQL语句解析,得到其SQL模板为操作类型为“select”,数据表为“table1”,操作字段为“value”,条件子句中字段、关系运算符为{(“username”,“=,,),(“1”,“>=”)};步骤S450,通过将该实时访问的SQL模板与正常访问行为模式库进行比对,发现其并没有出现在由两个SQL模板组成的正常访问行为模式库中,因此判断出该实时访问为非正常访问行为;步骤S460,对本次实时访问进行报警以待管理人员进行处理,记录本次实时访问,并阻断其对数据库的操作,从而保证了数据库服务器的安全。图5为本发明方法第二实施例的流程示意图。如图5所示,该方法第二实施例主要包括如下步骤步骤S510,设定数据库历史访问记录的起始时间为2009年1月2日12时,结束时间为2009年1月2日13时,在此期间内共观测到四条数据库访问记录,其中前三条数据库访问记录为正常访问记录,第四条数据库访问记录经识别,为注入攻击,这四条访问记录分别为记录1selectvaluefromtable1whereusername=’Alice’;id^2insertintotable1valus('Jack',80);记录3:selectvaluefromtable1whereusername=,Bob';记录4:selectvalueformtable1whereusername=,Tom'or1>=1—;步骤S520,对这四条数据库访问记录进行SQL语句解析,提取每条历史访问记录的SQL模板,并根据所提取的历史访问记录的SQL模板,建立正常访问行为模式库和攻击访问行为模式库;对记录1进行SQL语句解析,提取记录1的SQL模板为操作类型为“select”,数据表为“table1”,操作字段为“value”,条件子句中字段、关系运算符为{"username",“=”};由于记录1为正常访问行为,且此时数据库正常访问行为模式库为空,因此将该SQL模板加入到数据库正常访问行为模式库中;对记录2进行SQL语句解析,提取记录2的SQL模板为操作类型为“inset”,数据表为“table1”,操作字段为NULL,条件子句中字段、关系运算符为NULL;由于记录2为正常访问行为,且该SQL模板与数据库正常访问行为模式库中已有的模板(即记录1的SQL模板)不相同,因此将该记录2的SQL模块加入到数据库正常访问行为模式库中;对记录3进行SQL语句解析,提取记录3的SQL模板为操作类型为“select”,数据表为“table1”,操作字段为“value”,条件子句中字段、关系运算符为{"username",“=”};由于记录3为正常访问行为,且该SQL模板已出现在数据库正常访问行为模式库中,因此直接删除该SQL模板;对记录4进行SQL语句解析,提取记录4的SQL模板为操作类型为“select”,数据表为“table1”,操作字段为“value”,条件子句中字段、关系运算符为{("username",“=”),(“1”,“>=”)};由于记录4为攻击行为,且此时数据库攻击访问行为模式库为空,因此将该SQL模板加入到数据库攻击访问行为模式库中;另外记录4已经是设定的用于自学习的最后一条记录,因此自学习过程结束;步骤S530,接收到数据库实时访问,其访问记录为selectvalueformtable1whereusername='Tom'or1>=0—;步骤S540,对该实时访问记录进行SQL语句解析,得到其SQL模板为操作类型8为“select”,数据表为“table1”,操作字段为“value”,条件子句中字段、关系运算符为{(“username”,"=”),(“1”,“>=”)};步骤S550,通过将该实时访问的SQL模板与正常访问行为模式库及攻击访问行为模式库进行比对,发现其出现在攻击访问行为模式库中,因此判断出该实时访问为攻击访问行为;步骤S560,记录本次实时访问,阻断其对数据库的操作,从而保证了数据库服务器的安全。图6为本发明检测系统实施例的组成示意图。参考图1所示的本发明方法的流程、图2所示的自学习过程、图3所示的判断过程、图4所示的本发明方法第一实施例和图5所示的本发明方法第二实施例,图6所示的系统实施例主要包括存储模块610、接收模块620、解析模块630、自学习模块640、判断模块650及响应模块660,其中存储模块610,用于存储数据库历史访问记录;接收模块620,用于接收数据库实时访问;解析模块630,与该存储模块610及接收模块620相连,用于对该数据库历史访问记录和数据库实时访问进行SQL语句解析,提取每条访问的SQL模板,包括历史访问的SQL模板以及实时访问的SQL模板;自学习模块640,与该解析模块630相连,用于根据解析模块630所提取的历史访问记录的SQL模板,建立数据库访问行为模式库;判断模块650,与解析模块630及自学习模块640相连,用于根据自学习模块640所建立的数据库访问行为模式库以及该实时访问的SQL模板,判断该数据库实时访问是否为数据库注入攻击,获得判断结果;响应模块660,与该接收模块620及判断模块650相连,用于根据预设的响应方式及该判断结果,对该实时访问进行响应。上述解析模块630提取的该SQL模板,包括但不限于数据库操作类型、数据库名称、数据表名称、操作字段名称、条件子句中的字段名称以及条件子句中的关系运算符。上述自学习模块,通过对数据库历史访问记录中的正常访问行为进行自学习,可以建立用于确认正常数据库访问的正常访问行为模式库。还可以通过对数据库历史访问记录中确认的注入攻击行为进行自学习,建立用于确认数据库注入攻击的攻击访问行为模式库。本发明提出的数据库注入攻击检测方法和系统,针对现有技术的不足,通过对历史访问记录的学习,建立访问行为模式库,并根据访问行为模式库检测数据库注入攻击行为,能够实现自动识别正常数据库访问和注入攻击。与现有技术相比,本发明通过在学习阶段建立数据库访问行为模式库,能够实时判断数据库访问行为是正常访问还是注入攻击,可以及时检测到数据库注入攻击并将其阻断,从而保护了数据库服务器的安全。另外,本发明提出的数据库注入攻击检测方法及系统,在检测过程中无需安全管理人员的干预,降低了安全管理人员日志处理的工作量。虽然本发明所揭露的实施方式如上,但所述的内容只是为了便于理解本发明而采用的实施方式,并非用以限定本发明。任何本发明所属
技术领域
内的技术人员,在不脱离本发明所揭露的精神和范围的前提下,可以在实施的形式上及细节上作任何的修改与变化,但本发明的专利保护范围,仍须以所附的权利要求书所界定的范围为准。权利要求一种数据库注入攻击检测方法,其特征在于,包括通过对数据库历史访问记录进行自学习,建立数据库访问行为模式库;接收数据库实时访问,根据所述访问行为模式库,判断所述实时访问是否为注入攻击,获得判断结果;根据所述判断结果及预设的响应方式,对所述实时访问进行响应。2.如权利要求1所述的方法,其特征在于,对所述历史访问记录进行自学习的步骤,包括设置所述历史访问记录;对所述历史访问记录中的每条记录进行SQL语句解析,提取SQL模板;根据所述SQL模板,建立所述访问行为模式库。3.如权利要求2所述的方法,其特征在于所述SQL模板,包括数据库操作类型、数据库名称、数据表名称、操作字段名称、条件子句中的字段名称以及条件子句中的关系运算符。4.如权利要求2所述的方法,其特征在于,根据所述访问行为模式库,判断所述实时访问是否为注入攻击,获得判断结果的步骤,包括对所述实时访问进行SQL语句解析,提取所述实时访问的SQL模板;通过将所述实时访问的SQL模板与所述访问行为模式库进行比对,获得所述判断结^ο5.如权利要求1所述的方法,其特征在于通过对所述历史访问记录中的正常访问行为进行所述自学习,建立用于确认正常数据库访问的正常访问行为模式库。6.如权利要求4所述的方法,其特征在于,该方法进一步包括通过对所述历史访问记录中确认的注入攻击行为进行所述自学习,建立用于确认数据库注入攻击的攻击访问行为模式库。7.一种数据库注入攻击检测系统,其特征在于,包括存储模块,用于存储数据库历史访问记录;接收模块,用于接收数据库实时访问;解析模块,与所述存储模块及接收模块相连,用于对所述历史访问记录及实时访问进行SQL语句解析,提取SQL模板;自学习模块,与所述解析模块相连,用于根据所述历史访问记录的SQL模板,建立数据库访问行为模式库;判断模块,与所述解析模块及自学习模块相连,用于根据所述访问行为模式库及所述实时访问的SQL模板,判断所述实时访问是否为数据库注入攻击,获得判断结果;响应模块,与所述判断模块650相连,用于根据预设的响应方式及所述判断结果,对所述实时访问进行响应。8.如权利要求7所述的系统,其特征在于所述解析模块提取的所述SQL模板,包括数据库操作类型、数据库名称、数据表名称、操作字段名称、条件子句中的字段名称以及条件子句中的关系运算符。9.如权利要求7所述的系统,其特征在于所述自学习模块,通过对所述历史访问记录中的正常访问行为进行所述自学习,建立用于确认正常数据库访问的正常访问行为模式库。10.如权利要求9所述的系统,其特征在于,该系统进一步包括所述自学习模块,通过对所述历史访问记录中确认的注入攻击行为进行所述自学习,建立用于确认数据库注入攻击的攻击访问行为模式库。全文摘要本发明公开了一种数据库注入攻击检测方法及系统,以实时检测数据库访问行为。其中该方法包括通过对数据库历史访问记录进行自学习,建立数据库访问行为模式库;接收数据库实时访问,根据访问行为模式库,判断实时访问是否为注入攻击,获得判断结果;根据判断结果及预设的响应方式,对实时访问进行响应。与现有技术相比,本发明能够自动识别正常数据库访问和注入攻击,并对注入攻击进行阻断,从而保护了数据库服务器的安全。文档编号G06F21/00GK101901219SQ20091008502公开日2010年12月1日申请日期2009年5月27日优先权日2009年5月27日发明者刘晖,叶润国,周涛,姚熙申请人:北京启明星辰信息技术股份有限公司;北京启明星辰信息安全技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1