CN111488331A - 数据库连接方法、装置和计算机设备 - Google Patents

数据库连接方法、装置和计算机设备 Download PDF

Info

Publication number
CN111488331A
CN111488331A CN202010267283.1A CN202010267283A CN111488331A CN 111488331 A CN111488331 A CN 111488331A CN 202010267283 A CN202010267283 A CN 202010267283A CN 111488331 A CN111488331 A CN 111488331A
Authority
CN
China
Prior art keywords
database
file
database information
key value
encrypted
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
CN202010267283.1A
Other languages
English (en)
Other versions
CN111488331B (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.)
Guangzhou Huya Technology Co Ltd
Original Assignee
Guangzhou Huya 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 Guangzhou Huya Technology Co Ltd filed Critical Guangzhou Huya Technology Co Ltd
Priority to CN202010267283.1A priority Critical patent/CN111488331B/zh
Publication of CN111488331A publication Critical patent/CN111488331A/zh
Application granted granted Critical
Publication of CN111488331B publication Critical patent/CN111488331B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Bioethics (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Data Mining & Analysis (AREA)
  • Storage Device Security (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请涉及数据库安全技术领域,尤其涉及一种数据库连接方法、装置和计算机设备,包括:根据预存的唯一的key值调用本地的DLL文件;其中,所述key值是由数据库预先生成并分配的;通过所述DLL文件获取与所述key值对应的数据库信息,并利用所述数据库信息对所述数据库进行连接测试,其中,所述DLL文件测试成功后对获取到的加密后的数据库信息进行解密得到解密字符串;获取所述DLL文件返回的所述解密字符串,根据所述解密字符串连接所述数据库;本方案中数据库的IP/域名、账号、密码不再是明文的配置方式,而是调用DLL文件并通过加解密算法得到,这样有利于加强数据库的安全性,同时,还解耦了因泄漏key值而导致大面积的数据库账号需要修改的现象。

Description

数据库连接方法、装置和计算机设备
技术领域
本申请涉及数据库安全技术领域,尤其涉及一种数据库连接方法、装置和计算机设备。
背景技术
数据库是按照数据结构来组织、存储和管理数据的仓库,是一个长期存储在计算机内的、有组织的、有共享的、统一管理的数据集合。因此,为了数据库中业务数据的安全,防止信息泄露,不仅需要对数据库进行定期维护,还需要对访问数据库的应用程序进行身份验证。
目前,数据库的身份验证方法为应用程序调用存储在本地配置文件中的数据库账户及密码,依据该账户及密码向数据库进行访问身份验证,并提取相关信息。但是,由于本地配置文件使用明文进行配置,使得数据库的账户及密码容易被非法获取,从而降低数据库的安全性。
发明内容
本申请的目的旨在至少能解决上述的技术缺陷之一,特别是现有技术中本地配置文件使用明文进行配置,使得数据库的账户及密码容易被非法获取,从而降低数据库的安全性的技术缺陷。
本申请提供一种数据库连接方法,包括如下步骤:
根据预存的唯一的key值调用本地的DLL文件;其中,所述key值是由数据库预先生成并分配的;
通过所述DLL文件获取与所述key值对应的数据库信息,并利用所述数据库信息对所述数据库进行连接测试,其中,所述DLL文件测试成功后对获取到的加密后的数据库信息进行解密得到解密字符串;
获取所述DLL文件返回的所述解密字符串,根据所述解密字符串连接所述数据库。
在一个实施例中,所述key值是由加解密终端根据所述数据库发送的明文的数据库信息进行加密生成。
在一个实施例中,所述数据库连接方法,还包括:
判断所述key值是否泄露,若是,则通知所述数据库,并获取由所述数据库重新生成并分配的key值;其中,所述数据库将所述key值加入黑名单。
在一个实施例中,通过所述DLL文件获取与所述key值对应的数据库信息的步骤,包括:
通过所述DLL文件获取本地缓存中与所述key值对应的加密后的数据库信息;若获取失败,则在本地的磁盘缓存文件中获取所述数据库信息。
在一个实施例中,所述数据库连接方法,还包括:
若在所述磁盘缓存文件中获取所述数据库信息失败,则通过Web Service接口向Redis Cluster缓存集群请求加密后的数据库信息,并将获取的所述数据库信息写入/更新到所述本地缓存以及所述磁盘缓存文件中。
在一个实施例中,所述通过Web Service接口向Redis Cluster缓存集群请求加密后的数据库信息的步骤,包括:
通过所述DLL文件调用Web Service接口,其中,所述DLL文件根据所述WebService接口读取Redis Cluste缓存集群中存储的与所述key值对应的加密后的数据库信息,并通过所述Web Service接口进行二次加密。
在一个实施例中,所述通过Web Service接口向Redis Cluster缓存集群请求加密后的数据库信息的步骤之后,还包括:
通过所述DLL文件对所述Web Service接口进行线程监听,用于获取更新后的加密后的数据库信息;
并将获取到的所述数据库信息写入/更新到所述本地缓存以及所述磁盘缓存文件中。
在一个实施例中,所述通过所述DLL文件获取本地缓存中与所述key值对应的加密后的数据库信息;若获取失败,则在本地的磁盘缓存文件中获取所述数据库信息的步骤之后,还包括:
利用所述数据库信息对所述数据库进行连接测试;
若所述测试失败,则通过所述DLL文件调用Web Service接口请求加密后的数据库信息,并利用所述数据库信息重新对所述数据库进行连接测试。
本申请还提供了一种数据库连接装置,包括:
调用模块,用于根据预存的唯一的key值调用本地的DLL文件;其中,所述key值是由数据库预先生成并分配的;
信息获取模块,用于通过所述DLL文件获取与所述key值对应的数据库信息,并利用所述数据库信息对所述数据库进行连接测试,其中,所述DLL文件测试成功后对获取到的加密后的数据库信息进行解密得到解密字符串;
连接模块,用于获取所述DLL文件返回的所述解密字符串,根据所述解密字符串连接所述数据库。
本申请还提供了一种计算机设备,所述计算机设备中存储有计算机可读指令,所述计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行如上述实施例中任一项所述的数据库连接方法的步骤。
上述数据库连接方法、装置和计算机设备,根据预存的唯一的key值调用本地的DLL文件;其中,所述key值是由数据库预先生成并分配的;通过所述DLL文件获取与所述key值对应的数据库信息,并利用所述数据库信息对所述数据库进行连接测试,其中,所述DLL文件测试成功后对获取到的加密后的数据库信息进行解密得到解密字符串;获取所述DLL文件返回的所述解密字符串,根据所述解密字符串连接所述数据库。
本方案中,DLL文件接收上层应用程序的获取数据库请求,通过应用程序传入的唯一的key值,得到一段与数据库IP/域名、帐号、密码对应的加密后的数据库信息,再通过解密算法解释出明文的数据库IP/域名、帐号、密码,通过该解密字符串对数据库进行连接测试,并在测试成功后将解密字符串发送给应用程序,以便应用程序进行安全连接;在此过程中,数据库的IP/域名、账号、密码也不再是明文方式配置在配置文件中,而是调用DLL文件并通过加解密算法得到,这样有利于加强访问数据库的安全性,另外,当key值遭遇泄露时,只需对数据库中已保存的key值作相应的处理即可,解耦了因泄漏key值而导致大面积的数据库账号需要修改的现象。
本申请附加的方面和优点将在下面的描述中部分给出,这些将从下面的描述中变得明显,或通过本申请的实践了解到。
附图说明
本申请上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
图1是本申请实施例的数据库连接方法的应用环境示意图;
图2为一个实施例的数据库连接方法示意图;
图3为一个实施例的通过DLL文件获取数据库信息的方法示意图;
图4为一个实施例的通过DLL文件对数据库进行连接测试的方法示意图;
图5是一个实施例的数据库连接装置结构示意图;
图6为一个实施例的计算机设备的内部结构示意图。
具体实施方式
下面详细描述本申请的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本申请,而不能解释为对本申请的限制。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本申请的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组合。
本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本申请所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像本申请实施例中一样被特定定义,否则不会用理想化或过于正式的含义来解释。
数据库是按照数据结构来组织、存储和管理数据的仓库,是一个长期存储在计算机内的、有组织的、有共享的、统一管理的数据集合。因此,为了数据库中业务数据的安全,防止信息泄露,不仅需要对数据库进行定期维护,还需要对访问数据库的应用程序进行身份验证。
目前,数据库的身份验证方法为应用程序调用存储在本地配置文件中的数据库账户及密码,依据该账户及密码向数据库进行访问身份验证,并提取相关信息。但是,由于本地配置文件使用明文进行配置,使得数据库的账户及密码容易被非法获取,从而降低数据库的安全性。
因此,本申请提出下述实施方式,以解决本地配置文件使用明文进行配置,使得数据库的账户及密码容易被非法获取,从而降低数据库的安全性的技术缺陷。
参考图1所示,图1是本申请实施例的数据库连接方法的应用环境示意图;本实施例中,本申请的技术方案可以以计算机的操作系统连接服务器的数据库为例实现,如图1中,操作系统中的某一应用程序需要连接数据库时,调用DLL(Dynamic Link Library,动态链接库)文件以获取与该数据库相关的信息,以便该应用程序通过服务器实现相关功能;在本申请实施例中,操作系统中的某一应用程序在连接数据库之前,首先通过DLL文件获取该数据库的数据库信息,然后应用程序根据该数据库信息与服务器之间进行数据传输,以便服务器根据该数据库信息访问数据库,实现应用程序与数据库之间的数据连接。
在一个实施例中,如图2所示,图2为一个实施例的数据库连接方法示意图,本实施例中提供了一种数据库连接方法,可以包括如下步骤:
S110:根据预存的唯一的key值调用本地的DLL文件;其中,所述key值是由数据库预先生成并分配的。
通常,应用程序中会配置有连接数据库的域名、端口、账号、密码等的配置文件,该配置文件中使用明文的数据库信息进行配置,即使服务器处在内网机制,仍然会对数据库的安全带来一定隐患,若黑客攻破内网,将会导致数据库中的数据存在被盗取的风险。
因此,本申请中,为了克服现有技术中因应用程序中的配置文件使用明文进行配置,使得数据库存在数据丢失、泄露的风险,优先采取了利用DLL文件并基于加解密算法的方式提高数据库的安全。
可以理解的是,操作系统中的应用程序,如Windows中,许多应用程序并不是一个完整的可执行文件,它们被分割成一些相对独立的动态链接库,即DLL文件,放置于操作系统中。当我们执行某一个程序时,相应的DLL文件就会被调用。
需要说明的是,一个应用程序可使用多个DLL文件,一个DLL文件也可能被不同的应用程序使用,这样的DLL文件被称为共享DLL文件。
因而,在本步骤中,当上层的应用程序需要获取数据库信息时,可向DLL文件发送该应用程序中保存的key值,以便调用DLL文件获取与该key值对应的数据库信息。
可以理解的是,这里的key值指的是在数据库中预先生成的、分配给对应的应用程序的唯一身份标识,应用程序可利用该身份标识并通过DLL文件获取与该身份标识对应的数据库的域名、端口、账号、密码等。
S120:通过所述DLL文件获取与所述key值对应的数据库信息,并利用所述数据库信息对所述数据库进行连接测试,其中,所述DLL文件测试成功后对获取到的加密后的数据库信息进行解密得到解密字符串。
本步骤中,通过步骤S110根据预存的唯一的key值调用本地的DLL文件后,DLL文件可根据该key值查找对应的数据库信息,并尝试与数据库建立连接。
具体地,DLL文件可在本地缓存中或者本地的磁盘缓存文件中查找已缓存的数据库信息,当然,为了数据库的安全性,这里缓存的数据库信息为加密后的数据库信息,当查找到对应的加密后的数据库信息后,可利用预先配置的解密算法进行解密,即可得到解密字符串。
当得到解密字符串后,可利用该解密字符串尝试与数据库之间建立通信连接,若该测试连接成功,则表示获取到的数据库信息无误,若测试不成功,则可以继续尝试其他途径获取数据库信息,直到成功为止。
可以理解的是,这里的解密字符串指的是经解密算法解密后的数据库信息,该数据库信息包括但不限定于数据库的域名、端口、账号、密码等。
S130:获取所述DLL文件返回的所述解密字符串,根据所述解密字符串连接所述数据库。
本步骤中,当通过步骤S120得到解密字符串后,DLL文件首先利用该解密字符串对数据库进行连接测试,若测试成功,则表示获取到的解密字符串是正确的,若测试不成功,则说明本地缓存中或磁盘缓存文件中缓存的数据库信息存在错误,此时,需要通过其他方式重新获取数据库信息,并利用重新获取的数据库信息再次对数据库进行连接测试。
并且,当测试成功后,需要将解密字符串返回至应用程序中,以便应用程序根据DLL测试成功后的解密字符串进行数据库连接。这样,能够在一定程度上减少使用明文的数据库信息进行数据库连接时导致数据库信息泄露的风险,提高了数据库的安全。
上述数据库连接方法,根据预存的唯一的key值调用本地的DLL文件;其中,所述key值是由数据库预先生成并分配的;通过所述DLL文件获取与所述key值对应的数据库信息,并利用所述数据库信息对所述数据库进行连接测试,其中,所述DLL文件测试成功后对获取到的加密后的数据库信息进行解密得到解密字符串;获取所述DLL文件返回的所述解密字符串,根据所述解密字符串连接所述数据库。
本方案中,DLL文件接收上层应用程序的获取数据库请求,通过应用程序传入的唯一的key值,得到一段与数据库IP/域名、帐号、密码对应的加密后的数据库信息,再通过解密算法解释出明文的数据库IP/域名、帐号、密码,通过该解密字符串对数据库进行连接测试,并在测试成功后将解密字符串发送给应用程序,以便应用程序进行安全连接;在此过程中,数据库的IP/域名、账号、密码也不再是明文方式配置在配置文件中,而是调用DLL文件并通过加解密算法得到,这样有利于加强访问数据库的安全性,另外,当key值遭遇泄露时,只需对数据库中已保存的key值作相应的处理即可,解耦了因泄漏key值而导致大面积的数据库账号需要修改的现象。
在一个实施例中,所述key值是由加解密终端根据所述数据库发送的明文的数据库信息进行加密生成。具体地,key值的生成步骤可以包括:
S201:将明文的数据库信息发送至加解密终端,并通过所述加解密终端进行加密;
S202:将加密后的数据库信息写入到所述数据库以及Redis Cluster缓存集群中,以使所述数据库生成与所述加密后的数据库信息对应的key值,并更新所述Redis Cluster缓存集群中已存储的加密后的数据库信息。
本实施例中,数据库向应用程序发送key值之前,需要将明文的数据库信息发送至加解密终端,并通过加解密终端进行加密,数据库获取加密后的数据库信息后对其进行保存。
其中,加解密终端主要是接收明文的数据库信息,如数据库的IP/域名、帐号、密码等,通过加密方式把记录写入到MySQL(一个关系型数据库管理系统)数据库,并事务性的写入到Redis Cluster缓存集群,然后返回一个key值给用户,用户就可以在应用程序里使用这个key值和DLL文件来获取数据库账号密码信息。
需要说明的是,这里的Redis Cluster缓存集群是一种分布式架构,即RedisCluster中有多个节点,每个节点都负责进行数据读写操作,该架构通过使用RedisCluster缓存集群,能够获取更高效的性能,并具备高可用,可进行故障切换。另外,在RedisCluster缓存集群中存储的数据依然是加密后的字符串,可防止数据信息的泄漏。
这里的数据库使用的是MySQL MGR,该数据库同样是集群模式,提供数据库的高可用,并用于于故障切换。另外,在MySQL表中存储的数据依然是加密后的字符串,可防止数据信息的泄漏。
并且,在MySQL表中存储的是以key值为唯一主键的记录,即使是相同的数据库的IP/域名、帐号、密码,经过加密后的字符串也是可以不相同的。
这样,当key值遭遇泄露时,只需对数据库中已保存的key值作相应的处理即可,解耦了因泄漏key值而导致大面积的数据库账号需要修改的现象。
在一个实施例中,所述数据库连接方法,还可以包括:判断所述key值是否泄露,若是,则通知所述数据库,并获取由所述数据库重新生成并分配的key值;其中,所述数据库将所述key值加入黑名单。
本实施例中,当检测到某一主机存在安全风险时,或某一应用程序存在安全风险时,即可判断该主机或某一应用程序中的key值存在泄露,这时,可通知相应的数据库,将该主机上的各个应用程序在数据库中对应的key值加入黑名单,或将该应用程序在数据库中对应的key值加入黑名单,以防止该主机上的应用程序或某一应用程序访问数据库,对数据库中存储的数据安全造成威胁。
并且,当数据库使用的是MySQL MGR时,在MySQL表中存储的是以key值为唯一主键的记录,即使是相同的数据库的IP/域名、帐号、密码,经过加密后的字符串也是可以不相同的,这样可以在某个key值泄漏后,只要把这个key值加入黑名单,就可以屏蔽这个key的使用,并不需要修改现有的数据库的账号和密码,这样能够保证其他应用的稳定性,减少变更。
在一个实施例中,如图3所示,图3为一个实施例的通过DLL文件获取数据库信息的方法示意图;步骤S120中通过所述DLL文件获取与所述key值对应的数据库信息的步骤,可以包括:
S221:通过所述DLL文件获取本地缓存中与所述key值对应的加密后的数据库信息;
S222:判断在所述本地缓存中的获取结果;
S223:若获取失败,则在本地的磁盘缓存文件中进行获取所述数据库信息。
本实施例中,如图3所示,DLL文件接收上层应用程序的获取数据库请求,通过应用程序传入的一个唯一key值,得到一段由数据库IP/域名、帐号、密码加密后的字符串,再通过解密算法解释出数据库IP/域名、帐号、密码,以尝试对数据库进行连接测试。
其中,为了安全起见,数据库将预先生成的key值发送至应用程序之前,会通过加解密终端将明文的数据库信息进行加密,因此,数据库中保存的以及其他存储区域保存的数据库信息均为加密后的数据库信息,即DLL文件获取到的数据库信息为加密后的数据库信息。
由于数据库信息经常被应用程序所调用,因此,当本次调用并非首次调用,在本次调用之前,应用程序的本地缓存中或许已保存有相应的数据库信息。因而,为了方便DLL文件获取加密后的数据库信息,优先选择在本地缓存,即内存中获取,如果内存中没有数据或者获取失败,将在磁盘缓存文件中获取。
通过上述方式即可获取加密后的数据库信息,通过解密算法进行解密即可获得解密字符串,安全高效。
在一个实施例中,参见图3,步骤S223中若获取失败,则在本地的磁盘缓存文件中进行获取所述数据库信息的步骤之后,还可以包括:
S224:判断在所述磁盘缓存文件中的获取结果;
S225:若获取失败,则通过Web Service接口向Redis Cluster缓存集群请求加密后的数据库信息,并将获取的所述数据库信息写入/更新到所述本地缓存以及所述磁盘缓存文件中。
本实施例中,如图3所示,在内存中没有数据或者获取失败的情况下,将进行磁盘缓存文件的获取,如果还是失败或者没有数据的情况下,可向Web Service接口请求数据,并将获取的加密字符串写入/更新到本地缓存以及磁盘缓存文件中。
需要说明的是,这里的Web Service接口是一个分布式的高可用接口,它提供获取最新的数据库信息,查询key值所对应的加密后的数据库IP/域名、帐号、密码;具体示例如下:
[LinkName]:key值;
[En_LinkIP]:加密后的程序需要链接的数据库的IP地址/域名;
[En_LinkSa]:加密后的数据库使用的帐号;
[En_LinkPassword]:加密后得数据库帐号所对应的密码。
这里将获取的加密字符串写入/更新到本地缓存以及磁盘缓存文件中的目的是为了及时对本地缓存以及磁盘缓存文件中已保存的数据库信息进行更新,或将最新获取的数据库信息写入到本地缓存以及磁盘缓存文件中,以便在下一次应用程序调用本地的DLL文件获取数据库信息时使用。
在一个实施例中,步骤S225中通过Web Service接口向Redis Cluster缓存集群请求加密后的数据库信息的步骤,可以包括:通过所述DLL文件调用Web Service接口,其中,所述DLL文件根据所述Web Service接口读取Redis Cluste缓存集群中存储的与所述key值对应的加密后的数据库信息,并通过所述Web Service接口进行二次加密。
本实施例中,当本地缓存和磁盘缓存文件中均未找到与key值对应的数据库信息后,可通过Web Service接口请求加密后的数据库信息,Web Service接口与Redis Cluste缓存集群通信连接,读取Redis Cluste缓存集群中存储的与该key值对应的加密后的数据库信息。
可以理解的是,数据库向应用程序发送key值之前,需要将明文的数据库信息发送至加解密终端,并通过加解密终端进行加密,数据库获取加密后的数据库信息后对其进行保存。
另外,加解密终端还将加密后的数据库信息事务性的写入到Redis Cluster缓存集群中,以对该加密后的数据库信息进行二次保存。
当DLL文件通过Web Service接口获取数据库信息时,Web Service接口读取RedisCluste缓存集群中存储的与key值对应的加密后的数据库信息。
并且,Web Service接口获取到Redis Cluste缓存集群中存储的加密后的数据库信息后,可以把这些值串联成一个字符串,并使用不同的加密算法进行二次加密,然后再将二次加密后的数据库信息返回至DLL文件中,这样,能够进一步提高数据传输过程中的安全性。
在一个实施例中,步骤S225中通过Web Service接口向Redis Cluster缓存集群请求加密后的数据库信息的步骤之后,还可以包括:
S226:通过所述DLL文件对所述Web Service接口进行线程监听,用于获取更新后的加密后的数据库信息;
S227:将获取的所述加密后的数据库信息写入/更新到所述本地缓存以及所述磁盘缓存文件中。
本实施例中,DLL文件中还有一个专门的线程,该线程能够监听Web Service接口的数据更新情况,如果数据版本有更新,则将其更新至内存缓存和磁盘缓存文件中。
具体地,当数据库的加解密终端中有数据库信息的更新后,可将该更新信息发送至Redis Cluster缓存集群中,Redis Cluster缓存集群可主动推送更新后的数据库信息,或由Web Service接口采用定时轮询的方式,以获取最新的数据库信息。
具体地,Web Service接口获取Redis Cluster缓存集群中的数据库信息后,可将该数据库信息与Web Service接口中保存的数据库信息之间进行比对,以获取更新后的数据库信息。
进一步地,DLL文件中的监听线程,也会通过定时轮询的方式监听Web Service接口的数据更新情况,当有数据更新时,即可将内存缓存和磁盘缓存文件中已保存的数据库信息进行及时更新。
在一个实施例中,如图4所示,图4为一个实施例的通过DLL文件对数据库进行连接测试的方法示意图;图4中,步骤S223中若获取失败,则在本地的磁盘缓存文件中获取所述数据库信息的步骤之后,还可以包括:
S231:利用所述数据库信息对所述数据库进行连接测试;
S232:判断连接测试结果;
S233:若所述测试失败,则通过所述DLL文件调用Web Service接口请求加密后的数据库信息,并利用所述数据库信息重新对所述数据库进行连接测试。
本实施例中,如图4所示,当DLL文件通过本地缓存或磁盘缓存文件获取加密后的数据库信息后,可对该数据库信息进行解密,以获取解密字符串,并利用该解密字符串对数据库进行连接测试。
若测试失败,则表示本地缓存或磁盘缓存文件中保存的数据库信息有误,或没有对本地缓存或磁盘缓存文件中保存的数据库信息进行及时更新,此时,DLL文件可通过WebService接口请求加密后的数据库信息,并对加密后的数据库信息进行解密。
DLL文件对重新获取的数据库信息进行解密后,可再次利用解密字符串对数据库进行连接测试,以确保测试成功,这样,便可将测试成功后的解密字符串返回给应用程序,以便应用程序能够成功连接数据库。
在一个实施例中,如图5所示,图5为一个实施例的数据库连接装置结构示意图,本实施例中提供了一种数据库连接装置,其包括:接收模块210、信息获取模块220、连接模块230,其中:
调用模块210,用于根据预存的唯一的key值调用本地的DLL文件;其中,所述key值是由数据库预先生成并分配的。
通常,应用程序中会配置有连接数据库的域名、端口、账号、密码等的配置文件,该配置文件中使用明文的数据库信息进行配置,即使服务器处在内网机制,仍然会对数据库的安全带来一定隐患,若黑客攻破内网,将会导致数据库中的数据存在被盗取的风险。
因此,本申请中,为了克服现有技术中因应用程序中的配置文件使用明文进行配置,使得数据库存在数据丢失、泄露的风险,优先采取了利用DLL文件并基于加解密算法的方式提高数据库的安全。
可以理解的是,操作系统中的应用程序,如Windows中,许多应用程序并不是一个完整的可执行文件,它们被分割成一些相对独立的动态链接库,即DLL文件,放置于操作系统中。当我们执行某一个程序时,相应的DLL文件就会被调用。
需要说明的是,一个应用程序可使用多个DLL文件,一个DLL文件也可能被不同的应用程序使用,这样的DLL文件被称为共享DLL文件。
因而,在本模块中,当上层的应用程序需要获取数据库信息时,可向DLL文件发送该应用程序中保存的key值,以便调用DLL文件获取与该key值对应的数据库信息。
可以理解的是,这里的key值指的是在数据库中预先生成的、分配给对应的应用程序的唯一身份标识,应用程序可利用该身份标识并通过DLL文件获取与该身份标识对应的数据库的域名、端口、账号、密码等。
信息获取模块220,用于通过所述DLL文件获取与所述key值对应的数据库信息,并利用所述数据库信息对所述数据库进行连接测试,其中,所述DLL文件测试成功后对获取到的加密后的数据库信息进行解密得到解密字符串。
本模块中,通过接收模块210根据预存的唯一的key值调用本地的DLL文件后,DLL文件可根据该key值查找对应的数据库信息,并尝试与数据库建立连接。
具体地,DLL文件可在本地缓存中或者本地的磁盘缓存文件中查找已缓存的数据库信息,当然,为了数据库的安全性,这里缓存的数据库信息为加密后的数据库信息,当查找到对应的加密后的数据库信息后,可利用预先配置的解密算法进行解密,即可得到解密字符串。
当得到解密字符串后,可利用该解密字符串尝试与数据库之间建立通信连接,若该测试连接成功,则表示获取到的数据库信息无误,若测试不成功,则可以继续尝试其他途径获取数据库信息,直到成功为止。
可以理解的是,这里的解密字符串指的是经解密算法解密后的数据库信息,该数据库信息包括但不限定于数据库的域名、端口、账号、密码等。
连接模块230,用于获取所述DLL文件返回的所述解密字符串,根据所述解密字符串连接所述数据库。
本模块中,当通过信息获取模块220得到解密字符串后,DLL文件首先利用该解密字符串对数据库进行连接测试,若测试成功,则表示获取到的解密字符串是正确的,若测试不成功,则说明本地缓存中或磁盘缓存文件中缓存的数据库信息存在错误,此时,需要通过其他方式重新获取数据库信息,并利用重新获取的数据库信息再次对数据库进行连接测试。
并且,当测试成功后,需要将解密字符串返回至应用程序中,以便应用程序根据DLL测试成功后的解密字符串进行数据库连接。这样,能够在一定程度上减少使用明文的数据库信息进行数据库连接时导致数据库信息泄露的风险,提高了数据库的安全。
上述数据库连接装置,根据预存的唯一的key值调用本地的DLL文件;其中,所述key值是由数据库预先生成并分配的;通过所述DLL文件获取与所述key值对应的数据库信息,并利用所述数据库信息对所述数据库进行连接测试,其中,所述DLL文件测试成功后对获取到的加密后的数据库信息进行解密得到解密字符串;获取所述DLL文件返回的所述解密字符串,根据所述解密字符串连接所述数据库。
本方案中,DLL文件接收上层应用程序的获取数据库请求,通过应用程序传入的唯一的key值,得到一段与数据库IP/域名、帐号、密码对应的加密后的数据库信息,再通过解密算法解释出明文的数据库IP/域名、帐号、密码,通过该解密字符串对数据库进行连接测试,并在测试成功后将解密字符串发送给应用程序,以便应用程序进行安全连接;在此过程中,数据库的IP/域名、账号、密码也不再是明文方式配置在配置文件中,而是调用DLL文件并通过加解密算法得到,这样有利于加强访问数据库的安全性,另外,当key值遭遇泄露时,只需对数据库中已保存的key值作相应的处理即可,解耦了因泄漏key值而导致大面积的数据库账号需要修改的现象。
关于数据库连接装置的具体限定可以参见上文中对于数据库连接方法的限定,在此不再赘述。上述数据库连接装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于终端设备中的处理器中,也可以以软件形式存储于终端设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,所述计算机设备中存储有计算机可读指令,所述计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行如上述实施例中任一项所述的数据库连接方法的步骤。
图6是一种计算机设备的内部结构示意图,该计算机设备300可以被提供为一服务器。参照图6,计算机设备300包括处理组件302,其进一步包括一个或多个处理器,以及由存储器301所代表的存储器资源,用于存储可由处理组件302的执行的指令,例如应用程序。存储器301中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件302被配置为执行指令,以执行上述任意实施例的数据库连接方法。
计算机设备300还可以包括一个电源组件303被配置为执行计算机设备300的电源管理,一个有线或无线网络接口304被配置为将计算机设备300连接到网络,和一个输入输出(I/O)接口305。计算机设备300可以操作基于存储在存储器301的操作系统,例如WindowsServer TM、Mac OS XTM、Unix TM、Linux TM、Free BSDTM或类似。
本领域技术人员可以理解,图6中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
应该理解的是,虽然附图的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,附图的流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
以上所述仅是本申请的部分实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。

Claims (10)

1.一种数据库连接方法,其特征在于,包括如下步骤:
根据预存的唯一的key值调用本地的DLL文件;其中,所述key值是由数据库预先生成并分配的;
通过所述DLL文件获取与所述key值对应的数据库信息,并利用所述数据库信息对所述数据库进行连接测试,其中,所述DLL文件测试成功后对获取到的加密后的数据库信息进行解密得到解密字符串;
获取所述DLL文件返回的所述解密字符串,根据所述解密字符串连接所述数据库。
2.根据权利要求1所述的数据库连接方法,其特征在于,所述key值是由加解密终端根据所述数据库发送的明文的数据库信息进行加密生成。
3.根据权利要求1所述的数据库连接方法,其特征在于,还包括:
判断所述key值是否泄露,若是,则通知所述数据库,并获取由所述数据库重新生成并分配的key值;其中,所述数据库将所述key值加入黑名单。
4.根据权利要求1所述的数据库连接方法,其特征在于,通过所述DLL文件获取与所述key值对应的数据库信息的步骤,包括:
通过所述DLL文件获取本地缓存中与所述key值对应的加密后的数据库信息;若获取失败,则在本地的磁盘缓存文件中获取所述数据库信息。
5.根据权利要求4所述的数据库连接方法,其特征在于,还包括:
若在所述磁盘缓存文件中获取所述数据库信息失败,则通过Web Service接口向RedisCluster缓存集群请求加密后的数据库信息,并将获取的所述数据库信息写入/更新到所述本地缓存以及所述磁盘缓存文件中。
6.根据权利要求5所述的数据库连接方法,其特征在于,所述通过Web Service接口向Redis Cluster缓存集群请求加密后的数据库信息的步骤,包括:
通过所述DLL文件调用Web Service接口,其中,所述DLL文件根据所述Web Service接口读取Redis Cluste缓存集群中存储的与所述key值对应的加密后的数据库信息,并通过所述Web Service接口进行二次加密。
7.根据权利要求5所述的数据库连接方法,其特征在于,所述通过Web Service接口向Redis Cluster缓存集群请求加密后的数据库信息的步骤之后,还包括:
通过所述DLL文件对所述Web Service接口进行线程监听,用于获取更新后的加密后的数据库信息;
并将获取到的所述数据库信息写入/更新到所述本地缓存以及所述磁盘缓存文件中。
8.根据权利要求4所述的数据库连接方法,其特征在于,所述通过所述DLL文件获取本地缓存中与所述key值对应的加密后的数据库信息;若获取失败,则在本地的磁盘缓存文件中获取所述数据库信息的步骤之后,还包括:
利用所述数据库信息对所述数据库进行连接测试;
若所述测试失败,则通过所述DLL文件调用Web Service接口请求加密后的数据库信息,并利用所述数据库信息重新对所述数据库进行连接测试。
9.一种数据库连接装置,其特征在于,包括:
调用模块,用于根据预存的唯一的key值调用本地的DLL文件;其中,所述key值是由数据库预先生成并分配的;
信息获取模块,用于通过所述DLL文件获取与所述key值对应的数据库信息,并利用所述数据库信息对所述数据库进行连接测试,其中,所述DLL文件测试成功后对获取到的加密后的数据库信息进行解密得到解密字符串;
连接模块,用于获取所述DLL文件返回的所述解密字符串,根据所述解密字符串连接所述数据库。
10.一种计算机设备,其特征在于:所述计算机设备中存储有计算机可读指令,所述计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行如权利要求1至8中任一项所述的数据库连接方法的步骤。
CN202010267283.1A 2020-04-08 2020-04-08 数据库连接方法、装置和计算机设备 Active CN111488331B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010267283.1A CN111488331B (zh) 2020-04-08 2020-04-08 数据库连接方法、装置和计算机设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010267283.1A CN111488331B (zh) 2020-04-08 2020-04-08 数据库连接方法、装置和计算机设备

Publications (2)

Publication Number Publication Date
CN111488331A true CN111488331A (zh) 2020-08-04
CN111488331B CN111488331B (zh) 2024-03-01

Family

ID=71812623

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010267283.1A Active CN111488331B (zh) 2020-04-08 2020-04-08 数据库连接方法、装置和计算机设备

Country Status (1)

Country Link
CN (1) CN111488331B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112953711A (zh) * 2021-01-28 2021-06-11 杉德银卡通信息服务有限公司 数据库安全连接系统及方法
CN114710352A (zh) * 2022-04-07 2022-07-05 平安科技(深圳)有限公司 一种php系统的密码调用方法、装置、电子设备及存储介质
CN117435661A (zh) * 2023-12-21 2024-01-23 深圳竹云科技股份有限公司 数据库连接配置方法、装置、计算机设备和存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103279715A (zh) * 2013-05-22 2013-09-04 李凤华 数据库数据加解密方法及装置
CN104168116A (zh) * 2014-08-19 2014-11-26 天地(常州)自动化股份有限公司 一种数据库身份验证方法及系统
CN105335432A (zh) * 2014-08-11 2016-02-17 无锡华润微电子有限公司 oracle数据库访问方法
CN106372465A (zh) * 2016-08-30 2017-02-01 北京深思数盾科技股份有限公司 一种动态链接库安全管理方法、系统和电子设备
CN109697370A (zh) * 2018-09-30 2019-04-30 深圳财富农场互联网金融服务有限公司 数据库数据加解密方法、装置、计算机设备和存储介质
CN109710671A (zh) * 2018-12-14 2019-05-03 国云科技股份有限公司 实现数据库操作数据引流的方法及其数据库防火墙系统

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103279715A (zh) * 2013-05-22 2013-09-04 李凤华 数据库数据加解密方法及装置
CN105335432A (zh) * 2014-08-11 2016-02-17 无锡华润微电子有限公司 oracle数据库访问方法
CN104168116A (zh) * 2014-08-19 2014-11-26 天地(常州)自动化股份有限公司 一种数据库身份验证方法及系统
CN106372465A (zh) * 2016-08-30 2017-02-01 北京深思数盾科技股份有限公司 一种动态链接库安全管理方法、系统和电子设备
CN109697370A (zh) * 2018-09-30 2019-04-30 深圳财富农场互联网金融服务有限公司 数据库数据加解密方法、装置、计算机设备和存储介质
CN109710671A (zh) * 2018-12-14 2019-05-03 国云科技股份有限公司 实现数据库操作数据引流的方法及其数据库防火墙系统

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112953711A (zh) * 2021-01-28 2021-06-11 杉德银卡通信息服务有限公司 数据库安全连接系统及方法
CN112953711B (zh) * 2021-01-28 2022-12-02 杉德银卡通信息服务有限公司 数据库安全连接系统及方法
CN114710352A (zh) * 2022-04-07 2022-07-05 平安科技(深圳)有限公司 一种php系统的密码调用方法、装置、电子设备及存储介质
CN114710352B (zh) * 2022-04-07 2023-08-08 平安科技(深圳)有限公司 一种php系统的密码调用方法、装置、电子设备及存储介质
CN117435661A (zh) * 2023-12-21 2024-01-23 深圳竹云科技股份有限公司 数据库连接配置方法、装置、计算机设备和存储介质

Also Published As

Publication number Publication date
CN111488331B (zh) 2024-03-01

Similar Documents

Publication Publication Date Title
US6243816B1 (en) Single sign-on (SSO) mechanism personal key manager
RU2620998C2 (ru) Способ снятия блокировки полномочий администрирования и устройство аутентификации
CN111488331B (zh) 数据库连接方法、装置和计算机设备
CN110489996B (zh) 一种数据库数据安全管理方法及系统
CN112632164B (zh) 一种实现可信权限访问的通用跨链编程接口方法
CN109657492B (zh) 数据库管理方法、介质及电子设备
CN111783075A (zh) 基于密钥的权限管理方法、装置、介质及电子设备
EP1522167A2 (en) Method and apparatus for managing a key management system
CN108810017B (zh) 业务处理安全验证方法及装置
WO2017128720A1 (zh) 基于vtpm对虚拟机进行安全保护的方法及系统
CA3176858A1 (en) Data processing method and system
CN110889130A (zh) 基于数据库的细粒度数据加密方法、系统及装置
CN107145531B (zh) 分布式文件系统及分布式文件系统的用户管理方法
CN106789014A (zh) 一种生成及使用用户终端密钥的方法和设备
CN114978605A (zh) 页面访问方法、装置、电子设备及存储介质
CN114629713A (zh) 身份验证方法、装置及系统
CN109474431B (zh) 客户端认证方法及计算机可读存储介质
US8379858B2 (en) Generating key information for mutual access among multiple computers
CN107276967B (zh) 一种分布式系统及其登录验证方法
CN111414610A (zh) 一种数据库验证密码的确定方法及装置
CN110008727B (zh) 加密敏感参数的处理方法、装置、计算机设备和存储介质
CN115238320B (zh) 一种电力数据存储管理方法
US9058503B2 (en) Systems and methods for secure storage on a mobile device
CN109284622B (zh) 联系人信息处理方法、装置及存储介质
CN110602121B (zh) 一种网络密钥获取方法、装置和计算机可读存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant