一种用于数据库审计系统的sql语句解析方法和系统的制作方法

文档序号:6526484阅读:183来源:国知局
一种用于数据库审计系统的sql语句解析方法和系统的制作方法
【专利摘要】本发明提供了一种用于数据审计系统的SQL语句解析方法和系统。所述方法包括:接收输入的SQL语句;识别SQL语句中的词、符号和序列表示中的至少一者;将识别出的词、符号和序列表示中的至少一者与预定的语法规则进行比较,当识别出的词、符号和序列表示中的至少一者与预定的语法规则中的一个语法规则匹配时,则根据所述预定的语法规则中的一个语法规则确定所述SQL语句的操作类型、操作字段和表名中的至少一者;当识别出的词、符号和/或序列表示与预定的语法规则不匹配时,不对SQL语句进行语义解析。利用该方法和系统,能够准确识别SQL语句操作类型、操作的数据库表名、列名等对象信息,并且与正则匹配方式相比,不需要编写匹配规则,识别效率更高。
【专利说明】—种用于数据库审计系统的SQL语句解析方法和系统
【技术领域】
[0001]本发明涉及一种用于数据库审计系统的SQL语句解析方法和系统。
【背景技术】
[0002]数据库审计产品近年来成为网络安全行业研究热点,数据库审计产品通过旁路抓取数据库访问数据包,对其中的SQL语句进行提取和记录。但是各种数据库网络协议中只传输SQL语句,并不传输SQL语句的相关操作信息,如SQL操作的数据库对象名、SQL操作类型等信息。这就造成数据库审计产品只能记录SQL语句,不能准确记录SQL操作的对象、操作类型等。
[0003]一些数据库审计产品通过正则匹配方法识别SQL语句的操作类型和操作的对象,但是这种正则匹配方式只能进行查找操作和分析简单的SQL语句,如果SQL语句复杂度较高,那么正则方法不能实现SQL语句的解析。并且,采用正则匹配方式时,必须要编写正则匹配规则,识别效率不太高。

【发明内容】

[0004]针对现有技术中存在的上述问题,本发明提供了一种用于数据审计系统的SQL语句解析方法,用于对SQL语句的含义进行准确地分析,从而用于数据库审计和后续的分析。
[0005]本发明提供了一种用于数据审计系统的SQL语句解析方法,其中,该方法包括:
[0006]a)接收输入的SQL语句;
[0007]b)识别SQL语句中的词、符号和序列表示的组合;
[0008]c)将识别出的词、符号和序列表示的组合与预定的语法规则中的各个语法规则进行比较,当识别出的词、符号和序列表示的组合与预定的语法规则中的一个语法规则匹配时,则根据所述预定的语法规则中匹配的语法规则确定所述SQL语句的操作类型、操作字段和表名中的至少一者;当识别出的词、符号和序列表示的组合与预定的语法规则中的任何语法规则都不匹配时,不对SQL语句进行语义解析。
[0009]同时,本发明还提供了一种用于数据审计系统的SQL语句解析系统,其中,该系统包括:
[0010]接收模块,用于接收输入的SQL语句;
[0011]识别模块,用于识别SQL语句中的词、符号和序列表示的组合;
[0012]解析模块,用于将识别出的词、符号和序列表示的组合与预定的语法规则中的各个语法规则进行比较,当识别出的词、符号和序列表示的组合与预定的语法规则中的一个语法规则匹配时,则根据所述预定的语法规则中匹配的语法规则确定所述SQL语句的操作类型、操作字段和表名中的至少一者;当识别出的词、符号和序列表示的组合与预定的语法规则中的任何语法规则都不匹配时,不对SQL语句进行语义解析。
[0013]利用本发明提供的用于数据审计系统的SQL语句解析方法和系统,能够准确识别SQL语句操作类型、操作的数据库表名、列名等对象信息,并且与正则匹配方式相比,不需要编写匹配规则,识别效率更高。
【专利附图】

