CN101901222A - 一种sql解析及匹配的方法和系统 - Google Patents

一种sql解析及匹配的方法和系统 Download PDF

Info

Publication number
CN101901222A
CN101901222A CN2009100850397A CN200910085039A CN101901222A CN 101901222 A CN101901222 A CN 101901222A CN 2009100850397 A CN2009100850397 A CN 2009100850397A CN 200910085039 A CN200910085039 A CN 200910085039A CN 101901222 A CN101901222 A CN 101901222A
Authority
CN
China
Prior art keywords
rule
matching
database
sql
incidence relation
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN2009100850397A
Other languages
English (en)
Other versions
CN101901222B (zh
Inventor
姚熙
陈永涛
刘晖
邱少红
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Venus Information Security Technology Co Ltd
Beijing Venus Information Technology Co Ltd
Original Assignee
Beijing Venus Information Security Technology Co Ltd
Beijing Venus Information Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Venus Information Security Technology Co Ltd, Beijing Venus Information Technology Co Ltd filed Critical Beijing Venus Information Security Technology Co Ltd
Priority to CN2009100850397A priority Critical patent/CN101901222B/zh
Publication of CN101901222A publication Critical patent/CN101901222A/zh
Application granted granted Critical
Publication of CN101901222B publication Critical patent/CN101901222B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种SQL语句解析及匹配的方法和系统,以对SQL语句进行高效的解析及匹配。其中该方法包括:建立数据库表与数据库及数据库表字段的关联关系库;根据关联关系库建立匹配规则集合;根据SQL/99标准定义的SQL语句建立基础语法分析规则库;根据主流数据库厂商实现的SQL语句,建立扩展语法分析规则库;根据该基础及扩展语法分析规则库对输入的SQL语句进行语法分析,获得用户关注信息;建立运算符集合,为运算符集合中的运算符建立匹配算法;根据匹配规则集合以及运算符集合选取匹配算法,将用户关注信息与匹配规则集合进行匹配,获得匹配结果。本发明可广泛应用于网络入侵检测和网络入侵防御、数据库审计等产品中。

Description

一种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语法分析基础规则,建立词法扫描器和语法分析器(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上,存在名为school_bj和名为school_sh的两个数据库,在school_bj数据库中存在名为student和class的数据库表,在school_sh数据库中存在名为student和score的数据库表。
student数据库表的表结构如表1所示:
表1
  s_id   s_name   s_class   s_scores
其中,s_id、s_name、s_class及s_scores为数据库表student的字段名。
class的数据库表的表结构如表2所示:
表2
  c_id   c_name
其中,c_id及c_name为数据库表class的字段名。
score的数据库表的表结构如表3所示:
表3
  s_id   s_scores
其中,s_id及s_scores为数据库表score的字段名。
根据如上所述的表结构,建立数据库表student、class、score的SQL脚本为:
create table student(
     s_id int not null primary key,
     s_name char(20)not null,
     s_class char(20)not null foreign key references class,
     s_scores int check(s_socres>=0and s_socre<=100)default 0
)
create table class (
     c_id int not null primary key,
     c_name char(20)not null,
)
create table score (
     s_id int not null primary key,
     s_scores int check(s_socres>=0and s_socres<=100)default 0
)
通过分析建立数据库表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;
以下详细说明上述步骤S124中建立SQL基础语法分析规则库,和上述步骤S132中建立SQL扩展语法分析规则库的详细过程。
首先说明建立flex识别的SQL词法分析规则的过程。
SQL/99和主流数据库厂商实现SQL语句中,对于SQL语句的注释定义有两种:
(1)行注释--*;以--开始,后面带上任意说明字符;
(2)段注释/**/,以/*开始,以*/结束,中间是任意的说明字符。
建立flex识别的词法规则分别如下:
(1)对于行注释,建立的词法规则是″--″[^\t]*;
(2)对于段注释,建立的词法规则是″/*″.*″*/″;
(3)对于常见的字符串,建立的词法分析规则是′[^′\n]*′;
(4)对于常见的数值,建立的词法分析规则是[0-9]+|、[0-9]+″.″[0-9]*以及″.″[0-9]*;
(5)对于常见的名称定义,建立的词法分析规则是[A-Za-z][A-Za-z0-9_]*。
然后说明建立yacc识别的SQL语法分析规则的过程。
比如在SQL/99中,对授予权限的SQL语句格式如下:
CREATE DATABASE database_name
 [ON
    [<filespec>[,<filespec>...]]
       [,FILEGROUP filegroup_name[CONTAINS FILESTREAM]
       [DEFAULT]<filespec>[,<filespec>...]]
    [LOG ON<filespec>[,<filespec>...]]
    [COLLATE collation_name]
    [WITH<external_access_option>]
]
filespec格式:
    (
    [PRIMARY]
    NAME=logical_file_name,
    FILENAME=′os_file_name′
    [,SIZE=size[KB|MB|GB|TB]]
    [,MAXSIZE={max_size[KB|MB|GB|TB]|UNLIMITED}]
    [,FILEGROWTH=growth_increment[KB|MB|GB|TB|%]]
    )
external_access_option格式:
    [DB_CHAINING{ON|OFF}]
    [,TRUSTWORTHY{ON|OFF}]
那么,建立的yacc识别的语法分析规则应该如下:
create_database_statement:
     CREATE DATABASE object_name create_database_substatement;
create_database_substatement:
        |        ON on_statement;
        ;
on_statement:
        physic_file_statement filegroup_statement logfile_statement
collate_statement with_statement
         ;
physic_file_statement:
        |        database_file_list′,′
        ;
filegroup_statement:
        |        FILEGROUP object_name database_file_list
        ;
logfile_statement:
         |       LOG ON database_file_list
         ;
collate_statement:
         |       COLLATE object_name
         ;
with_statement:
         |       WITH external_access_option_statement
         ;
external_access_option_statement:
         |       DB_CHAINING on_or_off_statement
         |            DB_CHAINING     on_or_off_statement
                TRUSTWORTHY on_or_off_statement
         ;
on_or_off_statement:
                 ON
        |        OFF
        ;
database_file_list:
                  database_file
        |       database_file_list′,′database_file
        ;
database_file:
        primary_label    ′(′   name_statement    filename_statement
        database_file_attribute′)′
        ;
primary_label:
       |         PRIMARY
       ;
name_statement:
                 NAME′=′NAME
        ;
filename_statement:
                 FILENAME′=″\″NAME′\″
        ;
database_file_attribute:
        create_file_size max_file_size file_growth_size
        ;
create_file_size:
        |       SIZE′=′size_num size_unit
        ;
max_file_size:
        |       MAXSIZE′=′size_num size_unit
        |       MAXSIZE′=′UNLIMITED
        ;
file_growth_size:
        |       FILEGROWTH′=′size_num size_unit
size unit:
        |       KB
        |       MB
        |       GB
        |       TB
        |       ′%′
        ;
以下详细说明步骤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,这两条规则对于<运算符对应的算法来说是没有区别的。也就是说,在定义规则的时候,运算符可以不考虑变量的数据类型。数据类型在前台定义规则的时候,完全被规避掉了,只是在运算符对应的算法里面才有区别。
例如,用智能配置规则配置了两条规则:
rule1:s_score<1000
rule2:s_score<abc
对于s_score变量来说,单从匹配规则上来说,其数据类型既可以是数值类型也可以是字符串类型。
因此,操作运算符<对应的算法就必须灵活处理,两种数据类型的处理都应该包含到。图4为本发明中灵活精确匹配流程示意图。如图4所示,操作运算符<对应的匹配流程,主要包括如下步骤:
步骤S410,判断输入的数据类型,如果是数值类型,转步骤S420,否则转步骤S430;
步骤S420,比较数值大小,转步骤S460;
步骤S430,判断该字符串是否有效,如果有效转步骤S440,否转步骤S470;
步骤S440,根据字符串长度比较字符串大小,成功则转步骤S460,否则转步骤S450;
步骤S450,根据每个字符的值进行大小判断,转步骤S460;
步骤S460,返回判断结果,结束;
步骤S470,返回失败,结束。
以下详细说明步骤S154中的匹配过程。图5为本发明中灵活匹配过程示意图。如图5所示,该匹配过程主要包括如下步骤:
步骤S510,从匹配规则集合中读取到一条匹配规则;
步骤S520,获取当前匹配规则中变量需要匹配的值,执行步骤S530;
步骤S530,获取当前匹配规则中的操作运算符,从而选定对应的匹配算法,执行步骤S540;
步骤S540,将前述需要匹配的值以及选定的匹配算法作为输入,对经过语法分析获得的用户关注信息进行匹配,匹配成功,则执行步骤S550,否则返回步骤S510继续进行下一条匹配规则的匹配,直到所有规则匹配完毕;
步骤S550,结束。
以下通过一个应用实例来详细说明步骤S154中的匹配过程。
存在如下的数据表,表结构中包含两个字段:用户名和年收入。该表中有来两条记录:
表5
  用户名   年收入
  张三   100000
  李四   100000
要求将表中的年收入为10000的张三调选出来。那么,应该定义两条规则:
rule1:用户名=张三
rule2:年收入=10000
只有一条记录同时命中这两条规则的时候,才能够说匹配成功了。
这时,就需要匹配算法有很要的精确性。为了精确匹配出该记录,提出一个“关联与”的概念。所谓“关联与”就是说,一条记录的数据既命中了rule1,同时也命中了rule2,这时才能说该记录成功匹配。那么整合后的匹配规则就应该是:
rule:用户名=张三“关联与”年收入=10000
将“关联与”用&符号来替代的话,规则就变成了:
rule:用户名=张三&年收入=10000
图6为本发明中精确匹配过程示意图。如图6所示,该匹配过程主要包括如下步骤:
步骤S610,匹配“关联与”前面的匹配串,即“张三”,成功则转步骤S620,否则转步骤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的智能配置、深度解析和精确匹配,具有良好的扩展性,能够处理不同厂商不同版本的数据库应用。
虽然本发明所揭露的实施方式如上,但所述的内容只是为了便于理解本发明而采用的实施方式,并非用以限定本发明。任何本发明所属技术领域内的技术人员,在不脱离本发明所揭露的精神和范围的前提下,可以在实施的形式上及细节上作任何的修改与变化,但本发明的专利保护范围,仍须以所附的权利要求书所界定的范围为准。

Claims (10)

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语句进行语法分析,获得用户关注信息;
运算符建立模块,用于建立运算符集合,并为所述运算符集合中的运算符建立匹配算法;
匹配模块,与所述匹配规则建立模块、分析模块及运算符建立模块相连,用于根据所述匹配规则集合以及所述运算符集合选取匹配算法,并采用选取的匹配算法,将所述用户关注信息与所述匹配规则集合进行匹配,获得匹配结果。
8.如权利要求7所述的系统,其特征在于:
所述关联关系建立模块建立的所述关联关系库,包括所述数据库表与所述数据库的关联关系,以及所述数据库与所述数据库表字段的关联关系。
9.如权利要求7所述的系统,其特征在于:
所述语法分析规则建立模块,建立所述词法扫描器识别的词法分析规则;根据SQL/99标准定义的SQL语句,建立所述语法分析器识别的语法分析基础规则;根据所述词法分析规则及语法分析基础规则,建立所述基础语法分析规则库;根据所述主流数据库厂商实现的SQL语句,建立所述语法分析器识别的语法分析扩展规则;根据所述语法分析扩展规则,建立所述扩展语法分析规则库。
10.如权利要求7所述的系统,其特征在于:
所述运算符建立模块建立的所述运算符集合,其中的运算符适用的数据类型包括数值类型和字符串类型。
CN2009100850397A 2009-05-27 2009-05-27 一种sql解析及匹配的方法和系统 Expired - Fee Related CN101901222B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2009100850397A CN101901222B (zh) 2009-05-27 2009-05-27 一种sql解析及匹配的方法和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2009100850397A CN101901222B (zh) 2009-05-27 2009-05-27 一种sql解析及匹配的方法和系统

Publications (2)

Publication Number Publication Date
CN101901222A true CN101901222A (zh) 2010-12-01
CN101901222B CN101901222B (zh) 2012-07-18

Family

ID=43226765

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2009100850397A Expired - Fee Related CN101901222B (zh) 2009-05-27 2009-05-27 一种sql解析及匹配的方法和系统

Country Status (1)

Country Link
CN (1) CN101901222B (zh)

Cited By (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102156740A (zh) * 2011-04-15 2011-08-17 国都兴业信息审计系统技术(北京)有限公司 Sql语句的处理方法及系统
CN102750374A (zh) * 2012-06-20 2012-10-24 深圳市远行科技有限公司 一种基于数据库脚本的数据追溯和影响关系的分析方法
CN102841990A (zh) * 2011-11-14 2012-12-26 哈尔滨安天科技股份有限公司 一种基于统一资源定位符的恶意代码检测方法和系统
CN102955801A (zh) * 2011-08-25 2013-03-06 中兴通讯股份有限公司 基于分布式数据库系统的数据控制方法及系统
CN104252357A (zh) * 2013-11-05 2014-12-31 深圳市华傲数据技术有限公司 一种sql语言解析方法和装置
CN105335403A (zh) * 2014-07-23 2016-02-17 华为技术有限公司 数据库访问方法及装置、数据库系统
CN106202386A (zh) * 2016-07-08 2016-12-07 唐博 自动分析数据库表关系的方法
CN106650108A (zh) * 2016-12-26 2017-05-10 北京华大九天软件有限公司 一种设计库及设计单元的显示方法
CN107908739A (zh) * 2017-11-15 2018-04-13 湖南上容信息技术有限公司 动态语法解析方法及其解析系统
CN108255837A (zh) * 2016-12-28 2018-07-06 中国移动通信集团浙江有限公司 一种sql解析器及方法
CN109033410A (zh) * 2018-08-03 2018-12-18 韩雪松 一种基于正则与字符串切割的sql解析方法
CN109408378A (zh) * 2018-09-30 2019-03-01 福建星瑞格软件有限公司 一种在大数据量下快速定位sql解析错误的测试方法及系统
CN110580248A (zh) * 2019-09-04 2019-12-17 北京明略软件系统有限公司 基于规则库扩充的数据治理方法及装置
CN112948419A (zh) * 2021-03-02 2021-06-11 广州海量数据库技术有限公司 查询语句处理方法及装置
CN114666078A (zh) * 2020-12-08 2022-06-24 北京中科网威信息技术有限公司 Sql注入攻击的检测方法及系统、电子设备及存储介质
US11537606B2 (en) 2019-03-12 2022-12-27 Advanced New Technologies Co., Ltd. Solution for implementing computing service based on structured query language statement

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1251067C (zh) * 2002-06-26 2006-04-12 联想(北京)有限公司 一种减少结构化查询语言解释器占用系统资源的方法
CN101267357B (zh) * 2007-03-13 2010-11-17 北京启明星辰信息技术股份有限公司 一种sql注入攻击检测方法及系统
CN101388763B (zh) * 2007-09-12 2011-02-02 北京启明星辰信息技术股份有限公司 一种支持多种数据库类型的sql注入攻击检测系统

Cited By (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102156740A (zh) * 2011-04-15 2011-08-17 国都兴业信息审计系统技术(北京)有限公司 Sql语句的处理方法及系统
CN102156740B (zh) * 2011-04-15 2013-02-13 国都兴业信息审计系统技术(北京)有限公司 Sql语句的处理方法及系统
CN102955801A (zh) * 2011-08-25 2013-03-06 中兴通讯股份有限公司 基于分布式数据库系统的数据控制方法及系统
CN102841990A (zh) * 2011-11-14 2012-12-26 哈尔滨安天科技股份有限公司 一种基于统一资源定位符的恶意代码检测方法和系统
CN102750374A (zh) * 2012-06-20 2012-10-24 深圳市远行科技有限公司 一种基于数据库脚本的数据追溯和影响关系的分析方法
CN104252357A (zh) * 2013-11-05 2014-12-31 深圳市华傲数据技术有限公司 一种sql语言解析方法和装置
CN105335403B (zh) * 2014-07-23 2020-02-14 华为技术有限公司 数据库访问方法及装置、数据库系统
US10534771B2 (en) 2014-07-23 2020-01-14 Huawei Technologies Co., Ltd. Database access method and apparatus, and database system
CN105335403A (zh) * 2014-07-23 2016-02-17 华为技术有限公司 数据库访问方法及装置、数据库系统
CN106202386A (zh) * 2016-07-08 2016-12-07 唐博 自动分析数据库表关系的方法
CN106650108A (zh) * 2016-12-26 2017-05-10 北京华大九天软件有限公司 一种设计库及设计单元的显示方法
CN108255837A (zh) * 2016-12-28 2018-07-06 中国移动通信集团浙江有限公司 一种sql解析器及方法
CN107908739A (zh) * 2017-11-15 2018-04-13 湖南上容信息技术有限公司 动态语法解析方法及其解析系统
CN109033410B (zh) * 2018-08-03 2021-10-29 韩雪松 一种基于正则与字符串切割的sql解析方法
CN109033410A (zh) * 2018-08-03 2018-12-18 韩雪松 一种基于正则与字符串切割的sql解析方法
CN109408378A (zh) * 2018-09-30 2019-03-01 福建星瑞格软件有限公司 一种在大数据量下快速定位sql解析错误的测试方法及系统
US11537606B2 (en) 2019-03-12 2022-12-27 Advanced New Technologies Co., Ltd. Solution for implementing computing service based on structured query language statement
CN110580248A (zh) * 2019-09-04 2019-12-17 北京明略软件系统有限公司 基于规则库扩充的数据治理方法及装置
CN114666078A (zh) * 2020-12-08 2022-06-24 北京中科网威信息技术有限公司 Sql注入攻击的检测方法及系统、电子设备及存储介质
CN114666078B (zh) * 2020-12-08 2022-12-20 北京中科网威信息技术有限公司 Sql注入攻击的检测方法及系统、电子设备及存储介质
CN112948419A (zh) * 2021-03-02 2021-06-11 广州海量数据库技术有限公司 查询语句处理方法及装置

Also Published As

Publication number Publication date
CN101901222B (zh) 2012-07-18

Similar Documents

Publication Publication Date Title
CN101901222B (zh) 一种sql解析及匹配的方法和系统
CN112738126B (zh) 基于威胁情报和att&amp;ck的攻击溯源方法
US7073074B2 (en) System and method for storing events to enhance intrusion detection
CN111083126A (zh) 一种基于专家知识库的渗透测试风险评估方法以及模型
CN105637519A (zh) 使用行为辨识系统的认知信息安全性
WO2022021977A1 (zh) 黑产账号检测方法、装置、计算机设备和介质
CN113098887A (zh) 一种基于网站联合特征的钓鱼网站检测方法
CN117240598B (zh) 攻击检测方法、装置、终端设备及存储介质
CN110008462B (zh) 一种命令序列检测方法及命令序列处理方法
CN114760106A (zh) 网络攻击的确定方法、系统、电子设备及存储介质
CN115865525A (zh) 日志数据处理方法、装置、电子设备和存储介质
CN112925805A (zh) 基于网络安全的大数据智能分析应用方法
CN113746832B (zh) 多方法混合的分布式apt恶意流量检测防御系统及方法
CN113904834B (zh) 基于机器学习的xss攻击检测方法
CN114157501A (zh) 一种基于天睿数据库的参数解析方法及装置
CN113132393A (zh) 异常检测方法、装置、电子设备以及存储介质
CN109918638B (zh) 一种网络数据监测方法
CN115361182B (zh) 一种僵尸网络行为分析方法、装置、电子设备及介质
CN115051820B (zh) 一种多维度防暴力破解方法、装置、设备及可读存储介质
CN115643044A (zh) 数据处理方法、装置、服务器及存储介质
CN115878927A (zh) 一种诈骗网站的识别方法、装置、存储介质和电子设备
Moreno-Vera et al. Cream skimming the underground: Identifying relevant information points from online forums
CN111934949A (zh) 一种基于数据库注入测试的安全测试系统
Liao et al. Evidential reasoning for forensic readiness
CN118337403B (zh) 基于ioc的攻击路径还原方法、装置、电子设备及介质

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20120718

Termination date: 20180527

CF01 Termination of patent right due to non-payment of annual fee