发明内容
本发明的主要目的在于提供一种数据库审计方法及装置,旨在准确的进行数据库审计。
为实现上述目的,本发明提供一种数据库审计方法,所述数据库审计方法包括:
获取浏览器与WEB服务器之间的URL链接以及所述WEB服务器与数据库服务器之间的SQL语句;
基于所述URL链接的起止时间和/或关键字,以及所述SQL语句的起止时间和/或关键字,对所述URL链接和所述SQL语句进行第一次匹配;
在第一次匹配成功时,获取并基于第一次匹配成功的URL链接的身份标识,对第一次匹配成功的URL链接和第一次匹配成功的SQL语句进行第二次匹配;
在第二次匹配成功时,将第二次匹配成功的所述URL链接与第二次匹配成功的所述SQL语句关联。
可选的,所述获取并基于第一次匹配成功的URL链接的身份标识,对第一次匹配成功的URL链接和SQL语句进行第二次匹配的步骤包括:
获取第一次匹配成功的URL链接的身份标识对应的SQL模板中满足预设条件的第一SQL模板;
获取第一次匹配成功的SQL语句对应的第二SQL模板;
将所述第二SQL模板和各所述第一SQL模板进行比对,其中,当存在与所述第二SQL模板相同的第一SQL模板时,第一次匹配成功的URL链接与其第一次匹配的SQL语句匹配。
可选的,在执行将第二次匹配成功的所述URL链接与第二次匹配成功的所述SQL语句关联的同时,还执行以下步骤:
为第二次匹配成功的所述SQL语句分配第一置信度;
所述获取并基于第一次匹配成功的URL链接的身份标识,对第一次匹配成功的URL链接和SQL语句进行第二次匹配的步骤之后,还包括:
在第二次匹配失败时,将第一次匹配成功的所述URL链接与第一次匹配成功的SQL语句关联,并为第一次匹配成功的SQL语句分配第二置信度,其中,所述第二置信度低于所述第一置信度。
可选的,所述基于所述URL链接和所述SQL语句的起止时间和/或关键字对所述URL链接和所述SQL语句进行第一次匹配的步骤之后,还包括:
步骤A,在第一次匹配失败时,获取第一次匹配失败的URL链接的身份标识对应的SQL模板中满足预设条件的第三SQL模板;
步骤B,获取第一次匹配失败的SQL语句对应的第四SQL模板;
步骤C,将所述第四SQL模板和各所述第三SQL模板进行比对,若存在与所述第四SQL模板相同的第三SQL模板,则执行步骤D,否则执行步骤E;
步骤D,将所述第四SQL模板和第三SQL模板相同的SQL语句和URL链接关联,并为关联的SQL语句分配第二置信度;
步骤E,将所述第四SQL模板与第一次匹配失败的URL链接的身份标识对应的SQL模板中不满足预设条件的第五SQL模板进行比对;
步骤F,在存在与所述第四SQL模板相同的第五SQL模板时,将所述第四SQL模板和第五SQL模板相同的SQL语句和URL链接关联,并为关联的SQL语句分配第二置信度。
可选的,所述获取浏览器与WEB服务器之间的URL链接以及所述WEB服务器与数据库服务器之间的SQL语句的步骤之后,还包括:
基于获取的所述URL链接以及所述SQL语句,更新存储的所述身份标识以及所述身份标识对应的SQL模板。
此外,为实现上述目的,本发明还提供一种数据库审计装置,所述数据库审计装置包括:
获取模块,用于获取浏览器与WEB服务器之间的URL链接以及所述WEB服务器与数据库服务器之间的SQL语句;
匹配模块,用于基于所述URL链接的起止时间和/或关键字,以及所述SQL语句的起止时间和/或关键字,对所述URL链接和所述SQL语句进行第一次匹配;以及在第一次匹配成功时,获取并基于第一次匹配成功的URL链接的身份标识,对第一次匹配成功的URL链接和第一次匹配成功的SQL语句进行第二次匹配;
关联模块,用于在第二次匹配成功时,将第二次匹配成功的所述URL链接与第二次匹配成功的所述SQL语句关联。
可选的,所述匹配模块还用于获取第一次匹配成功的URL链接的身份标识对应的SQL模板中满足预设条件的第一SQL模板;以及获取第一次匹配成功的SQL语句对应的第二SQL模板;以及将所述第二SQL模板和各所述第一SQL模板进行比对,其中,当存在与所述第二SQL模板相同的第一SQL模板时,第一次匹配成功的URL链接与其第一次匹配的SQL语句匹配。
可选的,所述关联模块在将第二次匹配成功的所述URL链接与第二次匹配成功的所述SQL语句关联的同时,还用于为第二次匹配成功的所述SQL语句分配第一置信度;以及
在第二次匹配失败时,将第一次匹配成功的所述URL链接与第一次匹配成功的SQL语句关联,并为第一次匹配成功的SQL语句分配第二置信度,其中,所述第二置信度低于所述第一置信度。
可选的,所述匹配模块还用于在第一次匹配失败时,获取第一次匹配失败的URL链接的身份标识对应的SQL模板中满足预设条件的第三SQL模板;以及获取第一次匹配失败的SQL语句对应的第四SQL模板;以及将所述第四SQL模板和各所述第三SQL模板进行比对;
所述关联模块还用于在存在与所述第四SQL模板相同的第三SQL模板时,将所述第四SQL模板和第三SQL模板相同的SQL语句和URL链接关联,并为关联的SQL语句分配第二置信度;
所述匹配模块还用于在不存在与所述第四SQL模板相同的第三SQL模板时,将所述第四SQL模板与第一次匹配失败的URL链接的身份标识对应的SQL模板中不满足预设条件的第五SQL模板进行比对;
所述关联模块还用于在存在与所述第四SQL模板相同的第五SQL模板时,将所述第四SQL模板和第五SQL模板相同的SQL语句和URL链接关联,并为关联的SQL语句分配第二置信度。
可选的,所述数据库审计装置还包括更新模块,用于基于获取的所述URL链接以及所述SQL语句,更新存储的所述身份标识以及所述身份标识对应的SQL模板。
本发明提出的数据库审计方法及装置,在获取到待关联的URL链接以及SQL语句之后,首先基于URL链接和SQL语句的起止时间和/或关键字进行第一次匹配,初步确定URL链接和SQL语句的关联关系,缩小需要关联的数据范围。然后再基于第一次匹配成功的URL链接的身份标识对第一次匹配成功的URL链接和SQL语句进行第二次匹配,对初步确定的URL链接和SQL语句的关联关系进行修正,进而得到准确的URL链接和SQL语句的关联关系。相较于现有技术仅依据时间确定URL链接和SQL语句的关联关系,本发明能够获得更准确的URL链接和SQL语句的关联关系。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互任意结合。
本发明提供一种数据库审计方法,参照图1,在本发明数据库审计方法的第一实施例中,所述数据库审计方法包括:
步骤S10,获取浏览器与WEB服务器之间的URL链接以及所述WEB服务器与数据库服务器之间的SQL语句;
参照图2,在浏览器、WEB服务器以及数据库服务器构成的数据库系统中,WEB服务器作为中间件实现浏览器对数据库服务器的访问/关联,在实际应用中,浏览器和WEB服务器之间采用HTTP(HyperText TransferProtocol,超文本传输协议)进行交互,WEB服务器和数据库服务器之间采用TDS(Tabular Data Stream,表格数据流)协议进行交互。需要说明的是,本发明提供的数据库审计方法由数据库审计装置执行,该数据审计装置部署在数据库系统中运行。本实施例中,数据库审计装置在获取浏览器与WEB服务器之间的URL链接以及所述WEB服务器与数据库服务器之间的SQL语句时,可直接对WEB服务器与浏览器的连接端口以及WEB服务器与数据库服务器的连接端口分别进行抓包,也可对WEB服务器两侧(包括浏览器侧和数据库服务器侧)分别进行旁路抓包。
优选地,为避免对WEB服务器的正常服务造成影响,数据库审计装置通过旁路抓包的方式来获取浏览器与WEB服务器之间的URL链接以及所述WEB服务器与数据库服务器之间的SQL语句。具体的,预先分别为WEB服务器与浏览器的连接端口以及WEB服务器与数据库服务器的连接端口设置镜像端口,数据库审计装置通过设置的两个镜像端口获取浏览器与WEB服务器之间的URL链接以及所述WEB服务器与数据库服务器之间的SQL语句。
在具体实施时,数据库审计装置在抓取到浏览器和WEB服务器之间的Http数据包时,该Http数据包的源IP即浏览器端IP,然后解析出该Http数据包中的URL链接,将URL链接和浏览器端IP关联,并将该关联关系保存在缓存中以备使用。
步骤S20,基于所述URL链接的起止时间和/或关键字,以及所述SQL语句的起止时间和/或关键字,对所述URL链接和所述SQL语句进行第一次匹配;
本领域技术人员可以理解的是,URL链接和SQL语句并不是孤立的数据,二者之间存在一定的关联,即SQL语句通常随URL链接产生,例如,URL链接为用户基于浏览器发出的对于数据库中某一数据的操作请求,SQL语句则是WEB服务器根据该操作请求生成的特定操作指令。由于WEB服务器通常在接收到浏览器发送的URL链接之后,随即产生相应的SQL语句,因此,在通常情况下,SQL语句在其关联的URL链接的起止时间内产生。此外,由于SQL语句通常为WEB服务器基于其接收的URL链接而生成的用于指示数据库服务器完成特定数据库操作的特定操作指令,关联的URL链接和SQL语句通常携带有相同的关键字。
本实施例中,数据库审计装置首先基于获取到的URL链接的起止时间和/或关键字,以及SQL语句的起止时间和/或关键字,对获取到的URL链接和SQL语句进行第一次匹配,初步确定URL链接和SQL语句的关联关系,以缩小需要关联的数据范围。
其中,在进行基于起止时间的匹配时,可选中获取到的任一URL链接,根据该URL链接的起止时间,确定该起止时间内产生的所有SQL语句,将确定的所有SQL语句作为匹配结果。例如,某一URL链接URLa的起止时间为09:00:01-09:00:30,若该起止时间内产生有两条SQL语句,分别为SQLa和SQLb,则将SQLa和SQLb作为URLa基于起止时间的匹配结果。
在进行基于关键字的匹配时,可进行基于关键字的模糊匹配。其中,模糊匹配是指URL链接和SQL语句具有相同的关键字,而该相同的关键字在URL链接和SQL语句的位置不作限定,即URL链接和SQL语句只要具有相同的关键字就满足模糊匹配。例如,URLa为:Http://192.168.0.1:80/find.aspx?Param=aaa,SQLa为:select*from table wherename=‘aaa’,显而易见的,URLa和SQLa均存在关键字“aaa”,因此URLa和SQLa满足模糊匹配。
需要说明的是,在本实施例中,可进行基于起止时间和关键字的匹配,也可以只进行起止时间或只进行关键字的匹配,具体按实际需要进行。优选地,本实施例为提升后续匹配的准确度,进行基于起止时间和关键字的匹配。
步骤S30,在第一次匹配成功时,获取并基于第一次匹配成功的URL链接的身份标识,对第一次匹配成功的URL链接和第一次匹配成功的SQL语句进行第二次匹配;
本实施例中,在完成第一次匹配且第一次匹配成功时,数据库审计装置获取第一次匹配成功的URL链接的身份标识,并基于获取的身份标识对第一次匹配成功的URL链接和第一次匹配成功的SQL语句进行第二次匹配。其中,身份标识用于表征对应URL链接的身份,通俗的说,就是URL链接是通过何种浏览器动作产生的,如具体的浏览器按钮,其对应一组操作请求。
需要说明的是,前述身份标识根据Http协议操作的幂等性原理结合数据挖掘思想,通过逻辑分析定位识别预先得出。具体的:
1、根据对URL链接的分析,获取到URL地址、参数的key值、cookie标识、源程序名等信息,得到一个可能对应一组浏览器操作的URL标识;
2、创建URL收集矩阵,将此得到的URL标识作为横轴,URL参数的key值作为纵轴,将获取到的参数的value值不断填充到矩阵中;
3、通过大量数据的统计,获得各个参数的key值所产生的value的数量,设定判断区间,当key值产生的value的数据位于该判断区间内时,将该key值的值作为影响前述URL标识的影响参数,进而将前述URL标识结合该影响参数作为前述分析的URL链接的身份标识。
以下以具体示例进行说明:
1、获取到URLb为:
/task.php?opr=add&name=”jerry”&_time=1856039&strID=”1”;
2、将URLb的key值抽取得到URL标识串:
task.php?opr&name&time&strID;
3、将URL链接根据URL标识串与KEY值填充到如表1所示的矩阵中,经过大量URL链接的统计,得到矩阵如下:
Key值\URL标识串 |
task.php?opr&name&time&strID |
总命中 |
10255 |
opr |
4 |
name |
3799 |
_time |
9877 |
param |
0 |
strID |
1 |
表1
4、通过矩阵,容易发现key值为name时有3799种可能,为_time时有9877种可能,显然对于URL标识串无影响,而strID仅有1种,param为0种,同样无影响。
5、此时URL标识串task.php?opr&name&_time&strID中的opr的值,有最大的可能代表了该标识串对应的不同种类的操作。
6、将第2步得到的标识串结合opr的值“add”得到URLbd的身份标识:task.php?opr&name&_time&strID?add,并通过Hash算法生成长整形表示的唯一ID,如计算其CRC值,得到ID为:21375677245。
具体的,参照图3,步骤S30包括:
步骤S301,获取第一次匹配成功的URL链接的身份标识对应的SQL模板中满足预设条件的第一SQL模板;
步骤S302,获取第一次匹配成功的SQL语句对应的第二SQL模板;
步骤S303,将所述第二SQL模板和各所述第一SQL模板进行比对,其中,当存在与所述第二SQL模板相同的第一SQL模板时,第一次匹配成功的URL链接与其第一次匹配的SQL语句匹配。
需要说明的是,在本实施例中,预先基于各身份标识进行SQL模板化集合操作,其中,SQL模板指对SQL语句的模板化处理,将SQL语句中的可变的参数替换成通配符表示,例如,某一SQL语句SQLc:select*from a wherex>1234,模板化的SQLc为:select*from a where x>?。以下对基于身份标识的SQL模板化集合操作进行说明:
1、创建SQL收集矩阵,其中,以SQL模板为纵轴,身份标识为横轴;
2、以时间为关联,当某SQL模板出现在某身份标识的起止时间内时,将该SQL模板的计数进行自加操作,并同时记录各身份标识的出现次数;
3、经过持续一段时间的搜集(该持续时间可按实际需要进行设置),得到如表2所示的矩阵:
SQL模板\身份标识 |
21375677245 |
22586073322 |
23695581473 |
总命中 |
100 |
200 |
150 |
select*from a where x>? |
80 |
198 |
80 |
select*from b where x=? |
9 |
177 |
120 |
select*from c where x<? |
0 |
15 |
11 |
表2
4、将SQL模板出现的次数与身份标识出现的次数相除,得到SQL模板在身份标识中的比率,同时,设定比率阈值,若得到的比率大于等于比率阈值,则认为SQL模板与对应的身份标识强相关,否则为弱相关,从而得到各身份标识的强弱相关SQL模板集合。
在本实施例中,数据库审计装置在完成第一次匹配且第一次匹配成功时,依次选中第一次匹配成功的URL链接,在每次选中URL链接时,获取选中的URL链接的身份标识;基于获取的身份标识获取该身份标识对应的强相关SQL模板集合(即满足预设条件的第一SQL模板);获取选中的URL链接第一次匹配的SQL语句的第二SQL模板(即将该SQL语句模板化);将第二SQL模板与强相关SQL模板集合中的各第一SQL模板进行比对,其中,当存在与第二SQL模板相同的第一SQL模板时,当次选中的URL链接与其第一次匹配的SQL模板满足第二次匹配。
步骤S40,在第二次匹配成功时,将第二次匹配成功的所述URL链接与第二次匹配成功的所述SQL语句关联。
本实施例中,在第一次匹配成功且第二次匹配成功时,将第二次匹配成功的URL链接与其第二次匹配的SQL语句关联。
进一步的,本实施例中,数据库审计装置在将第二次匹配成功的URl链接与其第二次匹配的SQL语句关联时,同时为关联的SQL语句置不可回溯的标志,以表征该关联关系的第一置信度。
进一步的,在本实施例中,步骤S30之后,还包括:
在第二次匹配失败时,将第一次匹配成功的URL链接与其第一次匹配的SQL语句关联,并为第一次匹配成功的SQL语句分配第二置信度,其中,所述第二置信度低于所述第一置信度。
具体的,在第一次匹配成功且第二次匹配失败时,数据库审计装置将第一次匹配成功的URL链接与其第一次匹配的SQL语句关联,同时为关联的SQL语句置可回溯的标志,以表征该关联关系的第二置信度。
进一步的,本实施例中,在将第二次匹配成功的URL链接和SQL语句关联,并置不可回溯的标志的同时,将当前连接内的,URL持续时间段内的所有置有可回溯标志的SQL语句取出,如果取出的SQL语句的SQL模板在当前的URL链接的强相关集合中存在相同项,则将取出的SQL语句也关联到当前的URL链接。
基于前述描述,本领域技术人员可以理解的是,本实施例在完成URL链接和SQL语句的两次匹配之后,形成了URL链接和浏览器端IP的关联关系以及URL链接和SQL语句的关联关系,实现了浏览器、WEB服务器以及数据库服务器的三层关联。
本发明提出的数据库审计方法,在获取到待关联的URL链接以及SQL语句之后,首先基于URL链接和SQL语句的起止时间和/或关键字进行第一次匹配,初步确定URL链接和SQL语句的关联关系,缩小需要关联的数据范围。然后再基于第一次匹配成功的URL链接的身份标识对第一次匹配成功的URL链接和SQL语句进行第二次匹配,对初步确定的URL链接和SQL语句的关联关系进行修正,进而得到准确的URL链接和SQL语句的关联关系。相较于现有技术仅依据时间确定URL链接和SQL语句的关联关系,本发明能够获得更准确的URL链接和SQL语句的关联关系。
进一步的,基于第一实施例,提出本发明数据库审计方法的第二实施例,参照图4,在本实施例中,步骤S20之后,还包括:
步骤S50,在第一次匹配失败时,获取第一次匹配失败的URL链接的身份标识对应的SQL模板中满足预设条件的第三SQL模板;
步骤S60,获取第一次匹配失败的SQL语句对应的第四SQL模板;
步骤S70,将所述第四SQL模板和各所述第三SQL模板进行比对,若存在与所述第四SQL模板相同的第三SQL模板,则执行步骤S80,否则执行步骤S90;
步骤S80,将所述第四SQL模板和第三SQL模板相同的SQL语句和URL链接关联,并为关联的SQL语句分配第二置信度;
步骤S90,将所述第四SQL模板与第一次匹配失败的URL链接的身份标识对应的SQL模板中不满足预设条件的第五SQL模板进行比对;
步骤S100,在存在与所述第四SQL模板相同的第五SQL模板时,将所述第四SQL模板和第五SQL模板相同的SQL语句和URL链接关联,并为关联的SQL语句分配第二置信度。
在本实施例中,数据库审计装置在完成第一次匹配且第一次匹配失败时,依次选中第一次匹配失败的URL链接,在每次选中URL链接时,获取选中的URL链接的身份标识;基于获取的身份标识获取该身份标识对应的强相关SQL模板集合(即身份标识对应的SQL模板中满足预设条件的第三SQL模板);获取第一次匹配失败的各SQL语句对应的第四SQL模板,将各第四SQL模板与获取的强相关SQL模板集合中的各第三SQL模板进行比对;若存在与第四SQL模板相同的第三SQL模板,则将第四SQL模板和第三SQL模板相同的SQL语句和URL链接关联,并为关联的SQL语句分配第二置信度;若不存在与第四SQL模板相同的第三SQL模板,则将各第四SQL模板与身份标识的弱相关SQL模板集合中的各第五SQL模板(即身份标识对应的SQL模板中不满足预设条件的第五SQL模板)进行比对;若存在与第四SQL模板相同的第五SQL模板,则将第四SQL模板和第五SQL模板相同的SQL语句和URL链接关联,并为关联的SQL语句分配第二置信度;若不存在与第四SQL模板相同的第五SQL模板,则当次关联失败,即不存在关联的URL链接和SQL语句。
进一步的,基于第一或第二实施例,提出本发明数据库审计方法的第三实施例,在本实施例中,其特征在于,所述数据库审计方法还包括:
基于获取的所述URL链接以及所述SQL语句,更新存储的所述身份标识以及所述身份标识对应的SQL模板。
容易理解的是,采集的数据样本的越多,产生的结果越准确,本实施例在获取浏览器与WEB服务器之间的URL链接以及所述WEB服务器与数据库服务器之间的SQL语句,进行URL链接和SQL语句关联的同时,还对当前的身份标识,以及身份标识对应的强弱相关SQL模板集合进行更新,具体可分别参照前述实施例关于身份标识产生的描述以及SQL模板化集合操作的描述,此处不再赘述。
本发明还提供一种数据库审计装置,参照图5,在本发明数据库审计装置的第一实施例中,所述数据库审计装置包括:
获取模块10,用于获取浏览器与WEB服务器之间的URL链接以及所述WEB服务器与数据库服务器之间的SQL语句;
参照图2,在浏览器、WEB服务器以及数据库服务器构成的数据库系统中,WEB服务器作为中间件实现浏览器对数据库服务器的访问/关联,在实际应用中,浏览器和WEB服务器之间采用HTTP(HyperText TransferProtocol,超文本传输协议)进行交互,WEB服务器和数据库服务器之间采用TDS(Tabular Data Stream,表格数据流)协议进行交互。需要说明的是,本发明提供的数据库审计方法由数据库审计装置执行,该数据审计装置部署在数据库系统中运行。本实施例中,获取模块10在获取浏览器与WEB服务器之间的URL链接以及所述WEB服务器与数据库服务器之间的SQL语句时,可直接对WEB服务器与浏览器的连接端口以及WEB服务器与数据库服务器的连接端口分别进行抓包,也可对WEB服务器两侧(包括浏览器侧和数据库服务器侧)分别进行旁路抓包。
优选地,为避免对WEB服务器的正常服务造成影响,获取模块10通过旁路抓包的方式来获取浏览器与WEB服务器之间的URL链接以及所述WEB服务器与数据库服务器之间的SQL语句。具体的,预先分别为WEB服务器与浏览器的连接端口以及WEB服务器与数据库服务器的连接端口设置镜像端口,获取模块10通过设置的两个镜像端口获取浏览器与WEB服务器之间的URL链接以及所述WEB服务器与数据库服务器之间的SQL语句。
在具体实施时,获取模块10在抓取到浏览器和WEB服务器之间的Http数据包时,该Http数据包的源IP即浏览器端IP,然后解析出该Http数据包中的URL链接,将URL链接和浏览器端IP关联,并将该关联关系保存在缓存中以备使用。
匹配模块20,用于基于所述URL链接的起止时间和/或关键字,以及所述SQL语句的起止时间和/或关键字,对所述URL链接和所述SQL语句进行第一次匹配;以及在第一次匹配成功时,获取并基于第一次匹配成功的URL链接的身份标识,对第一次匹配成功的URL链接和第一次匹配成功的SQL语句进行第二次匹配;
本领域技术人员可以理解的是,URL链接和SQL语句并不是孤立的数据,二者之间存在一定的关联,即SQL语句通常随URL链接产生,例如,URL链接为用户基于浏览器发出的对于数据库中某一数据的操作请求,SQL语句则是WEB服务器根据该操作请求生成的特定操作指令。由于WEB服务器通常在接收到浏览器发送的URL链接之后,随即产生相应的SQL语句,因此,在通常情况下,SQL语句在其关联的URL链接的起止时间内产生。此外,由于SQL语句通常为WEB服务器基于其接收的URL链接而生成的用于指示数据库服务器完成特定数据库操作的特定操作指令,关联的URL链接和SQL语句通常携带有相同的关键字。
本实施例中,匹配模块20首先基于获取模块10获取到的URL链接的起止时间和/或关键字,以及SQL语句的起止时间和/或关键字,对获取到的URL链接和SQL语句进行第一次匹配,初步确定URL链接和SQL语句的关联关系,以缩小需要关联的数据范围。
其中,在进行基于起止时间的匹配时,匹配模块20可选中获取到的任一URL链接,根据该URL链接的起止时间,确定该起止时间内产生的所有SQL语句,将确定的所有SQL语句作为匹配结果。例如,某一URL链接URLa的起止时间为09:00:01-09:00:30,若该起止时间内产生有两条SQL语句,分别为SQLa和SQLb,则将SQLa和SQLb作为URLa基于起止时间的匹配结果。
在进行基于关键字的匹配时,匹配模块20可进行基于关键字的模糊匹配。其中,模糊匹配是指URL链接和SQL语句具有相同的关键字,而该相同的关键字在URL链接和SQL语句的位置不作限定,即URL链接和SQL语句只要具有相同的关键字就满足模糊匹配。例如,URLa为:Http://192.168.0.1:80/find.aspx?Param=aaa,SQLa为:select*from table wherename=‘aaa’,显而易见的,URLa和SQLa均存在关键字“aaa”,因此URLa和SQLa满足模糊匹配。
需要说明的是,在本实施例中,匹配模块20可进行基于起止时间和关键字的匹配,也可以只进行起止时间或只进行关键字的匹配,具体按实际需要进行。优选地,本实施例为提升后续匹配的准确度,匹配模块20进行基于起止时间和关键字的匹配。
本实施例中,在完成第一次匹配且第一次匹配成功时,匹配模块20获取第一次匹配成功的URL链接的身份标识,并基于获取的身份标识对第一次匹配成功的URL链接和第一次匹配成功的SQL语句进行第二次匹配。其中,身份标识用于表征对应URL链接的身份,通俗的说,就是URL链接是通过何种浏览器动作产生的,如具体的浏览器按钮,其对应一组操作请求。
需要说明的是,前述身份标识根据Http协议操作的幂等性原理结合数据挖掘思想,通过逻辑分析定位识别预先得出。具体的:
1、根据对URL链接的分析,获取到URL地址、参数的key值、cookie标识、源程序名等信息,得到一个可能对应一组浏览器操作的URL标识;
2、创建URL收集矩阵,将此得到的URL标识作为横轴,URL参数的key值作为纵轴,将获取到的参数的value值不断填充到矩阵中;
3、通过大量数据的统计,获得各个参数的key值所产生的value的数量,设定判断区间,当key值产生的value的数据位于该判断区间内时,将该key值的值作为影响前述URL标识的影响参数,进而将前述URL标识结合该影响参数作为前述分析的URL链接的身份标识。
以下以具体示例进行说明:
1、获取到URLb为:
/task.php?opr=add&name=”jerry”&_time=1856039&strID=”1”;
2、将URLb的key值抽取得到URL标识串:
task.php?opr&name&time&strID;
3、将URL链接根据URL标识串与KEY值填充到收集矩阵中,经过大量URL链接的统计,得到表1所示的矩阵;
4、通过矩阵,容易发现key值为name时有3799种可能,为_time时有9877种可能,显然对于URL标识串无影响,而strID仅有1种,param为0种,同样无影响。
5、此时URL标识串task.php?opr&name&_time&strID中的opr的值,有最大的可能代表了该标识串对应的不同种类的操作。
6、将第2步得到的标识串结合opr的值“add”得到URLbd的身份标识:
task.php?opr&name&_time&strID?add,并通过Hash算法生成长整形表示的唯一ID,如计算其CRC值,得到ID为:21375677245。
具体的,匹配模块20还用于获取第一次匹配成功的URL链接的身份标识对应的SQL模板中满足预设条件的第一SQL模板;以及获取第一次匹配成功的SQL语句对应的第二SQL模板;以及将所述第二SQL模板和各所述第一SQL模板进行比对,其中,当存在与所述第二SQL模板相同的第一SQL模板时,第一次匹配成功的URL链接与其第一次匹配的SQL语句匹配。
需要说明的是,在本实施例中,预先基于各身份标识进行SQL模板化集合操作,其中,SQL模板指对SQL语句的模板化处理,将SQL语句中的可变的参数替换成通配符表示,例如,某一SQL语句SQLc:select*from a wherex>1234,模板化的SQLc为:select*from a where x>?。以下对基于身份标识的SQL模板化集合操作进行说明:
1、创建SQL收集矩阵,其中,以SQL模板为纵轴,身份标识为横轴;
2、以时间为关联,当某SQL模板出现在某身份标识的起止时间内时,将该SQL模板的计数进行自加操作,并同时记录各身份标识的出现次数;
3、经过持续一段时间的搜集(该持续时间可按实际需要进行设置),得到如表2所示的矩阵;
4、将SQL模板出现的次数与身份标识出现的次数相除,得到SQL模板在身份标识中的比率,同时,设定比率阈值,若得到的比率大于等于比率阈值,则认为SQL模板与对应的身份标识强相关,否则为弱相关,从而得到各身份标识的强弱相关SQL模板集合。
在本实施例中,匹配模块20在完成第一次匹配且第一次匹配成功时,依次选中第一次匹配成功的URL链接,在每次选中URL链接时,获取选中的URL链接的身份标识;基于获取的身份标识获取该身份标识对应的强相关SQL模板集合(即满足预设条件的第一SQL模板);获取选中的URL链接第一次匹配的SQL语句的第二SQL模板(即将该SQL语句模板化);将第二SQL模板与强相关SQL模板集合中的各第一SQL模板进行比对,其中,当存在与第二SQL模板相同的第一SQL模板时,当次选中的URL链接与其第一次匹配的SQL模板满足第二次匹配。
关联模块30,用于在第二次匹配成功时,将第二次匹配成功的所述URL链接与第二次匹配成功的所述SQL语句关联。
本实施例中,在第一次匹配成功且第二次匹配成功时,关联模块30将第二次匹配成功的URL链接与其第二次匹配的SQL语句关联。
进一步的,本实施例中,关联模块30在将第二次匹配成功的URl链接与其第二次匹配的SQL语句关联时,同时为关联的SQL语句置不可回溯的标志,以表征该关联关系的第一置信度。
进一步的,在本实施例中,关联模块30还用于在第二次匹配失败时,将第一次匹配成功的URL链接与其第一次匹配的SQL语句关联,并为第一次匹配成功的SQL语句分配第二置信度,其中,所述第二置信度低于所述第一置信度。
具体的,在第一次匹配成功且第二次匹配失败时,关联模块30将第一次匹配成功的URL链接与其第一次匹配的SQL语句关联,同时为关联的SQL语句置可回溯的标志,以表征该关联关系的第二置信度。
进一步的,本实施例中,在将第二次匹配成功的URL链接和SQL语句关联,并置不可回溯的标志的同时,关联模块30将当前连接内的,URL持续时间段内的所有置有可回溯标志的SQL语句取出,如果取出的SQL语句的SQL模板在当前的URL链接的强相关集合中存在相同项,则将取出的SQL语句也关联到当前的URL链接。
基于前述描述,本领域技术人员可以理解的是,本实施例在完成URL链接和SQL语句的两次匹配之后,形成了URL链接和浏览器端IP的关联关系以及URL链接和SQL语句的关联关系,实现了浏览器、WEB服务器以及数据库服务器的三层关联。
本发明提出的数据库审计装置,在获取到待关联的URL链接以及SQL语句之后,首先基于URL链接和SQL语句的起止时间和/或关键字进行第一次匹配,初步确定URL链接和SQL语句的关联关系,缩小需要关联的数据范围。然后再基于第一次匹配成功的URL链接的身份标识对第一次匹配成功的URL链接和SQL语句进行第二次匹配,对初步确定的URL链接和SQL语句的关联关系进行修正,进而得到准确的URL链接和SQL语句的关联关系。相较于现有技术仅依据时间确定URL链接和SQL语句的关联关系,本发明能够获得更准确的URL链接和SQL语句的关联关系。
进一步的,基于第一实施例,提出本发明数据库审计装置的第二实施例,在本实施例中,匹配模块20还用于在第一次匹配失败时,获取第一次匹配失败的URL链接的身份标识对应的SQL模板中满足预设条件的第三SQL模板;以及获取第一次匹配失败的SQL语句对应的第四SQL模板;以及将所述第四SQL模板和各所述第三SQL模板进行比对;
所述关联模块30还用于在存在与所述第四SQL模板相同的第三SQL模板时,将所述第四SQL模板和第三SQL模板相同的SQL语句和URL链接关联,并为关联的SQL语句分配第二置信度;
所述匹配模块20还用于在不存在与所述第四SQL模板相同的第三SQL模板时,将所述第四SQL模板与第一次匹配失败的URL链接的身份标识对应的SQL模板中不满足预设条件的第五SQL模板进行比对;
所述关联模块30还用于在存在与所述第四SQL模板相同的第五SQL模板时,将所述第四SQL模板和第五SQL模板相同的SQL语句和URL链接关联,并为关联的SQL语句分配第二置信度。
在本实施例中,匹配模块20在完成第一次匹配且第一次匹配失败时,依次选中第一次匹配失败的URL链接,在每次选中URL链接时,获取选中的URL链接的身份标识;以及基于获取的身份标识获取该身份标识对应的强相关SQL模板集合(即身份标识对应的SQL模板中满足预设条件的第三SQL模板);以及获取第一次匹配失败的各SQL语句对应的第四SQL模板,将各第四SQL模板与获取的强相关SQL模板集合中的各第三SQL模板进行比对;若存在与第四SQL模板相同的第三SQL模板,则关联模块30将第四SQL模板和第三SQL模板相同的SQL语句和URL链接关联,并为关联的SQL语句分配第二置信度;若不存在与第四SQL模板相同的第三SQL模板,则匹配模块20将各第四SQL模板与身份标识的弱相关SQL模板集合中的各第五SQL模板(即身份标识对应的SQL模板中不满足预设条件的第五SQL模板)进行比对;若存在与第四SQL模板相同的第五SQL模板,则关联模块30将第四SQL模板和第五SQL模板相同的SQL语句和URL链接关联,并为关联的SQL语句分配第二置信度;若不存在与第四SQL模板相同的第五SQL模板,则当次关联失败,即不存在关联的URL链接和SQL语句。
进一步的,基于第一或第二实施例,提出本发明数据库审计装置的第三实施例,在本实施例中,所述数据库审计装置还包括更新模块,用于基于获取的所述URL链接以及所述SQL语句,更新存储的所述身份标识以及所述身份标识对应的SQL模板。
容易理解的是,采集的数据样本的越多,产生的结果越准确,本实施例在获取浏览器与WEB服务器之间的URL链接以及所述WEB服务器与数据库服务器之间的SQL语句,进行URL链接和SQL语句关联的同时,还对当前的身份标识,以及身份标识对应的强弱相关SQL模板集合进行更新,具体可分别参照前述实施例关于身份标识产生的描述以及SQL模板化集合操作的描述,此处不再赘述。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。