一种数据库操作方法、***及代理服务器和存储介质
技术领域
本申请涉及计算机技术领域,更具体地说,涉及一种数据库操作方法、***及一种代理服务器和一种计算机可读存储介质。
背景技术
随着计算机软硬件技术的发展,20世纪60年代末,数据库技术应运而生,并从20世纪70年代起得到了迅速的发展和广泛的应用。现如今,数据库技术不仅应用于事务处理,并且进一步应用到情报检索、人工智能、专家***、计算机辅助设计等领域。
而在信息高度密集的今天,已被广泛应用的数据库技术在为我们高效管理和存取大量数据资源的同时,也存在着安全性的问题。
开发人员在开发应用时,需要连接数据库。传统的方法是把数据库信息放在一个属性配置文件中,连接之前先从配置文件中读出密码,将密码放进数据库连接命令中一起发动服务器请求连接。例如,jdbc.properties,具体的内容如:
#mysql的配置文件
jdbc.url=jdbc:mysql://127.0.0.1:3306/test
jdbc.username=root
jdbc.password=123456,
这之中用明文的方式存储着数据库的敏感信息:用户名username和密码password,这是相当不安全的行为,容易造成如数据库信息泄露等的严重安全问题。同时也因此,开发人员在项目部署前经常需要对配置文件进行加密,或者是在配置文件中存储加密后的用户名和密码,如使用druid进行配置。此种传统的数据库连接方法中的配置文件容易被黑客等不良分子、非法用户攻击,使得数据库密码被盗取且被成功破译,密码泄露后存放于数据库中的重要业务信息将不再安全。
因此,如何有效提高数据库连接时的安全性,成为本领域技术人员需要迫切解决的问题。
发明内容
本申请的目的在于提供一种数据库操作方法、***及一种代理服务器和一种计算机可读存储介质,提高了数据库连接时的安全性。
为实现上述目的,本申请提供了一种数据库操作方法,应用于代理服务器,包括:
接收请求端携带有目标令牌的连接请求;其中,所述目标令牌为所述请求端向所述代理服务器申请的访问所述目标数据库的令牌;
根据所述令牌向目标数据库请求身份认证标识,并利用所述身份认证标识执行数据库操作。
其中,根据所述令牌向目标数据库请求身份认证标识,并利用所述身份认证标识执行数据库操作,包括:
根据所述令牌向目标数据库请求身份认证标识,并将所述身份认证标识返回至所述请求端,以便所述请求端利用所述身份认证标识执行数据库操作。
其中,所述请求端利用所述身份认证标识执行数据库操作,包括:
所述请求端利用所述身份认证标识请求连接所述目标数据库,连接成功后向所述目标数据库发送第一数据库操作请求,以便所述目标数据库执行所述第一数据库操作请求并向所述请求端返回数据库操作结果。
其中,所述请求端利用所述身份认证标识执行数据库操作,包括:
所述请求端利用所述身份认证标识后向所述目标数据库发送第二数据库操作请求,以便所述目标数据库验证所述身份认证标识成功后执行所述第二数据库操作请求并向所述请求端返回数据库操作结果。
其中,根据所述令牌向目标数据库请求身份认证标识,并利用所述身份认证标识执行数据库操作,包括:
利用所述身份认证标识后向所述目标数据库发送第三数据库操作请求,以便所述目标数据库验证所述身份认证标识成功后执行所述第三数据库操作请求并通过所述代理服务器向所述请求端返回数据库操作结果。
其中,所述接收请求端携带有目标令牌的连接请求之前,还包括:
接收所述请求端发送的授权请求,根据所述授权请求中所述请求端的身份信息生成并向所述请求端返回所述目标令牌。
其中,接收所述请求端发送的授权请求,根据所述授权请求中所述请求端的身份信息生成并向所述请求端返回所述目标令牌,包括:
通过授权代理接收所述请求端发送的授权请求;
根据所述授权请求中所述请求端的身份信息生成所述目标令牌;
通过所述授权代理向所述请求端返回所述目标令牌。
为实现上述目的,本申请提供了一种数据库操作***,应用于代理服务器,包括:
接收模块,用于接收请求端携带有目标令牌的连接请求;其中,所述目标令牌为所述请求端向所述代理服务器申请的访问所述目标数据库的令牌;
请求模块,用于根据所述令牌向目标数据库请求身份认证标识,并利用所述身份认证标识执行数据库操作。
为实现上述目的,本申请提供了一种代理服务器,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如上述数据库操作方法的步骤。
为实现上述目的,本申请提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述数据库操作方法的步骤。
通过以上方案可知,本申请提供的一种数据库操作方法,包括:接收请求端携带有目标令牌的连接请求;其中,所述目标令牌为所述请求端向所述代理服务器申请的访问所述目标数据库的令牌;根据所述令牌向目标数据库请求身份认证标识,并利用所述身份认证标识执行数据库操作。
本申请提供的数据库操作方法,可以通过代理服务器实现请求端与数据库端之间的安全连接,避免了传统的配置文件读取数据库用户密码的形式,大大提高了连接的安全性。本申请还公开了一种数据库操作***及一种代理服务器和一种计算机可读存储介质,同样能实现上述技术效果。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本申请。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。附图是用来提供对本公开的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本公开,但并不构成对本公开的限制。在附图中:
图1为根据一示例性实施例示出的一种数据库操作方法的流程图;
图2为根据一示例性实施例示出的另一种数据库操作方法的流程图;
图3为一种数据库操作方法的结构示意图;
图4为另一种数据库操作方法的结构示意图;
图5为根据一示例性实施例示出的又一种数据库操作方法的流程图;
图6为又一种数据库操作方法的结构示意图;
图7为根据一示例性实施例示出的一种数据库操作***的结构图;
图8为根据一示例性实施例示出的一种代理服务器的结构图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请实施例公开了一种数据库操作方法,提高了数据库连接时的安全性。
参见图1,根据一示例性实施例示出的一种数据库操作方法的流程图,如图1所示,包括:
S101:接收请求端携带有目标令牌的连接请求;其中,所述目标令牌为所述请求端向所述代理服务器申请的访问所述目标数据库的令牌;
本实施例的执行主体为代理服务器,请求端通过该代理服务器与数据库建立连接。代理服务器是一个可以被用户信任的计算机***,用户可以通过授权代理生成多个连接令牌,但一个连接令牌仅可以为一个用户服务。
可以理解的是,在本步骤之前默认存在请求端获取目标令牌的步骤,即在本步骤之前,还包括:接收所述请求端发送的授权请求,根据所述授权请求中所述请求端的身份信息生成并向所述请求端返回所述目标令牌;其中,所述授权请求包括所述请求端的身份信息;
此步骤的目的在于获取请求端与代理服务器建立连接时的唯一令牌,以便后续步骤由请求端与代理服务器建立联系并通过代理服务器请求数据库。用于获取的信息主要包括请求数据库地址,数据库用户名,数据库用户密码,授权时授权代理将对应身份信息保存于代理服务器中。
在具体实施中,请求端可以直接向代理服务器请求目标令牌,也可以通过一授权代理请求该目标令牌。即接收所述请求端发送的授权请求,根据所述授权请求中所述请求端的身份信息生成并向所述请求端返回所述目标令牌的步骤可以包括:通过授权代理接收所述请求端发送的授权请求;根据所述授权请求中所述请求端的身份信息生成所述目标令牌;通过所述授权代理向所述请求端返回所述目标令牌。需要说明的是,令牌为空或令牌错误代理端将返回合理的错误至请求端。
具体的,数据库管理员根据具体应用需求通过DBMS在数据库中建立相对应关系模式,生成相应权限的数据库用户密码,并将该用户账号密码等信息发送至授权代理,由授权代理向代理服务器申请授权,生成该用户的请求端与代理服务器建立连接时的唯一令牌。
可以理解的是,数据库管理员生成关系模式及相应权限的数据库用户存在多种方式,在此不作具体限定,本领域技术人员可以根据实际情况灵活选择。例如可以通过数据库管理***内置的可视化图形界面直接生成,又可以通过数据库命令方式创建数据关系并对不同的用户授予相对应的权限。同时,授权代理获取数据库用户账号密码的方式也有很多,例如可以在代理服务器相应的授权开放平台向代理服务器申请授权,也可以通过第三方的用户代理直接关联授权代理,由授权代理与代理服务器建立联系生成令牌,而代理服务器在生成令牌的同时也可以通过AES等算法对数据进行合理的加密,以防止数据的泄露,提高安全性。
需要说明的是,代理服务器根据授权代理发送的身份信息生成唯一令牌的方式有很多,在此不作具体限定。既可以使用UUID方法生成全球唯一标识作为令牌,也可以基于RSA等加密算法生成令牌密文,以建立更为完善的安全机制。
S102:根据所述令牌向目标数据库请求身份认证标识,并利用所述身份认证标识执行数据库操作。
在具体实施中,请求端请求数据库连接的方式不再是传统的通过静态配置文件获取数据库地址,数据库用户名,数据库密码后直接与远程数据库建立连接的方法,而是请求端通过事先得到的唯一令牌访问代理端,代理端可通过该唯一令牌查询到相应的数据库地址及数据库用户身份信息,目标数据库识别并匹配上述查询到的信息,匹配成功则生成与请求端建立安全连接的身份认证标识。请求端或代理服务器可以利用该身份认证标识进行数据库操作,将在后续实施例进行详细说明。
需要说明的是,数据库中不同的用户有不同的数据库操作权限,数据库端也会根据代理端发送的不同的信息在数据库中所能进行的具体权限而生成具有相应权限的身份认证标识。
可以理解的是,数据库生成正确的身份认证标识的方式有多种形式,在此不作具体限定,本领域技术人员可以根据实际情况灵活选择。如可以基于RSA等非对称加密机制生成身份认证标识,该身份认证标识与从代理端获取的身份信息是一对一的映射关系,具有唯一性及安全性。同时,当代理端发送的用户身份信息与数据库端用户数据不匹配时,数据库端将返回告警信息至代理端,代理端根据告警信息将合理的错误信息反馈至请求端。
本申请实施例提供的数据库操作方法,可以通过代理服务器实现请求端与数据库端之间的安全连接,避免了传统的配置文件读取数据库用户密码的形式,大大提高了连接的安全性。
本申请实施例公开了一种数据库操作方法,相对于上一实施例,本实施例对技术方案作了进一步的说明和优化。具体的:
参见图2,根据一示例性实施例示出的另一种数据库操作方法的流程图,如图2所示,包括:
S201:接收请求端携带有目标令牌的连接请求;其中,所述目标令牌为所述请求端向所述代理服务器申请的访问所述目标数据库的令牌;
S202:根据所述令牌向目标数据库请求身份认证标识,并将所述身份认证标识返回至所述请求端,以便所述请求端利用所述身份认证标识执行数据库操作。
在本实施例中,代理服务器将请求到的身份认证标识返回至请求端,请求端利用该身份认证标识执行数据库操作。
作为一种优选实施方式,所述请求端利用所述身份认证标识执行数据库操作的步骤可以包括:所述请求端利用所述身份认证标识请求连接所述目标数据库,连接成功后向所述目标数据库发送第一数据库操作请求,以便所述目标数据库执行所述第一数据库操作请求并向所述请求端返回数据库操作结果。
具体的,如图3所示(图中代理端即为代理服务器),请求端通过从代理服务器得到的身份认证标识向数据库端发出连接请求由数据库端进行匹配。需要说明的是,此时请求端与数据库端建立连接的请求是由数据库端生成的身份认证标识,该身份标识具有唯一性而不再是传统的直接通过用户账号密码进行连接请求,极大地提高了安全性。
数据库端监听程序实时监听请求端请求,识别并匹配请求端发送的身份认证标识,当身份认证标识与数据库端返回给代理端的标识一致时,则说明匹配成功,并将连接结果反馈给请求端,请求端可根据该连接结果执行基本的数据库操作。当然,如果匹配不成功,数据库端将无法与请求端建立起安全连接。需要说明的是,数据库端在反馈代理端身份认证标识及监听请求端请求的过程中,需要定时对身份认证标识进行处理,当数据库端未接受该身份认证标识的时间过长,将自动清除该认证标识,等待代理端发送新的认证请求。
请求端通过身份标识与数据库端建立起数据库连接后,可通过该连接执行基本的数据库操作,包括查询、删改、添加等等。需要说明的是该操作应与数据库连接的身份认证标识用户所具有的权限相对应,可以是权限范围内的基本数据库操作。
作为另一种优选实施方式,所述请求端利用所述身份认证标识执行数据库操作的步骤可以包括:所述请求端利用所述身份认证标识后向所述目标数据库发送第二数据库操作请求,以便所述目标数据库验证所述身份认证标识成功后执行所述第二数据库操作请求并向所述请求端返回数据库操作结果。
具体的,如图4所示(图中代理端即为代理服务器),请求端将准备执行的数据库操作(包括SQL语句)及从代理端接收的身份认证标识发送至数据库端,由数据库端匹配身份认证标识并根据标识的权限执行请求端相应的数据库操作。数据库端监听程序实时监听请求端请求,识别并匹配请求端发送的身份认证标识,当身份认证标识与数据库端返回给代理端的标识一致时,则说明匹配成功,将继续执行请求端要求的数据库操作,并将执行的结果集返回给请求端,请求端直接获取想要得到的数据库结果。当然,如果匹配不成功,数据库端将无法执行请求端要求的数据库操作,返回相应的告警信息。
此步骤中数据库的连接与执行直接通过请求端发送身份认证标识和数据库操作语句实现,请求端直接得到的是结果集,与数据库相关的操作均在数据库端执行,不同于传统的数据库连接方法,大大提高了数据库连接的安全性。
本申请实施例公开了一种数据库操作方法,相对于上一实施例,本实施例对技术方案作了进一步的说明和优化。具体的:
参见图5,根据一示例性实施例示出的又一种数据库操作方法的流程图,如图5所示,包括:
S301:接收请求端携带有目标令牌的连接请求;其中,所述目标令牌为所述请求端向所述代理服务器申请的访问所述目标数据库的令牌;
S302:根据所述令牌向目标数据库请求身份认证标识,并利用所述身份认证标识后向所述目标数据库发送第三数据库操作请求,以便所述目标数据库验证所述身份认证标识成功后执行所述第三数据库操作请求并通过所述代理服务器向所述请求端返回数据库操作结果。
在本实施例中,如图6所示(图中代理端即为代理服务器),当请求端企图与数据库端建立连接并执行数据库基本的增删改查操作时,利用令牌将准备进行的数据库基本操作发送至代理服务器,代理服务器可通过该唯一令牌找到相应的数据库地址及数据库用户身份信息,并根据授权时的请求端身份信息、请求端数据库目标地址及请求端准备执行的数据库操作语句访问数据库端,数据库端认证成功便执行请求端要求的数据库操作,并通过代理服务器向请求端返回数据库操作结果。
下面对本申请实施例提供的一种数据库操作***进行介绍,下文描述的一种数据库操作***与上文描述的一种数据库操作方法可以相互参照。
参见图7,根据一示例性实施例示出的一种数据库操作***的结构图,如图7所示,包括:
接收模块701,用于接收请求端携带有目标令牌的连接请求;其中,所述目标令牌为所述请求端向所述代理服务器申请的访问所述目标数据库的令牌;
请求模块702,用于根据所述令牌向目标数据库请求身份认证标识,并利用所述身份认证标识执行数据库操作。
本申请实施例提供的数据库操作***,可以通过代理服务器实现请求端与数据库端之间的安全连接,避免了传统的配置文件读取数据库用户密码的形式,大大提高了连接的安全性。
在上述实施例的基础上,作为一种优选实施方式,所述请求模块702具体为根据所述令牌向目标数据库请求身份认证标识,并将所述身份认证标识返回至所述请求端,以便所述请求端利用所述身份认证标识执行数据库操作的模块。
在上述实施例的基础上,作为一种优选实施方式,所述请求端包括:
第一连接模块,用于利用所述身份认证标识请求连接所述目标数据库,连接成功后向所述目标数据库发送第一数据库操作请求,以便所述目标数据库执行所述第一数据库操作请求并向所述请求端返回数据库操作结果。
在上述实施例的基础上,作为一种优选实施方式,所述请求端包括:
第二连接模块,用于利用所述身份认证标识后向所述目标数据库发送第二数据库操作请求,以便所述目标数据库验证所述身份认证标识成功后执行所述第二数据库操作请求并向所述请求端返回数据库操作结果。
在上述实施例的基础上,作为一种优选实施方式,所述请求模块702具体为利用所述身份认证标识后向所述目标数据库发送第三数据库操作请求,以便所述目标数据库验证所述身份认证标识成功后执行所述第三数据库操作请求并通过所述代理服务器向所述请求端返回数据库操作结果的模块。
在上述实施例的基础上,作为一种优选实施方式,还包括:
授权模块,用于接收所述请求端发送的授权请求,根据所述授权请求中所述请求端的身份信息生成并向所述请求端返回所述目标令牌;其中,所述授权请求包括所述请求端的身份信息;
在上述实施例的基础上,作为一种优选实施方式,所述授权模块包括:
接收单元,用于通过授权代理接收所述请求端发送的授权请求;
授权单元,用于根据所述授权请求中所述请求端的身份信息生成所述目标令牌;
返回单元,用于通过所述授权代理向所述请求端返回所述目标令牌。
关于上述实施例中的***,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
本申请还提供了一种代理服务器,参见图8,本申请实施例提供的一种代理服务器800的结构图,如图8所示,可以包括处理器11和存储器12。该代理服务器800还可以包括多媒体组件13,输入/输出(I/O)接口14,以及通信组件15中的一者或多者。
其中,处理器11用于控制该代理服务器800的整体操作,以完成上述的数据库操作方法中的全部或部分步骤。存储器12用于存储各种类型的数据以支持在该代理服务器800的操作,这些数据例如可以包括用于在该代理服务器800上操作的任何应用程序或方法的指令,以及应用程序相关的数据,例如联系人数据、收发的消息、图片、音频、视频等等。该存储器12可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,例如静态随机存取存储器(Static Random Access Memory,简称SRAM),电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,简称EEPROM),可擦除可编程只读存储器(Erasable Programmable Read-Only Memory,简称EPROM),可编程只读存储器(Programmable Read-Only Memory,简称PROM),只读存储器(Read-Only Memory,简称ROM),磁存储器,快闪存储器,磁盘或光盘。多媒体组件13可以包括屏幕和音频组件。其中屏幕例如可以是触摸屏,音频组件用于输出和/或输入音频信号。例如,音频组件可以包括一个麦克风,麦克风用于接收外部音频信号。所接收的音频信号可以被进一步存储在存储器12或通过通信组件15发送。音频组件还包括至少一个扬声器,用于输出音频信号。I/O接口14为处理器11和其他接口模块之间提供接口,上述其他接口模块可以是键盘,鼠标,按钮等。这些按钮可以是虚拟按钮或者实体按钮。通信组件15用于该代理服务器800与其他设备之间进行有线或无线通信。无线通信,例如Wi-Fi,蓝牙,近场通信(Near FieldCommunication,简称NFC),2G、3G或4G,或它们中的一种或几种的组合,因此相应的该通信组件15可以包括:Wi-Fi模块,蓝牙模块,NFC模块。
在一示例性实施例中,代理服务器800可以被一个或多个应用专用集成电路(Application Specific Integrated Circuit,简称ASIC)、数字信号处理器(DigitalSignal Processor,简称DSP)、数字信号处理设备(Digital Signal Processing Device,简称DSPD)、可编程逻辑器件(Programmable Logic Device,简称PLD)、现场可编程门阵列(Field Programmable Gate Array,简称FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述的数据库操作方法。
在另一示例性实施例中,还提供了一种包括程序指令的计算机可读存储介质,该程序指令被处理器执行时实现上述数据库操作方法的步骤。例如,该计算机可读存储介质可以为上述包括程序指令的存储器12,上述程序指令可由代理服务器800的处理器11执行以完成上述的数据库操作方法。
说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的***而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。
还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。