一种数据库操作的处理方法和系统转让专利

申请号 : CN202111189665.8

文献号 : CN113641424B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 杨海峰高强花

申请人 : 北京安华金和科技有限公司

摘要 :

本申请公开了一种数据库操作的处理方法和系统,第一客户端接收到来自预定进程的对数据库进行操作的操作请求,第一客户端内配置有第一环境变量,第一环境变量用于操作请求转向预先加载的库中的库函数上,预先加载的库函数与数据库的库中的库函数名称相同;通过预加载的库中的库函数获取操作请求对应的操作内容;第一客户端将操作请求转发给第二客户端,第二客户端用于将操作请求转发给数据库,第二客户端内配置有第二环境变量,第二环境变量用于将通过第二客户端发起的操作请求转向数据库的库中的库函数上。通过本申请解决了改变环境变量有可能导致数据库工作出现异常的问题,起到了即使改变了环境变量也可以使数据库正常工作的效果。

权利要求 :

1.一种数据库操作的处理方法,其特征在于,包括:第一客户端接收到来自预定进程的对数据库进行操作的操作请求,其中,所述第一客户端内配置有第一环境变量,所述第一环境变量用于将所述操作请求转向预先加载的库中的库函数上,所述预先加载的库中的库函数与数据库的库中的库函数名称相同,所述第一客户端为所述数据库的客户端;

通过所述预先加载的库中的库函数获取所述操作请求对应的操作内容;

所述第一客户端将所述操作请求转发给第二客户端,其中,所述第二客户端用于将所述操作请求转发给所述数据库,所述第二客户端内配置有第二环境变量,所述第二环境变量用于将通过所述第二客户端发起的所述操作请求转向所述数据库的库中的库函数上,所述第二环境变量还被所述数据库使用。

2.根据权利要求1所述的方法,其特征在于,还包括:将所述第二客户端的属性修改为不可执行;

将修改所述第二客户端的属性的权限配置给所述第一客户端。

3.根据权利要求1至2中任一项所述的方法,其特征在于,所述第一客户端将所述操作请求转发给第二客户端包括:

对所述操作内容进行校验,在校验成功的情况下,通过所述第一客户端将所述操作请求转发给所述第二客户端。

4.根据权利要求3所述的方法,其特征在于,还包括:在校验失败的情况下,通过所述预先加载的库函数结束所述操作请求。

5.一种数据库操作的处理系统,其特征在于,所述系统包括第一客户端,所述第一客户端为数据库的客户端,所述第一客户端包括:接收模块,用于接收到来自预定进程的对数据库进行操作的操作请求,其中,所述第一客户端内配置有第一环境变量,所述第一环境变量用于将所述操作请求转向预先加载的库中的库函数上,所述预先加载的库中的库函数与数据库的库中的库函数名称相同;

获取模块,用于通过所述预先加载的库中的库函数获取所述操作请求对应的操作内容;

转发模块,用于将所述操作请求转发给第二客户端,其中,所述第二客户端用于将所述操作请求转发给所述数据库,其中,所述第二客户端内配置有第二环境变量,所述第二环境变量用于将通过所述第二客户端发起的所述操作请求转向所述数据库的库中的库函数上,所述第二环境变量还被所述数据库使用。

6.根据权利要求5所述的系统,其特征在于,所述系统还包括:修改模块,用于将所述第二客户端的属性修改为不可执行;

第四配置模块,用于将修改所述第二客户端的属性的权限配置给所述第一客户端。

7.根据权利要求5至6中任一项所述的系统,其特征在于,所述第一客户端还包括:校验模块,用于对所述操作内容进行校验,在校验成功的情况下,通过所述第一客户端将所述操作请求转发给所述第二客户端。

8.根据权利要求7所述的系统,其特征在于,所述校验模块还用于在校验失败的情况下,通过所述预先加载的库函数结束所述操作请求。

说明书 :

一种数据库操作的处理方法和系统

技术领域

[0001] 本申请涉及到数据库领域,具体而言,涉及一种数据库操作的处理方法和系统。

背景技术

