专利名称::一种sql解析及匹配的方法和系统的制作方法
技术领域:
:本发明涉及网络安全防护技术,尤其涉及一种SQL解析及匹配的方法和系统。
背景技术:
:网络入侵检测系统和网络入侵防御系统,是防护网络安全的重要方式和手段,通常部署在关键网络内部入口或者网络边界入口处,实时监控和捕获进出网络的网络数据流并进行智能综合分析,发现实时网络入侵行为并进行实时的阻断或者报警等响应措施。审计产品同样是网络安全防护中很重要的一种方式和手段,审计产品也是部署在关键网络内部或者网络边界入口处,旁路监听网络中实时的数据流并进行智能综合分析,从而监控网络中系统、设备等是否运行正常,保护网络中的重要资产。应用层协议深层解析技术,在当前主流网络入侵检测和网络入侵防御产品和审计产品中被广泛采用,可用来实现基于协议攻击特征和协议异常的入侵检测,也可用来实现审计产品对应用层服务的审计和监视功能。数据库作为业务网最核心的资产,一直都是网络安全产品重点保护监视的对象。数据库SQL语句的解析程度以及匹配精确度,对网络入侵检测和网络入侵防御以及审计产品来说,显得尤为重要。目前很多网络入侵检测和网络入侵防御以及审计产品,对SQL语句的解析程度都较低,其主要表现在(1)普遍地停留在从用户的网络环境中获取到SQL语句的程度,并没有对其进行深层次的语法解析,导致SQL语句与用户关注的定义规则进行匹配的成功率很低;(2)容易导致误报或者漏报等严重的事件发生。目前很多网络入侵检测和网络入侵防御以及审计产品,对SQL规则的匹配成功率也较低,导致这样问题主要有两点(1)如前所述的SQL语句的解析程度不够;(2)匹配算法太过简单,一般采用简单的字符串匹配方式对整个结果进行匹配。综上所述,有鉴于目前对SQL语句解析以及SQL规则匹配的程度都较低,有必要提出SQL语句解析及规则匹配效果都较好的技术,以解决上述技术问题。
发明内容本发明所要解决的技术问题,首先在于需要提供一种SQL语句解析及匹配的方法和系统,以对SQL语句进行高效的解析及匹配。为了解决上述技术问题,本发明提供了一种SQL解析及匹配的方法,包括分析数据库环境,建立数据库表与数据库及数据库表字段的关联关系库;根据所述关联关系库,建立匹配规则集合;根据SQL/99标准定义的SQL语句,建立词法扫描器和语法分析器识别的基础语法分析规则库;根据主流数据库厂商实现的SQL语句,建立所述词法扫描器和语法分析器识别的扩展语法分析规则库;接收输入的SQL语句后,根据所述基础语法分析规则库及扩展语法分析规则库,对所述输入的SQL语句进行语法分析,获得用户关注信息;建立运算符集合,为所述运算符集合中的运算符建立匹配算法;根据所述匹配规则集合以及所述运算符集合,选取匹配算法;采用选取的匹配算法,将所述用户关注信息与所述匹配规则集合进行匹配,获得匹配结果。优选地,所述关联关系库包含所述数据库表与所述数据库的关联关系,以及所述数据库与所述数据库表字段的关联关系。优选地,建立所述词法扫描器识别的词法分析规则;根据所述SQL/99标准定义的SQL语句,建立所述语法分析器识别的语法分析基础规则;根据所述词法分析规则及语法分析基础规则,建立所述基础语法分析规则库。优选地,根据所述主流数据库厂商实现的SQL语句,建立所述语法分析器识别的语法分析扩展规则;根据所述语法分析扩展规则,建立所述扩展语法分析规则库。优选地,所述运算符集合中的运算符,适用的数据类型包括数值类型和字符串类型。优选地,所述用户关注信息,包括命令名、表名、字段名、字段值以及关键字中的至少一种。为了解决上述技术问题,本发明还提供了一种SQL解析及匹配的系统,包括关联关系建立模块,用于分析数据库环境,获得数据库表与数据库及数据库表字段的关联关系库;匹配规则建立模块,与所述关联关系建立模块相连,用于根据所述关联关系库,建立匹配规则集合;语法分析规则建立模块,用于根据SQL/99标准定义的SQL语句,建立词法扫描器和语法分析器识别的基础语法分析规则库;根据主流数据库厂商实现的SQL语句,建立所述词法扫描器和语法分析器识别的扩展语法分析规则库;分析模块,与所述语法分析规则建立模块相连,用于接收输入的SQL语句,根据所述基础语法分析规则库及扩展语法分析规则库,对所述输入的SQL语句进行语法分析,获得用户关注信息;运算符建立模块,用于建立运算符集合,并为所述运算符集合中的运算符建立匹配算法;匹配模块,与所述匹配规则建立模块、分析模块及运算符建立模块相连,用于根据所述匹配规则集合以及所述运算符集合选取匹配算法,并采用选取的匹配算法,将所述用户关注信息与所述匹配规则集合进行匹配,获得匹配结果。优选地,所述关联关系建立模块建立的所述关联关系库,包括所述数据库表与所述数据库的关联关系,以及所述数据库与所述数据库表字段的关联关系。优选地,所述语法分析规则建立模块,建立所述词法扫描器识别的词法分析规则;根据SQL/99标准定义的SQL语句,建立所述语法分析器识别的语法分析基础规则;根据所述词法分析规则及语法分析基础规则,建立所述基础语法分析规则库;根据所述主流数据库厂商实现的SQL语句,建立所述语法分析器识别的语法分析扩展规则;根据所述语法分析扩展规则,建立所述扩展语法分析规则库。优选地,所述运算符建立模块建立的所述运算符集合,其中的运算符适用的数据类型包括数值类型和字符串类型。本发明针对现有技术中网络入侵检测和网络入侵防御、数据库审计产品中规则定义过于机械化等问题,提高了对数据库SQL语句解析、上报的准确性,具有SQL解析完整性好、准确率高以及智能化程度高的优点,可广泛应用于网络入侵检测和网络入侵防御、数据库审计等网络安全产品中。图1为本发明SQL解析及匹配方法实施例的流程示意图。图2为本发明中一关联关系示意图。图3为本发明中SQL语法分析流程示意图。图4为本发明中灵活精确匹配流程示意图。图5为本发明中灵活匹配过程示意图。图6为本发明中精确匹配过程示意图。图7为本发明SQL解析及匹配系统实施例的组成示意图。具体实施例方式以下将结合附图及实施例来详细说明本发明的实施方式,借此对本发明如何应用技术手段来解决技术问题,并达成技术效果的实现过程能充分理解并据以实施。目前大多数的网络入侵检测和网络入侵防御以及审计产品,其对SQL规则的匹配成功率较低的原因之一,就是匹配算法过于简单,一般仅采用简单的字符串匹配方式对整个结果进行匹配,并没有根据不同类型的结果采用不同的匹配算法。图1为本发明SQL解析及匹配方法实施例的流程示意图。如图1所示,该方法实施例主要包括如下步骤步骤S110,分析用户的数据库环境,建立数据库表与数据库及数据库表字段的关联关系库,该关联关系库中包含数据库表与数据库的关联关系,以及数据库与数据库表字段的关联关系;步骤S112,根据所建立的该关联关系库,建立SQL匹配规则集合;该SQL匹配规则集合包含有若干SQL匹配规则,建立SQL匹配规则时,在关联关系库中查找输入的对象,存在的话引出所有与之关联的对象;步骤S120,建立词法扫描器(flex)识别的SQL词法分析规则;步骤S122,根据SQL/99标准定义的SQL语句,建立语法分析器(yacc)识别的SQL语法分析基础规则;步骤S124,根据flex识别的SQL词法分析规则以及yacc识别的SQL语法分析基6础规则,建立词法扫描器和语法分析器(flex&yacc)识别的SQL基础语法分析规则库;步骤S130,根据主流数据库厂商实现的SQL语句,建立yacc识别的SQL语法分析扩展规则;步骤S132,根据该yacc识别的SQL语法分析扩展规则,建立flex&yacc识别的SQL扩展语法分析规则库;步骤S140,接收到输入的一SQL语句后,根据该SQL基础语法分析规则库及SQL扩展语法分析规则库对接收到的该SQL语句进行语法分析,获得用户关注信息;该用户关注信息包括命令名、表名、字段名、字段值以及关键字等用户关注的各种字段值中的至少一种;步骤S150,根据本系统支持的运算符建立运算符集合,并为各运算符建立对应的匹配算法,该运算符集合中包含多种字符运算符和数值运算符;步骤S152,根据SQL匹配规则集合以及运算符集合,选取匹配算法;步骤S154,采用所选取的匹配算法,将该用户关注信息与S112步骤中建立的SQL匹配规则库进行匹配,获得匹配结果。需要说明的是,上述步骤S150建立运算符集合的时机,并没有进行严格的限定,且也可以在步骤S124之前,也可以在步骤S132之前。本发明上述方法,降低了网络入侵检测和网络入侵防御及审计产品对SQL规则配置的复杂度,减少了非智能的人为定义规则时会出现的误操作,深度的SQL语法分析可以得到粒度很小的对用户来说可能更加有用的数据,灵活精确的匹配算法减少了衡量网络安全产品重要指标的漏报率及误报率等等。以下给出一个建立数据库表与数据库及数据库表字段关联关系的应用实例,来详细说明图1所示方法流程中步骤S110。在数据库服务器host_a上,存在名为sch00l_bj和名为sCh00l_sh的两个数据库,在sch00l_bj数据库中存在名为student和class的数据库表,在sch00l_sh数据库中存在名为student和score的数据库表。student数据库表的表结构如表1所示表1其中,s_id、s_name、s_class及s_scores为数据库表student的字段名。class的数据库表的表结构如表2所示表2其中,c_id及c_name为数据库表class的字段名。score的数据库表的表结构如表3所示表37其中,s_id及s_scores为数据库表score的字段名。根据如上所述的表结构,建立数据库表student、class,score的SQL脚本为createtablestudent(s_idintnotnullprimarykey,s_namechar(20)notnull,s_classchar(20)notnullforeignkeyreferencesclass,s_scoresintcheck(s_socres>=Oands_socre<=100)default0)createtableclass(c_idintnotnullprimarykey,c_namechar(20)notnull,)createtablescore(s_idintnotnullprimarykey,s_scoresintcheck(s_socres>=Oands_socres<=100)default0)通过分析建立数据库表student的SQL脚本,可以得到(1)所属表student的列字段名s_id,s_name,s_class以及s_scores;(2)每个列字段名的属性,如s_id的属性有主关键字,不能为空,数据类型是数值型。通过以上分析,得到了数据库表student、class和score,与数据库school_bj和SChool_Sh之间的关联关系,以及与数据库表字段之间的关联关系。所得的关联关系参见图2所示。以下给出一个建立匹配规则的应用实例,基于前述获得关联联系的应用实例,详细说明上述步骤S112。在配置匹配规则的时候,需要手动选择输入两类数据(1)数据库对象,如数据库名、数据库表以及数据库表字段等;(2)操作运算符,如=以及!等等。另外,还需要手动输入要匹配的值。比如,手动选择数据库表、手动选择=操作运算符。那么,配置匹配规则时会根据从关联关系库中读取当前数据库环境中的所有数据库和数据库表,把读取到的数据库和数据库表关联起来,然后再建立匹配规则。在应用实例中,会建立如下的4条匹配规则数据库表=school_bj·student;数据库表=school_bj·class;数据库表=school_sh.student;数据库表=school_sh.score;8以下详细说明上述步骤S124中建立SQL基础语法分析规则库,和上述步骤S132中建立SQL扩展语法分析规则库的详细过程。首先说明建立flex识别的SQL词法分析规则的过程。SQL/99和主流数据库厂商实现SQL语句中,对于SQL语句的注释定义有两种(1)行注释以--开始,后面带上任意说明字符;(2)段注释/**/,以/*开始,以*/结束,中间是任意的说明字符。建立flex识别的词法规则分别如下(1)对于行注释,建立的词法规则是"—'’[~\t]*;(2)对于段注释,建立的词法规则是"/*〃.*〃*/";(3)对于常见的字符串,建立的词法分析规则是'["‘\n]*';(4)对于常见的数值,建立的词法分析规则是W_9]+|、W-9]+"."*以及〃W-9]*;(5)对于常见的名称定义,建立的词法分析规则是[A-Za-z][A-Za-z0-9_]*。然后说明建立yacc识别的SQL语法分析规则的过程。比如在SQL/99中,对授予权限的SQL语句格式如下CREATEDATABASEdatabase_name[ON[<filespec>[,<filespec>.··]][,FILEGROUPfilegroup_name[CONTAINSFILESTREAM][DEFAULT]<filespec>[,<filespec>.··]][LOG0N<filespec>[,<filespec>.··]][COLLATEcollation_name][WITH<external_access_option>]]filespec格式([PRIMARY]NAME=logical_file_name,FILENAME='os_file_name'[,SIZE=size[KBIMBIGBITB]][,MAXSIZE={max_size[KB|MB|GB|TB]|UNLIMITED}][,FILEGROffTH=growth_increment[KB|MB|GB|TB%]])external_access_option格式[DB_CHAINING{ON|OFF}][,TRUSTWORTHY{ON|OFF}]那么,建立的yacc识别的语法分析规则应该如下create_database_statementCREATEDATABASEobject—namecreate_database_substatement;9create_database_substatementIONon_statement;;on_statementphysic_file_statementfilegroup—statementlogfile—statementcollate_statementwith_statement;physic_file_statementIdatabase—file一Iist',‘;filegroup_statementIFILEGROUPobject_namedatabase_file_list;Iogfile_statementILOGONdatabase_file_list;collate_statementICOLLATEobject_name;with_statementIWITHexternal_access_option_statement;external_access_option_statementIDB_CHAININGon_or_off_statementIDB_CHAININGon_or_off_statementTRUSTWORTHYon_or_off_statement;on_or_off_statementONIOFF;database_file_listdatabase_fileIdatabase_file_list‘,'database一file;database_fileprimary_label'('name_statementfilename_statementdatabase_file_attribute')';0183]primary_label0184]IPRIMARY0185];0186]name_statement0187]NAME'='NAME0188];0189]filename_statement0190]FILENAME'=〃\〃NAME,\〃0191];0192]database_file_attribute0193]create_fi1e_siζemax_file_sizefi1e_growth_siζe0194];0195]create_fi1e_siζe0196]ISIZE'='size_numsize_unit0197];0198]max_file_size0199]IMAXSIZE'='size_numsize_unit0200]IMAXSIZE'='UNLIMITED0201];0202]fi1e_growth_siζe0203]IFILEGROffTH'='size_numsize_unit0204]sizeunit0205]IKB0206]IMB0207]IGB0208]ITB0209]I'%'0210];0211]以下详细说明步骤S140中的语法分析过程。图3为本发明中SQL语法分析过程示意图。如图3所示,该语法分析过程主要包括如下步骤步骤S310,接收用户输入的一SQL语句;步骤S320,将接收的该SQL语句与基础语法分析规则库中的基础规则进行循环匹配,如果发现符合某条基础规则,转步骤S330,否则转步骤S340;步骤S330,进行语法分析基础规则处理,分析处理SQL语句中关注的对象值,然后执行步骤S350;步骤S340,将SQL语句与扩展语法分析规则库的扩展规则进行循环匹配,如果发现符合某条扩展规则,转步骤S350,否则转步骤S360;步骤S350,进行语法分析扩展规则处理,得到用户关注信息;步骤S360,没有得到任何处理结果,退出。以下详细说明上述步骤S150中建立运算符集合的过程。首先确定运算符的含义,然后建立运算符对应的匹配算法。表4给出了部分运算符以及对应的含义。表4与现有技术不同的是,通常对数值类型的运算符,比如=、<、>等,本发明中同样可以应用在字符串类型的数据上。比如,建立两条规则parameter<100,parameter<abcdefg,这两条规则对于<运算符对应的算法来说是没有区别的。也就是说,在定义规则的时候,运算符可以不考虑变量的数据类型。数据类型在前台定义规则的时候,完全被规避掉了,只是在运算符对应的算法里面才有区别。例如,用智能配置规则配置了两条规则rulel:s_score<1000rule2:s_score<abc对于S_SCOre变量来说,单从匹配规则上来说,其数据类型既可以是数值类型也可以是字符串类型。因此,操作运算符<对应的算法就必须灵活处理,两种数据类型的处理都应该包含到。图4为本发明中灵活精确匹配流程示意图。如图4所示,操作运算符<对应的匹配流程,主要包括如下步骤步骤S410,判断输入的数据类型,如果是数值类型,转步骤S420,否则转步骤S430;步骤S420,比较数值大小,转步骤S460;12步骤S430,判断该字符串是否有效,如果有效转步骤S440,否转步骤S470;步骤S440,根据字符串长度比较字符串大小,成功则转步骤S460,否则转步骤S450;步骤S450,根据每个字符的值进行大小判断,转步骤S460;步骤S460,返回判断结果,结束;步骤S470,返回失败,结束。以下详细说明步骤S154中的匹配过程。图5为本发明中灵活匹配过程示意图。如图5所示,该匹配过程主要包括如下步骤步骤S510,从匹配规则集合中读取到一条匹配规则;步骤S520,获取当前匹配规则中变量需要匹配的值,执行步骤S530;步骤S530,获取当前匹配规则中的操作运算符,从而选定对应的匹配算法,执行步骤S540;步骤S540,将前述需要匹配的值以及选定的匹配算法作为输入,对经过语法分析获得的用户关注信息进行匹配,匹配成功,则执行步骤S550,否则返回步骤S510继续进行下一条匹配规则的匹配,直到所有规则匹配完毕;步骤S550,结束。以下通过一个应用实例来详细说明步骤S154中的匹配过程。存在如下的数据表,表结构中包含两个字段用户名和年收入。该表中有来两条记录表5要求将表中的年收入为10000的张三调选出来。那么,应该定义两条规则rulel:用户名=张三rule2年收入=10000只有一条记录同时命中这两条规则的时候,才能够说匹配成功了。这时,就需要匹配算法有很要的精确性。为了精确匹配出该记录,提出一个“关联与”的概念。所谓“关联与”就是说,一条记录的数据既命中了rulel,同时也命中了rule2,这时才能说该记录成功匹配。那么整合后的匹配规则就应该是骤rule用户名=张三“关联与”年收入=10000将“关联与”用&符号来替代的话,规则就变成了rule用户名=张三&年收入=10000图6为本发明中精确匹配过程示意图。如图6所示,该匹配过程主要包括如下步步骤S610,匹配“关联与”前面的匹配串,即“张三”,成功则转步骤S620,否则转步13骤S650;步骤S620,记录命中的变量值的序号,转步骤S630;步骤S630,取出“关联与”后相同序号的变量值,即“10000”,进行匹配,成功则转步骤S640,否则转步骤S650;步骤S640,匹配成功;步骤S650,匹配失败。图7为本发明SQL解析及匹配的系统实施例的组成示意图。请参考图1所示的方法实施例,图2所示的关联关系,以及图3至图6所示的分析、匹配过程,图7示出的系统实施例,主要包括关联关系建立模块710、匹配规则建立模块720、语法分析规则建立模块730、分析模块740、运算符建立模块750以及匹配模块760,其中关联关系建立模块710,用于分析数据库环境,获得数据库表与数据库及数据库表字段的关联关系库;匹配规则建立模块720,与关联关系建立模块710相连,用于根据该关联关系库,建立匹配规则集合;语法分析规则建立模块730,用于根据SQL/99标准定义的SQL语句,建立flex&yacc识别的基础语法分析规则库;根据主流数据库厂商实现的SQL语句,建立flex&yacc识别的扩展语法分析规则库;分析模块740,与该语法分析规则建立模块730相连,用于接收输入的SQL语句,根据该基础语法分析规则库及扩展语法分析规则库,对该输入的SQL语句进行语法分析,获得用户关注信息;运算符建立模块750,用于建立运算符集合,并为该运算符集合中的运算符建立匹配算法;匹配模块760,与该匹配规则建立模块720、分析模块740及运算符建立模块750相连,用于根据该匹配规则集合以及该运算符集合选取匹配算法,并采用选取的匹配算法,将该用户关注信息与该匹配规则集合进行匹配,获得匹配结果。上述关联关系建立模块710建立的该关联关系库,包括数据库表与数据库的关联关系,以及数据库与数据库表字段的关联关系。上述语法分析规则建立模块730,建立该基础语法分析规则库时,首先建立flex识别的词法分析规则;然后根据SQL/99标准定义的SQL语句,建立yacc识别的语法分析基础规则;再根据该词法分析规则及语法分析基础规则,建立该基础语法分析规则库。上述语法分析规则建立模块730,建立该扩展语法分析规则库时,首先根据该主流数据库厂商实现的SQL语句,建立该yacc识别的语法分析扩展规则;然后根据该语法分析扩展规则,建立该扩展语法分析规则库。上述运算符建立模块750建立的运算符集合中的运算法,适用的数据类型包括数值类型和字符串类型。本发明克服了现有技术的不足,提出的SQL解析及匹配的方法和系统,用于入侵检测、入侵防御网络入侵检测和网络入侵防御以及数据库审计产品,达到了对数据库SQL的智能配置、深度解析和精确匹配,具有良好的扩展性,能够处理不同厂商不同版本的数据库应用。虽然本发明所揭露的实施方式如上,但所述的内容只是为了便于理解本发明而采用的实施方式,并非用以限定本发明。任何本发明所属
技术领域:
内的技术人员,在不脱离本发明所揭露的精神和范围的前提下,可以在实施的形式上及细节上作任何的修改与变化,但本发明的专利保护范围,仍须以所附的权利要求书所界定的范围为准。1权利要求一种SQL解析及匹配的方法,其特征在于,包括分析数据库环境,建立数据库表与数据库及数据库表字段的关联关系库;根据所述关联关系库,建立匹配规则集合;根据SQL/99标准定义的SQL语句,建立词法扫描器和语法分析器识别的基础语法分析规则库;根据主流数据库厂商实现的SQL语句,建立所述词法扫描器和语法分析器识别的扩展语法分析规则库;接收输入的SQL语句后,根据所述基础语法分析规则库及扩展语法分析规则库,对所述输入的SQL语句进行语法分析,获得用户关注信息;建立运算符集合,为所述运算符集合中的运算符建立匹配算法;根据所述匹配规则集合以及所述运算符集合,选取匹配算法;采用选取的匹配算法,将所述用户关注信息与所述匹配规则集合进行匹配,获得匹配结果。2.如权利要求1所述的方法,其特征在于所述关联关系库包含所述数据库表与所述数据库的关联关系,以及所述数据库与所述数据库表字段的关联关系。3.如权利要求1所述的方法,其特征在于建立所述词法扫描器识别的词法分析规则;根据所述SQL/99标准定义的SQL语句,建立所述语法分析器识别的语法分析基础规则;根据所述词法分析规则及语法分析基础规则,建立所述基础语法分析规则库。4.如权利要求1所述的方法,其特征在于根据所述主流数据库厂商实现的SQL语句,建立所述语法分析器识别的语法分析扩展规则;根据所述语法分析扩展规则,建立所述扩展语法分析规则库。5.如权利要求1所述的方法,其特征在于所述运算符集合中的运算符,适用的数据类型包括数值类型和字符串类型。6.如权利要求1所述的方法,其特征在于所述用户关注信息,包括命令名、表名、字段名、字段值以及关键字中的至少一种。7.—种SQL解析及匹配的系统,其特征在于,包括关联关系建立模块,用于分析数据库环境,获得数据库表与数据库及数据库表字段的关联关系库;匹配规则建立模块,与所述关联关系建立模块相连,用于根据所述关联关系库,建立匹配规则集合;语法分析规则建立模块,用于根据SQL/99标准定义的SQL语句,建立词法扫描器和语法分析器识别的基础语法分析规则库;根据主流数据库厂商实现的SQL语句,建立所述词法扫描器和语法分析器识别的扩展语法分析规则库;分析模块,与所述语法分析规则建立模块相连,用于接收输入的SQL语句,根据所述基础语法分析规则库及扩展语法分析规则库,对所述输入的SQL语句进行语法分析,获得用2户关注信息;运算符建立模块,用于建立运算符集合,并为所述运算符集合中的运算符建立匹配算法;匹配模块,与所述匹配规则建立模块、分析模块及运算符建立模块相连,用于根据所述匹配规则集合以及所述运算符集合选取匹配算法,并采用选取的匹配算法,将所述用户关注信息与所述匹配规则集合进行匹配,获得匹配结果。8.如权利要求7所述的系统,其特征在于所述关联关系建立模块建立的所述关联关系库,包括所述数据库表与所述数据库的关联关系,以及所述数据库与所述数据库表字段的关联关系。9.如权利要求7所述的系统,其特征在于所述语法分析规则建立模块,建立所述词法扫描器识别的词法分析规则;根据SQL/99标准定义的SQL语句,建立所述语法分析器识别的语法分析基础规则;根据所述词法分析规则及语法分析基础规则,建立所述基础语法分析规则库;根据所述主流数据库厂商实现的SQL语句,建立所述语法分析器识别的语法分析扩展规则;根据所述语法分析扩展规则,建立所述扩展语法分析规则库。10.如权利要求7所述的系统,其特征在于所述运算符建立模块建立的所述运算符集合,其中的运算符适用的数据类型包括数值类型和字符串类型。全文摘要本发明公开了一种SQL语句解析及匹配的方法和系统,以对SQL语句进行高效的解析及匹配。其中该方法包括建立数据库表与数据库及数据库表字段的关联关系库;根据关联关系库建立匹配规则集合;根据SQL/99标准定义的SQL语句建立基础语法分析规则库;根据主流数据库厂商实现的SQL语句,建立扩展语法分析规则库;根据该基础及扩展语法分析规则库对输入的SQL语句进行语法分析,获得用户关注信息;建立运算符集合,为运算符集合中的运算符建立匹配算法;根据匹配规则集合以及运算符集合选取匹配算法,将用户关注信息与匹配规则集合进行匹配,获得匹配结果。本发明可广泛应用于网络入侵检测和网络入侵防御、数据库审计等产品中。文档编号G06F17/30GK101901222SQ200910085039公开日2010年12月1日申请日期2009年5月27日优先权日2009年5月27日发明者刘晖,姚熙,邱少红,陈永涛申请人:北京启明星辰信息技术股份有限公司;北京启明星辰信息安全技术有限公司