数据库审计方法及设备的制造方法_2

文档序号:9417507阅读:来源:国知局
),如调制的数据信号和载波。
[0051]图1示出了本申请实施例提供的一种数据库审计方法,该方法包括以下步骤:
[0052]步骤SlOl,获取浏览器端与中间件之间的业务流数据以及所述中间件与服务器之间的数据流数据,其中所述业务流数据包含用户信息,所述数据流数据包含操作信息;
[0053]步骤S102,对所述数据流数据与所述业务流数据进行匹配;
[0054]步骤S103,若匹配成功,则确定所述数据流数据包含的操作信息与所述业务流数据包含的用户信息的映射关系。
[0055]在此,本方案所应用的包含中间件的数据库的结构如图2所示,其中,业务流数据2A表示在浏览器端210与中间件220之间的交互数据,包含用户信息,例如浏览器端IP和登录用户名等,数据流数据2B表示中间件220与服务器230的之间的交互数据,包含数据库操作信息,例如SQL语句等。为简明起见,图2中示出的浏览器端、中间件和服务器均为一个,其数量可能小于一个实际数据库系统中的数量,但这种省略无疑地是以不会影响对本发明进行清楚、充分的公开为前提的。
[0056]所述业务流数据与数据流数据之间存在一定的关联,即数据流数据一般随业务流数据产生,例如所述业务流数据为用户发送的对于数据库中某一数据的操作请求,而数据流数据则是根据该操作请求生成的特定操作指令。因此,业务流数据与数据流数据之间可以通过特定的方式进行匹配,确定两者之间的关联关系,例如通过比较业务流数据和数据流数据中某些信息的生成时间、所包含的特定的参数等。
[0057]在此,本领域技术人员应当理解,上述方法的执行主体可以包括但不限于如网络主机、单个网络服务器、多个网络服务器集或基于云计算的计算机集合等实现。在此,云由基于云计算(Cloud Computing)的大量主机或网络服务器构成,其中,云计算是分布式计算的一种,由一群松散耦合的计算机集组成的一个虚拟计算机。优选地,设备还可以是运行于网络主机、服务器或者计算机的软件。
[0058]在实际应用中,以采用http (HyperText Transfer Protocol,超文本传输协议)的交互场景为例,所述业务流数据可以是浏览器端向中间件发送的http数据包,在抓取http数据包时该http数据包的源IP即为浏览器端IP,通过对http数据包中的URL (UniformResource Locator,统一资源定位符)进行解析,可以获取到登录用户名。例如,抓取到http数据包时其源IP为116.226.187.17,则此时浏览器端IP即为116.226.187.17,其中URL 为:http://192.168.0.1:80/login, aspx ? username = superadmin&cs = utf-8&br=ie,通过解析该URL可以获知登录用户名为superadmin。由此可知,该条业务流数据对应的用户信息中,浏览器端IP为116.226.187.17,登录用户名为superadmin。一般情况下,在获取到登录用户名和浏览器端IP后会将两者绑定,并保存在缓存中以便在后续匹配时使用。相应地,数据流数据可以是SQL语句,例如抓取到的SQL语句为:update t_sess1nset username = ^superadmin? , status = ^active? where userid = 1234,该 SQLi吾句即包含了对数据库的操作信息,表示更改t_sess1n表,把userid = 1234的行中:username更改为 superadmin, status 更改为 active。
[0059]该方案同时获取浏览器端与中间件之间的业务流数据以及所述中间件与服务器之间的数据流数据,并通过对数据流数据与业务流数据进行匹配,确定操作信息与用户信息之间的映射关系,从而获知对于数据库的某一操作是由哪个用户执行,实现对包含中间件的数据库进行准确的数据库审计。
[0060]优选地,步骤SlOl具体包括:获取浏览器端与中间件之间的业务流数据以及所述中间件与服务器之间的数据流数据,并对所述数据流数据和业务流数据进行预处理,保留与匹配相关的信息。在获取到业务流数据和数据流数据时,通过预处理的手段仅保留与后续的匹配处理相关的信息,可以减少后续处理时的计算量,降低计算负载,提高处理效率。仍以前述场景为例,对于业务流数据中的URL,可以分离相关的参数,将URL处理为仅包含文档路径的格式,如前述提及的URL即可以处理为:/login.aspx。而对于数据流数据中的SQL语句进行的预处理为将命名绑定参数格式或者非绑定参数格式的SQL语句处理为无序绑定参数格式。其中,所述非绑定参数格式的SQL语句中参数采用具体值表示,例如前述提及的 SQLi吾句:update t_sess1n set username = ^superadmin? , status =‘active’ where userid = 1234即为非绑定参数格式,所述命名绑定参数格式的SQL语句中参数米用变量名表不,例如 update t_sess1n set username = ‘superadmin,,status=‘active’where userid = id,其中id即为变量名。在将上述命名绑定参数格式或者非绑定参数格式的SQL语句处理为无序绑定参数格式时,分离其相关的参数,并将参数的部分采用问号替代,最终处理得到的无序绑定参数格式的SQL语句为:update t_sess1n setusername = ?,status = ? where userid = ?。
[0061]进一步地,步骤S102对所述业务流数据与所述数据流数据进行匹配,具体包括:根据所述业务流数据与数据流数据的产生时间以及所包含的参数对所述业务流数据与所述数据流数据进行匹配。在实际应用中,数据流数据与业务流数据并非孤立的数据,两者之间存在一定的关联。由于中间件一般会在接收到业务流数据之后,随即生成数据流数据,因此一般情况下两者的产生时间比较接近。
[0062]具体地,匹配的方式可以采用时间加权结合参数加权的方式,具体包括如图3所示的步骤:
[0063]步骤S301,根据所述业务流数据的产生时间和所述数据流数据的产生时间确定匹配的时间加权值,并根据所述业务流数据所包含的参数和所述数据流数据的所包含的参数确定参数加权值。
[0064]步骤S302,根据所述时间加权值和参数加权值对所述业务流数据与所述数据流数据进行匹配。
[0065]在实际应用中,可以用URL表示业务流数据,SQL语句表示数据流数据。例如,某一 SQL语句sqla的产生时间为09:00:01:000,若此时有两条URL,分别为urla和urlb,其中urla的产生时间为09:00:00:955,而urlb的产生时间为09:00:00:020,由此可知urla的产生时间与sqla的产生时间更为接近。根据产生时间的接近程度,可以对urla和urlb分别进行打分,获取时间加权值,作为后续匹配是否成功的依据。其中,对于时间加权值的具体打分方式,可以根据具体应用场景来设定,例如根据时间差,在50微秒以内时间加权值为10,在此基础上时间差越大,时间加权值越低。对于上述的urla和urlb,显然urla比urlb的时间加权值更大。
[0066]在进行参数加权时,通过比较URL和SQL语句中是否包含同样的参数来确定参数加权值。仍以前述URL和SQL语句为例,sqla:select*from table where name='aaa,urla 为:http://192.168.0.1:80/find, aspx ? param = aaa,而 urlb 为:http://192.168.0.1:80/login, aspx ? username = superadmin&cs = utf-8&br = ie。对于urla,其存在参数“aaa”,sqla中也存在同样的参数“aaa”,而urlb中没有参数与所述sqla中的参数相同。因此,urla的参数加权值比urlb的更大。若在前述步骤SlOl中已经完成了业务流数据和数据流数据的预处理,通过分离的参数即可快速确定参数加权值。
[0067]在根据所述时间加权值和参数加权值对所有的URL与SQL语句进行匹配时,可以按照时间加权值和参数加权值进行匹配过滤,最终保留I个(匹配成功)或者O个(匹配失败)URL。在上述场景下,由于urla的时间加权值和参数加权值均大于urlb,因此,相对于urlb,urla更有可能是与该SQL语句匹配的URL。在匹配过滤时,可以针对时间加权值和/或参数加权值设定最低的阈值,例如,若urla的时间加权值和/或参数加权值未达到阈值,则可以判定为匹配失败,否则判定为匹配成功,完成sqla与
当前第2页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1