[0002] 基于系统运行平台例如Linux/Unix,运行的程序之间的操作交互通常是通过操作系统进行的,而系统运行平台是无法通过操作系统获取操作涉及的具体内容的。
[0003] 在操作内容是文件等具备实体承载形式的情况下,可以通过具体的承载文件获取具体的操作内容,而在操作内容不具备实体承载形式时,是无法获取操作涉及的具体内容
的,因此也就无法就程序之间的操作交互进行监控,也无法实现对于操作内容的审计,使得
程序之间的操作交互存在安全风险。
[0004] 为了解决这个问题,在相关技术中提出了一个解决方案,在该方案中,在终端设备中检测到目标进程发起目标操作的情况下,通过预先配置的环境变量定向到预加载数据
库,其中,上述预加载数据库中存储有与系统操作所需调用的操作函数的同名函数;在上述
预加载数据库中查找到与上述目标操作对应的目标函数的情况下,控制上述目标进程调用
上述预加载数据库中的上述目标函数;从上述目标函数中获取上述目标操作的操作内容。
[0005] 该方案在linux系统中,使用LD_PRELOAD。LD_PRELOAD就是这样一个环境变量,它可以影响程序的运行时的链接(Runtime linker),它允许定义在程序运行前优先加载的动
态链接库。这个功能主要就是用来有选择性的载入不同动态链接库中的相同函数。通过这
个环境变量,可以在主程序和其动态链接库的中间加载别的动态链接库,甚至覆盖正常的
函数库。
[0006] 采用该方案时,使用LD_PRELOAD更改了数据库客户端的环境变量,将目标操作的函数转向使用LD_PRELOAD预加载的同名函数中,从同名函数获取目标操作的操作内容。在
该方案中,使用了LD_PRELOAD之后,不仅仅影响了数据库客户端的操作,还有可能影响数据
库的相关程序,这可能会导致数据库工作出现异常。

发明内容

[0007] 本申请实施例提供了一种数据库操作的处理方法和系统,以至少解决改变环境变量有可能导致数据库工作出现异常的问题。
[0008] 根据本申请的一个方面,提供了一种数据库操作的处理方法,包括:第一客户端接收到来自预定进程的对数据库进行操作的操作请求,其中,所述第一客户端内配置有第一
环境变量,所述第一环境变量用于所述操作请求转向预先加载的库中的库函数上,所述预
先加载的库函数与数据库的库中的库函数名称相同,所述第一客户端为所述数据库的客户
端;通过所述预加载的库中的库函数获取所述操作请求对应的操作内容;所述第一客户端
将所述操作请求转发给第二客户端,其中,所述第二客户端用于将所述操作请求转发给所
述数据库,所述第二客户端内配置有第二环境变量,所述第二环境变量用于将通过所述第
二客户端发起的所述操作请求转向所述数据库的库中的库函数上,所述第二环境变量还被
所述数据库使用。
[0009] 进一步地,在所述第一客户端接收到来自所述预定进行的所述操作请求之前,所述方法还包括:配置所述第二环境变量,并确定所述第二客户端和所述数据库在所述第二
环境变量下正常工作;修改所述第二客户端的访问地址从第一地址修改为第二地址;将所
述第二地址配置给所述第一客户端,其中,所述第一客户端使用所述第二地址与所述第二
客户端交互;将所述第一地址配置给所述第一客户端。
[0010] 进一步地,还包括:将所述第二客户端的属性修改为不可执行;将修改所述第二客户端的属性的权限配置给所述第一客户端。
[0011] 进一步地,所述第一客户端将所述操作请求转发给第二客户端包括:对所述操作内容进行校验,在校验成功的情况下,通过所述第一客户端将所述操作请求转发给所述第
二客户端。
[0012] 进一步地,还包括:在校验失败的情况下,通过所述预先加载的库函数结束所述操作请求。
[0013] 根据本申请的另一个方面,还提供了一种数据库操作的处理系统,所述系统包括第一客户端,所述第一客户端为数据库的客户端,所述第一客户端包括:接收模块,用于接
收到来自预定进程的对数据库进行操作的操作请求,其中,所述第一客户端内配置有第一
环境变量,所述第一环境变量用于所述操作请求转向预先加载的库中的库函数上,所述预
先加载的库函数与数据库的库中的库函数名称相同;获取模块,用于通过所述预加载的库
中的库函数获取所述操作请求对应的操作内容;转发模块,用于将所述操作请求转发给第
二客户端,其中,所述第二客户端用于将所述操作请求转发给所述数据库,其中,所述第二
客户端内配置有第二环境变量,所述第二环境变量用于将通过所述第二客户端发起的所述
操作请求转向所述数据库的库中的库函数上,所述第二环境变量还被所述数据库使用。
[0014] 进一步地,所述系统还包括:第一配置模块,用于配置所述第二环境变量,并确定所述第二客户端和所述数据库在所述第二环境变量下正常工作;第一修改模块,用于修改
所述第二客户端的访问地址从第一地址修改为第二地址;第二配置模块,用于将所述第二
地址配置给所述第一客户端,其中,所述第一客户端使用所述第二地址与所述第二客户端
交互;第三配置模块,用于将所述第一地址配置给所述第一客户端。
[0015] 进一步地,所述系统还包括:修改模块,用于将所述第二客户端的属性修改为不可执行;第四配置模块,用于将修改所述第二客户端的属性的权限配置给所述第一客户端。
[0016] 进一步地,所述第一客户端还包括:校验模块,用于对所述操作内容进行校验,在校验成功的情况下,通过所述第一客户端将所述操作请求转发给所述第二客户端。
[0017] 进一步地,所述校验模块还用于在校验失败的情况下,通过所述预先加载的库函数结束所述操作请求。
[0018] 在本申请实施例中,采用了第一客户端接收到来自预定进程的对数据库进行操作的操作请求,其中,所述第一客户端内配置有第一环境变量,所述第一环境变量用于所述操
作请求转向预先加载的库中的库函数上,所述预先加载的库函数与数据库的库中的库函数
名称相同,所述第一客户端为所述数据库的客户端;通过所述预加载的库中的库函数获取
所述操作请求对应的操作内容;所述第一客户端将所述操作请求转发给第二客户端,其中,
所述第二客户端用于将所述操作请求转发给所述数据库,其中,所述第二客户端内配置有
第二环境变量,所述第二环境变量用于将通过所述第二客户端发起的所述操作请求转向所
述数据库的库中的库函数上,所述第二环境变量还被所述数据库使用。通过本申请解决了
改变环境变量有可能导致数据库工作出现异常的问题,起到了即使改变了环境变量也可以
使数据库正常工作的效果。