【附图说明】
[0014]图1是根据本发明的用于数据审计系统的SQL语句解析方法的流程图;
[0015]图2是根据本发明的用于数据审计系统的SQL语句解析系统的示意结构图。
【具体实施方式】
[0016]下面结合附图,详细描述本发明的【具体实施方式】。
[0017]图1是根据本发明的用于数据审计系统的SQL语句解析方法的流程图。参考图1,本发明提供了一种用于数据审计系统的SQL语句解析方法,其中,该方法包括:
[0018]a)接收输入的SQL语句;
[0019]b)识别SQL语句中的词、符号和序列表示的组合;
[0020]c)将识别出的词、符号和序列表示的组合与预定的语法规则中的各个语法规则进行比较,当识别出的词、符号和序列表示的组合与预定的语法规则中的一个语法规则匹配时,则根据所述预定的语法规则中匹配的语法规则确定所述SQL语句的操作类型、操作字段和表名中的至少一者;当识别出的词、符号和序列表示的组合与预定的语法规则中的任何语法规则都不匹配时,不对SQL语句进行语义解析。
[0021]在步骤a)中,首先接收输入的SQL语句。
[0022]在步骤b)中,对SQL语句进行识别。优选的,可以通过对所述SQL语句中的字符进行逐个扫描,来识别SQL语句中的词、符号和序列表示的组合。所述词例如“select”等有实际意义的词,所述符号例如“ + ”和等符号,所述序列表示诸如“from”等附在表示具体操作的词语之后的没有实际意义的词。
[0023]在步骤c)中,将识别出的词、符号和序列表示的组合与预定的语法规则中的各个语法规则进行比较,以判断识别出的词、符号和序列表示的组合是否与预定的语法规则中的一个语法规则匹配。
[0024]通常,在计算机系统中,预定的语法规则以机器语言形式表示,例如以二进制形式表示。在这种情况下,所述步骤b)还将识别出的词、符号和序列表示的组合转化为机器语言标记,例如转化成二进制形式表示的标记。从而,在所述步骤c)中,通过将所述机器语言标记与机器语言形式的预定的语法规则中的各个语法规则进行比较,来判断识别出的词、符号和序列表示的组合是否与预定的语法规则中的一个语法规则匹配。
[0025]如果匹配,则根据所述预定的语法规则中的一个语法规则确定所述SQL语句的操作类型、操作字段和表名中的至少一者;如果不匹配,不对SQL语句进行语义解析。
[0026]优选的,所述机器语言形式的预定的语法规则可以以语法分析树形式存储。语法分析树的各级分支存储着各个预定的语法。可以通过将识别出的词、符号和序列表示的组合与语法分析树的各级分支上的各个预定语法规则进行比较,来寻找匹配的预定语法规则。
[0027]根据一种优选实施方式,在所述步骤C),当识别出的词、符号和序列表示的组合与预定的语法规则中的一个语法规则匹配时,输出所确定的所述SQL语句的操作类型、操作字段和表名中的至少一者,例如可以通过显示器输出所述SQL语句的操作类型、操作字段和表名以供用户进行参考分析。
[0028]识别出的词、符号和序列表示的组合与预定的语法规则不匹配,有可能是因为SQL语句还没有输入完整,用户可能还会继续进行输入SQL语句。因而,根据另一种优选实施方式,当识别出的词、符号和序列表示的组合与预定的语法规则不匹配时,返回到步骤a),等待继续接收输入的SQL语句,以将后续接收的SQL语句结合在一起进行解析,这样,就可以接收到完整的SQL语句并进行解析。如果在大于等于预定的时间期间内没有接收输入的SQL语句,且识别出的词、符号和序列表示的组合与预定的语法规则中的任何语法规则都不匹配,则表示SQL语句解析失败,此时可以将表示解析失败的信息作为解析结果输出。
[0029]下面,以SQL语句“select A from TABLE”为例,来进一步描述本发明提供的用于数据审计系统的SQL语句解析方法的流程。首先,接收到的SQL语句“select A fromTABLE”。对该SQL语句中的字符逐个扫描,识别出词“ select ”、词“A”、序列表示“from”和词“TABLE”。可以将这些词和序列表示转化成机器语言标记,诸如二进制形式表示的标记。然后,将转换得到的机器语言标记与预先存储在存储器中的机器语言形式(例如二进制形式)的预定的语法规则进行比较。此时,可以在预定的语法规则中找到一个语法规则“select【列】from【表格】”与该机器语言标记相匹配,然后根据匹配的语法规则“select【列】from【表格】”,可以确定该SQL语句的操作类型为“select”,即删除操作,操作字段为“A”,表格名为“TABLE”。这样,就解析得到了该SQL语句的操作类型、操作字段和表名。可以将解析结果通过显示器等输出装置输出,以便用户进行查阅分析等。
[0030]同时,本发明还提供了一种用于数据审计系统的SQL语句解析系统,该系统包括:
[0031]接收模块,用于接收输入的SQL语句;
[0032]识别模块,用于识别SQL语句中的词、符号和序列表示的组合;
[0033]解析模块,用于将识别出的词、符号和序列表示的组合与预定的语法规则中的各个语法规则进行比较,当识别出 的词、符号和序列表示的组合与预定的语法规则中的一个语法规则匹配时,则根据所述预定的语法规则中匹配的语法规则确定所述SQL语句的操作类型、操作字段和表名中的至少一者;当识别出的词、符号和序列表示的组合与预定的语法规则中的任何语法规则都不匹配时,不对SQL语句进行语义解析。
[0034]其中,所述识别模块用于对SQL语句进行识别。优选的,可以通过对所述SQL语句中的字符进行逐个扫描,来识别SQL语句中的词、符号和序列表示的组合。所述词例如“select”等有实际意义的词,所述符号例如“ + ”和等符号,所述序列表示诸如“from”等附在表示具体操作的词语之后的没有实际意义的词。
[0035]所述解析模块用于将识别出的词、符号和序列表示的组合与预定的语法规则中的各个语法规则进行比较,以判断识别出的词、符号和序列表示的组合是否与预定的语法规则中的一个语法规则匹配。
[0036]通常,在计算机系统中,预定的语法规则以机器语言形式表示,例如以二进制形式表示。在这种情况下,所述识别模块还用于将识别出的词、符号和序列表示的组合转化为机器语言标记,例如转化成二进制形式表示的标记。从而,所述解析模块通过将所述机器语言标记与机器语言形式的预定的语法规则进行比较,来判断识别出的词、符号和序列表示的组合是否与预定的语法规则中的一个语法规则匹配。
[0037]如果匹配,所述解析模块则根据所述预定的语法规则中匹配的语法规则确定所述SQL语句的操作类型、操作字段和表名中的至少一者;如果不匹配,所述解析模块则不对SQL语句进行语义解析。
[0038]优选的,所述机器语言形式的预定的语法规则可以以语法分析树形式存储。语法分析树的各级分支存储着各个预定的语法。所述解析模块可以通过将识别出的词、符号和序列表示的组合与语法分析树的各级分支上的各个预定语法规则进行比较,来寻找匹配的预定语法规则。
[0039]根据一种优选实施方式,当识别出的词、符号和序列表示的组合与预定的语法规则中的一个语法规则匹配时,所述解析模块输出所确定的所述SQL语句的操作类型、操作字段和表名中的至少一者,例如可以通过显示器输出所述SQL语句的操作类型、操作字段和表名以供用户进行参考分析。
[0040]识别出的词、符号和序列表示的组合与预定的语法规则中的任何语法都不匹配,有可能是因为SQL语句还没有输入完整,用户可能还会继续进行输入SQL语句。因而,根据另一种优选实施方式,当所述解析模块识别出的词、符号和序列表示的组合与预定的语法规则中的任何语法规则都不匹配时,等待所述接收模块继续接收输入的SQL语句以将后续接收的SQL语句结合在一起进行解析,这样,就可以接收到完整的SQL语句并进行解析。如果在大于等于预定的时间期间内,所述接收模块没有接收输入的SQL语句,且所述解析模块识别出的词、符号和/或序列表示与预定的语法规则中的任何语法规则仍然不匹配,则表示SQL语句解析失败,此时所述解析模块可以将表示解析失败的信息作为解析结果输出。
[0041]利用本发明提供的用于数据审计系统的SQL语句解析方法和系统,能够准确识别SQL语句操作类型、操作的数据库表名、列名等对象信息,并且与正则匹配方式相比,不需要编写匹配规则,识别效率更高。
【权利要求】
1.一种用于数据审计系统的SQL语句解析方法,其中,该方法包括: a)接收输入的SQL语句; b)识别SQL语句中的词、符号和序列表示的组合; c)将识别出的词、符号和序列表示的组合与预定的语法规则中的各个语法规则进行比较,当识别出的词、符号和序列表示的组合与预定的语法规则中的一个语法规则匹配时,则根据所述预定的语法规则中匹配的语法规则确定所述SQL语句的操作类型、操作字段和表名中的至少一者;当识别出的词、符号和序列表示的组合与预定的语法规则中的任何语法规则都不匹配时,不对SQL语句进行语义解析。
2.根据权利要求1所述的用于数据审计系统的SQL语句解析方法,其中,所述步骤b)包括: 对所述SQL语句中的字符进行逐个扫描,以识别SQL语句中的词、符号和序列表示的组合 o
3.根据权利要求1所述的用于数据审计系统的SQL语句解析方法,其中, 所述步骤b)包括:将识别出的词、符号和序列表示的组合转化为机器语言标记; 所述步骤c)包括:将所述机器语言标记与机器语言形式的预定的语法规则中的各个语法规则进行比较。
4.根据权利要求3所述的用于数据审计系统的SQL语句解析方法,其中, 所述机器语言形式的预定的语法规则以语法分析树形式存储。
5.根据权利要求1所述的用于数据审计系统的SQL语句解析方法,其中, 所述步骤c)还包括:当识别出的词、符号和序列表示的组合与预定的语法规则中的一个语法规则匹配时,输出所确定的所述SQL语句的操作类型、操作字段和表名中的至少一者。
6.根据权利要求1所述的用于数据审计系统的SQL语句解析方法,其中, 所述步骤c)还包括:当识别出的词、符号和序列表示的组合与预定的语法规则中的任何语法规则都不匹配时,返回到步骤a)等待继续接收输入的SQL语句以将后续接收的SQL语句结合在一起进行解析,直到在大于等于预定的时间期间内没有接收输入的SQL语句为止,并将表示解析失败的信息作为解析结果输出。
7.一种用于数据审计系统的SQL语句解析系统,其中,该系统包括: 接收模块,用于接收输入的SQL语句; 识别模块,用于识别SQL语句中的词、符号和序列表示的组合; 解析模块,用于将识别出的词、符号和序列表示的组合与预定的语法规则中的各个语法规则进行比较,当识别出的词、符号和序列表示的组合与预定的语法规则中的一个语法规则匹配时,则根据所述预定的语法规则中匹配的语法规则确定所述SQL语句的操作类型、操作字段和表名中的至少一者;当识别出的词、符号和序列表示的组合与预定的语法规则中的任何语法规则都不匹配时,不对SQL语句进行语义解析。
8.根据权利要求7所述的用于数据审计系统的SQL语句解析系统,其中, 所述识别模块通过所述SQL语句中的字符进行逐个扫描,以识别SQL语句中的词、符号和序列表示的组合。
9.根据权利要求7所述的用于数据审计系统的SQL语句解析系统,其中,所述识别模块还用于将识别出的词、符号和序列表示的组合转化为机器语言标记;所述解析模块还用于将所述机器语言标记与机器语言形式的预定的语法规则中的各个语法规则进行比较。
10.根据权利要求9所述的用于数据审计系统的SQL语句解析系统,其中, 所述机器语言形式的预定的语法规则以语法分析树形式存储。
11.根据权利要求7所述的用于数据审计系统的SQL语句解析系统,其中, 所述解析模块当识别出的词、符号和序列表示的组合与预定的语法规则中的一个语法规则匹配时,输出所确定的所述SQL语句的操作类型、操作字段和表名中的至少一者。
12.根据权利要求7所述的用于数据审计系统的SQL语句解析系统,其中, 所述解析模块当识别出的词、符号和序列表示的组合与预定的语法规则中的任何语法规则都不匹配时,等待所述接收模块继续接收输入的SQL语句以将后续接收的SQL语句结合在一起进行解析,直到所述接收模块在大于等于预定的时间期间内没有接收输入的SQL语句为止,所述解析模块`将表示解析失败的信息作为解析结果输出。
【文档编号】G06F17/30GK103778185SQ201310742814
【公开日】2014年5月7日 申请日期:2013年12月27日 优先权日:2013年12月27日
【发明者】张凤羽 申请人:北京天融信软件有限公司, 北京天融信网络安全技术有限公司, 北京天融信科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1