附图说明

[0019] 构成本申请的一部分的附图用来提供对本申请的进一步理解,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
[0020] 图1是根据本申请实施例的数据库操作的处理方法的流程图。

具体实施方式

[0021] 需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
[0022] 需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不
同于此处的顺序执行所示出或描述的步骤。
[0023] 在本实施例中提供了一种数据库操作的处理方法,图1是根据本申请实施例的数据库操作的处理方法的流程图,如图1所示,该流程包括如下步骤:
[0024] 步骤S102,第一客户端接收到来自预定进程的对数据库进行操作的操作请求,其中,第一客户端内配置有第一环境变量,第一环境变量用于操作请求转向预先加载的库中
的库函数上,预先加载的库函数与数据库的库中的库函数名称相同,第一客户端为数据库
的客户端;预先加载的库可以包括静态库和/或动态库,其中静态库在程序编译时会被连接
到目标代码中,程序运行时将不再需要该静态库。动态库在程序编译时并不会被连接到目
标代码中,而是在程序运行是才被载入,因此在程序运行时还需要动态库存在。
[0025] 步骤S104,通过预加载的库中的库函数获取操作请求对应的操作内容;
[0026] 步骤S106,第一客户端将操作请求转发给第二客户端,其中,第二客户端用于将操作请求转发给数据库,第二客户端内配置有第二环境变量,第二环境变量用于将通过第二
客户端发起的操作请求转向数据库的库中的库函数上,第二环境变量还被数据库使用。
[0027] 在上述步骤中,第二客户端和数据库是正常的客户端和数据库,其中的第二环境变量是正常配置的环境变量,这样可以保证第二客户端和数据库正常工作。第一客户端可
以理解为套在第二客户端之前的一个壳,第一客户端中可以重新配置第一环境变量,该环
境变量可以将操作请求转到预先加载的库的库函数上,而不是调用数据库中的库的库函
数。因此,通过上述步骤解决了改变环境变量有可能导致数据库工作出现异常的问题,起到
了即使改变了环境变量也可以使数据库正常工作的效果。
[0028] 本实施例在进行实施时,可以先配置好第二客户端和数据库中的第二环境变量,在配置好之后,修改第二客户端的访问地址从第一地址修改为第二地址,这样就将第二客
户端进行了隐藏,然后;将第二地址配置给第一客户端,其中,第一客户端使用第二地址与
第二客户端交互;将第一地址配置给第一客户端。由于其他进程或者程序均是使用第一地
址调用数据库客户端的,因此,所有的操作请求会直接发送给第一客户端。
[0029] 虽然通过修改访问地址的方式将第二客户端了进行隐藏,但是,第二客户端仍然有被访问的请求,为了避免这个问题的存在。一个可选实施方式中,还可以将第二客户端的
属性修改为不可执行;将修改第二客户端的属性的权限配置给第一客户端。通过该可选方
式,就只有第一客户端能够运行第二客户端了。
[0030] 在可选实施方式中,第一客户端将第二客户端的属性修改为可执行,然后,第一客户端运行第二客户端之后将操作请求转发给第二客户端。
[0031] 通过预加载的库中的库函数(在本实施例中可以被称为目标函数)获取操作请求对应的操作内容,可以将操作内容保存下来,保存下来的操作内容用来进行审计。此时,还
可以保存预定进程的名称和/或标识信息,以及预定进行发起操作请求的时间,这些内容均
可以保存下来进行审计。或者,还可以对操作内容进行校验,如果操作内容存在风险,则可
以进行相应的处理。在该可选实施方式中,对操作内容进行校验,在校验成功的情况下,通
过第一客户端将操作请求转发给第二客户端。在校验失败的情况下,通过预先加载的库函
数结束操作请求。
[0032] 例如,根据目标函数执行操作内容安全性的判断可以但不限于是为目标函数或对应的操作函数预先设置执行权限。执行权限可以是操作函数具体执行内容的权限。以write
函数为例,执行权限可以但不限于是,操作内容可以是对数据库中的预定表或者预定字段
有没有执行权限,确定操作内容符合执行权限,操作内容通过验证。当目标函数获取的操作
内容是在数据库写入新的数据,确定操作内容不符合执行权限,则操作内容未通过验证。
[0033] 在另一个实施例中,可以将第一环境变量(例如,第一环境变量可以为LD_PRELOAD)环境变量的调用优先级配置为置顶调用。在预加载的库中未查找到目标函数的情
况下,按照调用优先级通过下一级调用接口查找目标函数。
[0034] 在本实施例中,提供一种电子装置,包括存储器和处理器,存储器中存储有计算机程序,处理器被设置为运行计算机程序以执行以上实施例中的方法。
[0035] 上述程序可以运行在处理器中,或者也可以存储在存储器中(或称为计算机可读介质),计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或
技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计
算机的存储介质的例子包括,但不限于相变内存 (PRAM)、静态随机存取存储器 (SRAM)、动
态随机存取存储器 (DRAM)、其他类型的随机存取存储器 (RAM)、只读存储器 (ROM)、电可
擦除可编程只读存储器 (EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器 
(CD‑ROM)、数字多功能光盘 (DVD) 或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他
磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文
中的界定,计算机可读介质不包括暂存电脑可读媒体 (transitory media),如调制的数据
信号和载波。
[0036] 这些计算机程序也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他
可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方
框或多个方框中指定的功能的步骤,对应与不同的步骤可以通过不同的模块来实现。在该
实施例中也提供了这种系统,该系统可以被称为数据库操作的处理系统,该系统包括第一
客户端,第一客户端为数据库的客户端,第一客户端包括:接收模块,用于接收到来自预定
进程的对数据库进行操作的操作请求,其中,第一客户端内配置有第一环境变量,第一环境
变量用于操作请求转向预先加载的库中的库函数上,预先加载的库函数与数据库的库中的
库函数名称相同;获取模块,用于通过预加载的库中的库函数获取操作请求对应的操作内
容;转发模块,用于将操作请求转发给第二客户端,其中,第二客户端用于将操作请求转发
给数据库,其中,第二客户端内配置有第二环境变量,第二环境变量用于将通过第二客户端
发起的操作请求转向数据库的库中的库函数上,第二环境变量还被数据库使用。
[0037] 上述系统中的模块与上述实施例中的方法步骤相对应,已经进行过说明的,在此不再赘述。
[0038] 例如,系统还可以包括:第一配置模块,用于配置第二环境变量,并确定第二客户端和数据库在第二环境变量下正常工作;第一修改模块,用于修改第二客户端的访问地址
从第一地址修改为第二地址;第二配置模块,用于将第二地址配置给第一客户端,其中,第
一客户端使用第二地址与第二客户端交互;第三配置模块,用于将第一地址配置给第一客
户端。
[0039] 又例如,系统还可以包括:第二修改模块,用于将第二客户端的属性修改为不可执行;第四配置模块,用于将修改第二客户端的属性的权限配置给第一客户端,其中,第一客
户端将第二客户端的属性修改为可执行之后,后将操作请求转发给第二客户端。所述系统
还包括:修改模块,用于将所述第二客户端的属性修改为不可执行;第四配置模块,用于将
修改所述第二客户端的属性的权限配置给所述第一客户端。
[0040] 又例如,第一客户端还包括:校验模块,用于对操作内容进行校验,在校验成功的情况下,通过第一客户端将操作请求转发给第二客户端,在校验失败的情况下,通过预先加
载的库函数结束操作请求。
[0041] 通过本实施例解决了改变环境变量有可能导致数据库工作出现异常的问题,起到了即使改变了环境变量也可以使数据库正常工作的效果。
[0042] 以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、
改进等,均应包含在本申请的权利要求范围之内。