CN115374424A - 数据库的访问方法、装置、电子设备及存储介质 - Google Patents
数据库的访问方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN115374424A CN115374424A CN202211001460.7A CN202211001460A CN115374424A CN 115374424 A CN115374424 A CN 115374424A CN 202211001460 A CN202211001460 A CN 202211001460A CN 115374424 A CN115374424 A CN 115374424A
- Authority
- CN
- China
- Prior art keywords
- database
- password
- application program
- account
- access
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/30—Authentication, i.e. establishing the identity or authorisation of security principals
- G06F21/44—Program or device authentication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/08—Network architectures or network communication protocols for network security for authentication of entities
- H04L63/083—Network architectures or network communication protocols for network security for authentication of entities using passwords
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/10—Network architectures or network communication protocols for network security for controlling access to devices or network resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2141—Access rights, e.g. capability lists, access control lists, access tables, access matrices
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Databases & Information Systems (AREA)
- Storage Device Security (AREA)
Abstract
本申请公开了一种数据库的访问方法、装置、电子设备及存储介质。该访问方法包括:根据应用程序的访问请求指令验证应用程序是否具有访问权限,若具有访问权限,则根据数据库的预设密钥以及访问请求指令,获取应用程序访问数据库所需的数据库账号及密码,利用获取的数据库账号及密码访问数据库。本申请的数据库的访问方法,通过访问权限验证以及数据库账号及密码的获取,大大提高了对数据库的数据保护力度,对应用程序访问数据库的过程的防护效果较好,大大降低了数据库中的数据泄密的风险。
Description
技术领域
本申请涉及计算机技术领域,具体涉及一种数据库的访问方法、装置、电子设备及存储介质。
背景技术
随着信息技术的快速发展,用于存储和管理数据的数据库成为管理信息系统、办公自动化系统、决策支持系统以及交易平台等各类信息系统的核心部分。数据库是按照数据结构来组织、存储和管理数据的“仓库”,是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。各行各业的数据系统均设置有数据库,数据库中保存着大量的信息。例如,保险公司的数据库中保存着大量的客户信息;IT公司的数据库中保存着大量的源代码;产品销售公司的数据库中保存着大量的销售信息。现有技术中,对应用程序访问数据库的过程的防护措施不到位,存在严重的安全隐患,容易造成数据库中的数据泄密。
发明内容
本申请的目的是提供一种数据库的访问方法、装置、电子设备及存储介质。为了对披露的实施例的一些方面有一个基本的理解,下面给出了简单的概括。该概括部分不是泛泛评述,也不是要确定关键/重要组成元素或描绘这些实施例的保护范围。其唯一目的是用简单的形式呈现一些概念,以此作为后面的详细说明的序言。
根据本申请实施例的一个方面,提供一种数据库的访问方法,包括:
接收应用程序发送的针对数据库的访问请求指令;
根据所述访问请求指令验证所述应用程序是否具有访问权限;
若所述应用程序具有访问权限,则根据所述数据库的预设密钥以及所述访问请求指令,获取所述应用程序访问所述数据库所需的数据库账号及密码;
利用获取的数据库账号及密码访问所述数据库。
根据本申请实施例的另一个方面,提供一种数据库的访问装置,包括:
接收模块,用于接收应用程序发送的针对数据库的访问请求指令;
验证模块,用于根据所述访问请求指令验证所述应用程序是否具有访问权限;
获取模块,用于若所述应用程序具有访问权限,则根据所述数据库的预设密钥以及所述访问请求指令,获取所述应用程序访问所述数据库所需的数据库账号及密码;
访问模块,用于利用获取的数据库账号及密码访问所述数据库。
根据本申请实施例的另一个方面,提供一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序,以实现上述的数据库的访问方法。
根据本申请实施例的另一个方面,提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行,以实现上述的数据库的访问方法。
本申请实施例的其中一个方面提供的技术方案可以包括以下有益效果:
本申请实施例提供的数据库的访问方法,根据应用程序的访问请求指令验证应用程序是否具有访问权限,若具有访问权限,则根据数据库的预设密钥以及访问请求指令,获取应用程序访问数据库所需的数据库账号及密码,利用获取的数据库账号及密码访问数据库,通过访问权限验证以及数据库账号及密码的获取,大大提高了对数据库的数据保护力度,对应用程序访问数据库的过程的防护效果较好,大大降低了数据库中的数据泄密的风险。
本申请的其他特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者,部分特征和优点可以从说明书中推知或毫无疑义地确定,或者通过实施本申请实施例了解。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了本申请实施例的数据库的访问方法应用环境图。
图2示出了本申请的一个实施例的数据库的访问方法流程图。
图3示出了图2中步骤S20的流程图。
图4示出了图2中步骤S30的流程图。
图5示出了本申请的一个实施例的数据库的访问装置结构框图。
图6示出了本申请的一个实施例的电子设备结构框图。
图7示出了本申请的一个实施例的计算机可读存储介质示意图。
本申请的目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,下面结合附图和具体实施例对本申请做进一步说明。应当理解,此处所描述的具体实施例仅用以解释本申请,并不用于限定本申请。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本申请所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样被特定定义,否则不会用理想化或过于正式的含义来解释。
本申请提供的数据库的访问方法,可应用在如图1的应用环境中,其中,用户终端通过互联网与服务器端进行通信。应用程序安装在用户终端上,数据库安装在服务器端。通过本申请的访问方法,应用程序对数据库进行访问。服务器端可以接收用户终端发送的访问请求。其中,用户终端可以但不限于各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备。服务器端可以用独立的服务器或者是多个服务器组成的服务器集群来实现。下面通过具体的实施例对本申请进行详细的描述。
如图2所示,本申请的一个实施例提供了一种数据库的访问方法,包括:
S10、接收应用程序发送的针对数据库的访问请求指令。
访问请求指令携带应用程序的标识信息。应用程序可以是任一个被允许向数据库发起访问请求指令的对象。应用程序可以是数据库所在业务服务的服务主体,例如使用该业务服务的使用对象;应用程序也可以是该业务服务的监管主体,例如对该业务服务进行运维或开发的运维主体或开发主体。若应用程序不是该业务服务的监管主体,则可以称该应用程序为该业务服务的非监管主体。访问请求指令可以是应用程序采用终端设备发起的,该终端设备与计算机设备建立有通信连接,以使得计算机设备可以接收到应用程序针对数据库发起的访问请求指令,具体应用中,终端设备中还可以运行有相关的客户端或者网页,因此,应用程序可以具体通过终端设备中的客户端或网页向计算机设备发起访问请求指令。
访问请求指令可以携带应用程序的标识信息,标识信息可以用于指示应用程序是否为对数据库进行数据库管理的监管主体,或者用于指示应用程序是否具备对数据库进行数据库管理的权限等。在实际应用中,标识信息可以包括以下信息中的至少一种:应用程序的身份标识以及应用程序是否为监管主体等信息。
其中,身份标识与应用程序一一对应,也就是说,一个身份标识可以唯一标识一个对象,一个对象也可以只具备一个身份标识。这可以使得计算机设备能够基于身份标识准确无误地获取到与应用程序相关的对象信息,对象信息可以如:访问权限信息。监管主体指的是在数据库所属数据库管理设备中对数据库进行管理的对象,对应地,可以访问数据库但不具备对数据库的管理权限的对象则可以称为非监管主体。可以理解的是,监管主体所具备的访问权限信息所指示的访问权限通常会大于非监管主体所具备的访问权限信息所指示的访问权限。
S20、根据访问请求指令验证应用程序是否具有访问权限。
如图3所示,在一些实施方式中,步骤S20可以包括:
S201、根据访问请求指令生成与应用程序对应的第一动态加密指令。
步骤S201可以包括S2011至S2013:
S2011、获取与应用程序对应的公开密钥及预设动态系数的值。
具体地,预设动态系数包括时间。生成动态加密指令的参数包括公开密钥及动态系数。应用程序对应的公开密钥,是利用预设加密算法对应用程序信息加密生成的字符串。可选地,应用程序信息为应用程序的项目标识,预设加密算法例如可以为DES算法。
预先生成的公开密钥可以用于生成第一动态加密指令以及用于生成第二动态加密指令。预设动态系数中包括时间。具体地,时间精度可以为秒,即获取的时间值精确到秒。例如,获取的时间为“20220722150316”,表示2022年7月22日15时3分16秒。时间精度可以为分,即获取的时间值精确到分。例如,获取的时间为“202207221503”,表示2022年7月22日15时3分。
由于时间点具有唯一性,所以不同的时间点生成的动态加密指令也具有唯一性。预设动态系数除了时间以外,还可以包括其他类型的参数,例如,应用程序的编号或应用程序运行的次数等等。
S2012、将公开密钥及预设动态系数的值顺序连接为第一字符串,并根据预设加密算法,将第一字符串加密为第二字符串。
公开密钥及预设动态系数的连接顺序可以是公开密钥在前,也可以是预设动态系数在前。预设加密算法可以是MD5算法,也可以采用MD4算法。例如,将公开密钥及预设动态系数的值顺序连接为第一字符串,并利用MD5算法将第一字符串加密为第二字符串。
S2013、将第二字符串转换生成第一动态加密指令。
将第二字符串转换生成第一动态加密指令,包括:
将第二字符串转换为第一数组;根据预设动态加密指令位数,将第一数组等分为多个第二数组;其中,每个第二数组的长度均与预设动态加密指令位数相同;将各个第二数组中相同位置的元素进行逻辑运算,获得第三数组,并提取第三数组的每个字节元素中的一位二进制值,生成第一动态加密指令。
第一数组、第二数组和第三数组均为字节数组。例如,该第一数组为16字节长度的字节数组。预设动态加密指令为8位,则将第一数组等分为两个8位的数组。
示例性地,上述的逻辑运算可以为异或运算。例如,对两个8位数组每一位相同位置的数组元素进行异或运算,获得一个8位数组。
每一个字节元素中包含一个字节,即8位二进制数。可选地,提取的每个字节元素中的二进制值为最左一位,形成8位数字,该8位数字即第一动态加密指令。
S202、根据第一动态加密指令生成第二动态加密指令。
具体地,步骤S202可以包括:
当接收到应用程序对应的第一动态加密指令时,获取当前时间点;根据预设间隔时长,分别生成当前时间点及上一时间点各自对应的第二动态加密指令。
接收到该第一动态加密指令后,可以认为接收到触发指令从而执行后续生成及比对动作。生成第二动态加密指令的加密算法与生成第一动态加密指令的加密算法可以是同一种加密算法,该加密算法具体包括算法规则及算法加密使用的参数。
第二动态加密指令的生成算法与第一动态加密指令的生成算法可以是同一种算法,因此,公开密钥及动态系数的种类是相同的,且算法规则也可以是相同的。
具体地,加密指令验证端生成第二动态加密指令使用的是与该应用程序对应的公开密钥及动态系数。
生成第二动态加密指令的时间可以是接收到应用程序对应的第一动态加密指令后,也可以是根据预设间隔时长定时生成第二动态加密指令。该预设间隔时长的单位可以为秒,例如预设间隔时长可以设置为50秒;该预设间隔时长的单位可以为分,例如预设间隔时长可以设置为3分钟。根据预设间隔时长定时生成第二动态加密指令可以避免高频率地对数据库进行访问时造成的访问失败。
在一个具体应用场景中,根据访问请求指令验证应用程序是否具有对具体行业领域中的数据库进行访问的访问权限。现将场景限定为保险行业,并对该保险行业应用场景中该数据库身份验证算法进行详细说明。
在保险行业的应用场景中,数据库中存储的是保险项目及销售等行业数据,应用程序例如可以是保险项目监控程序。生成第一动态加密指令及第二动态加密指令的动态加密指令生成算法中的公开密钥,是通过将保险项目信息与保险项目客户信息进行顺序连接,并对连接后的字符串进行DES算法加密生成的。生成第一动态加密指令及第二动态加密指令的动态系数为时间,精度为分。然后,将公开密钥及动态系数顺序相连生成待加密字符串,在连接公开密钥及动态系数时可以采用公开密钥在前动态系数在后的连接顺序,也可以采用动态系数在前密钥在后的连接顺序。利用MD5算法加密生成的待加密字符串。
例如,保险项目信息为“大病保险”,保险项目客户信息为购买大病保险的客户的姓名加身份证号,例如客户姓名为张三,身份证号为110***************,则相应的保险项目客户信息为“张三110***************”,将保险项目信息与保险项目客户信息进行顺序连接得到的字符串为“大病保险张三110***************”;利用DES算法对该字符串“大病保险张三110***************”加密后生成的字符串为“MF1GwUIaBqJ9t8jNb8ALPcQOiwP/K4MQdDRXR6XvJWpFyLmKHtK/XJwO9PB5JA9a”,该字符串为公开密钥;获取的时间为“20220722150316”,表示2022年7月22日15时3分16秒;按照动态系数在前密钥在后的方式连接后生成的待加密字符串为“20220722150316MF1GwUIaBqJ9t8jNb8ALPcQOiwP/K4MQdDRXR6XvJWpFyLmKHtK/XJwO9PB5JA9a”。
利用MD5算法对该待加密字符串
“20220722150316MF1GwUIaBqJ9t8jNb8ALPcQOiwP/K4MQdDRXR6XvJWpFyLmKHtK/XJwO9PB5JA9a”进行加密后生成的字符串为“pNntwMlwZhr76CpiaTGu7K95Cuc2tukg==”。
在一个具体示例中,还提供了一种改进的MD5加密算法,该改进的MD5加密算法在使用MD5加密算法对明文(口令)加密的基础上,改动了密文,在密文中截取一段数据并丢弃该段被截取的数据,然后使用随机函数填充被丢弃的数据,且整个过程不改变MD5加密后的位数。
(1)对明文原始密码进行MD5加密,获得加密后的密文。
(2)使用截取函数截取加密后的密文,从预设截取位置截取预设长度的数据,得到截取的数据A以及剩余的数据B。
(3)在剩余的数据B中被丢弃的数据的位置,填充利用随机函数生成的数据,得到填充后的数据C。
(5)拼接截取的数据A和填充后的数据C得到最终的密码。
在另一个具体示例中,加密过程描述如下:
(1)对明文原始密码password进行MD5加密,获得加密后的密文MD5(password)。
(2)使用截取函数截取加密后的密文,从预设截取位置(第cutnum位置)开始截取预设截取位数(num)数据,得到密码A,其中A=left(MD5(password),cutnum-1)。
(3)使用截取函数截取加密后的明文中num位数的数据并丢弃,得到第一值B,其中B=right(MD5(password),MD5-digit-(cutnum+num-1))。
(4)使用随机函数gen_key(num)在第一值B中填充被丢弃的数据,得到填充后的数据。
(5)变换后的密码值为encrypt_password=A&get_key(num)&B;
或者,变换后的密码值为密码A与填充后的数据拼接得到的数据。
变量说明:
password:客户端提交的原始密码
encrypt_password:经过处理后的密码
cutnum:对原始密码开始截取的位置(0<cutnum<16或者0<cutnum<32)
num:对密码截取位数(0<cutnum<16或者0<cutnum<32)
MD5-digit:MD5取16位或者32位值。
解密过程跟加密过程有些类似,先对输入的明文进行加密,接着从cutnum处截取前半部分得到A′,后半部分得到B′,然后从数据库中读出密码中的A和B部分,最后如果A=A′并且B=B′,则认为用户输入的密码跟数据库中的密码是匹配的。在原有MD5加密的基础上,通过对密文截取一定位数的字符串,并使用随机数进行填充,最后得到的密文虽然是经过MD5加密,但是其值已经大不一样,因此通过MD5常规破解方法是永远也不能破解其原始密码值,从而保证了数据的安全。
例如,保险项目信息为“人身意外险”,保险项目客户信息为购买人身意外险的客户的姓名加身份证号,例如客户姓名为李四,身份证号为120***************,则相应的保险项目客户信息为“李四120***************”,将保险项目信息与保险项目客户信息进行顺序连接得到的字符串为“人身意外险李四120***************”;利用DES算法对该字符串“人身意外险李四120***************”加密后生成的字符串为“O1WNMPQLN9t58jNb62QOiwPs/K4M1VRcXR6Xc221xyLmKlp/uJwO5Pm5Ja6WM”,该字符串为公开密钥;获取的时间为“20220712211258”,表示2022年7月12日21时12分58秒;按照动态系数在前密钥在后的方式连接后生成的待加密字符串为“20220712211258O1WNMPQLN9t58jNb62QOiwPs/K4M1VRcXR6Xc221xyLmKlp/uJwO5Pm5Ja6WM”。
利用上述改进的MD5算法对该待加密字符串“20220712211258O1WNMPQLN9t58jNb62QOiwPs/K4M1VRcXR6Xc221xyLmKlp/uJwO5Pm5Ja6WM”进行加密后生成的字符串为“3UmhygQ2GF56CpONzaq3TXSHBCupc8jlEe##”。
S203、比对第一动态加密指令与第二动态加密指令是否相同,若相同,则确定应用程序具有访问权限。
应用程序需要访问数据库中的业务数据时,生成数据库访问指令,并发送该数据库访问指令。动态加密指令是利用动态加密指令算法生成的。由于动态加密指令算法生成动态加密指令的过程中需要对参数进行加密,参数与进行数据库访问的应用程序相对应,即每一应用程序具有对应的参数;当接收到一个应用程序的数据库访问指令时,获取与该应用程序相对应的参数,从而使对参数加密生成的第一动态加密指令具有唯一性。
S30、若应用程序具有访问权限,则根据数据库的预设密钥以及访问请求指令,获取应用程序访问数据库所需的数据库账号及密码。
如图4所示,步骤S30中的根据数据库的预设密钥以及访问请求指令,获取应用程序访问数据库所需的数据库账号及密码,包括:
S301、在标识信息指示应用程序为监管主体的情况下,获取数据库的加密数据,加密数据包括加密后的账号及密码;
S302、根据预设密钥对加密后的账号及密码进行解密处理,得到数据库管理账号及密码;
S303、将数据库管理账号及密码确定为应用程序访问数据库所需的数据库账号及密码。
加密数据还包括密钥,加密后的账号及密码是根据密钥和预设密钥对数据库管理账号及密码进行加密后得到的;
根据预设密钥对加密后的账号及密码进行解密处理,得到数据库管理账号及密码,包括:根据密钥以及预设密钥生成解密参数;采用解密参数及密钥对加密后的账号及密码进行解密处理,得到数据库管理账号及密码。
具体地,若应用程序具有访问权限,则计算机设备可以获取数据库的预设密钥,进而可以基于预设密钥解析出与数据库相关的数据库账号及密码。
其中,预设密钥主要用于对数据库的账号及密码、数据库中的数据等进行加密和解密。数据库的预设密钥可以是用于代理数据库的实例程序代码所关联的预设密钥。
计算机设备可以构建一个或多个实例程序代码,每个实例程序代码可以用于对至少一个数据库进行访问代理。对于计算机设备构建的一个或多个实例程序代码中的不同实例程序代码,其采用的响应方式或响应逻辑可以不相同。因此,当预设密钥与实例程序代码关联存储时,不同的实例程序代码对应的预设密钥可以不相同,被不同实例程序代码所代理的数据库的预设密钥也就可以不相同。实例程序代码也可以称为代理实例。对于被同一实例程序代码所代理的各个数据库,其预设密钥可以是相同的,也就是说不同的数据库的预设密钥可以相同。
在一些实施方式中,根据获取的预设密钥以及访问请求指令,获取应用程序访问数据库所需的数据库账号及密码,包括:在标识信息指示应用程序为非监管主体的情况下,获取数据库的数据库标识;根据数据库标识以及预设密钥,生成应用程序访问数据库时所需的数据库账号及密码。
根据数据库标识以及预设密钥,生成应用程序访问数据库时所需的数据库账号及密码,包括:获取用于代理数据库的代理实例的实例标识;基于实例标识以及数据库标识,生成数据库账号标识;根据数据库账号标识及预设密钥,生成数据库账号密码;生成包含数据库账号标识和数据库账号密码的数据库账号及密码。
S40、利用获取的数据库账号及密码访问数据库。
在一些实施方式中,访问请求指令携带至少一条访问请求语句,步骤S40可以包括:
S401、若应用程序的标识信息指示应用程序为非监管主体,则从权限设备获取应用程序的执行权限信息,执行权限信息包括数据量预设限值,数据量预设限值用于表示允许应用程序在数据库中进行修改的数据的预设数据量。
S402、依次执行至少一条访问请求语句,并在执行过程中确定数据库中被修改的数据的最大数据量。
S403、在确定出的数据量大于数据量预设限值,且数据库支持事务机制时,取消至少一条访问请求语句中已执行的所有访问请求语句对数据库造成的修改。
事务机制是数据库领域的术语,指的是单个逻辑工作单元执行的一系列操作,能够在数据库中同步发生数据更新时,避免数据出现不一致的情况。事务是数据库中一个独立的执行单元,事务机制可以保持数据库的平稳性。
事务对于数据库来说,就像是一个盒子,其中装的是一些sql语句。
如果没有事务,没有这个盒子,那么每次对数据库进行操作,就会立即生效。这样的话,数据库数据的完整性和一致性将难以得到保证。数据库变得很脆弱。mysql是默认关闭事务的。默认情况下,执行一条DML语句(insert、update、delete这些操作),这条DML语句将会立即生效,保存到数据库中,无法进行回滚。
创建事务需要调用命令:SET AUTOCOMMIT={0|1},0为关闭自动提交,也就是开启事务。
开启事务后,除非显示的调用commit来提交事务,或者执行DDL、DCL语句以及正常退出,否则DML语句都还没生效。
但是,在一个事务中,即便DML还没有生效,如果在事务中查询数据,DML操作貌似已经生效了。但是,打开其他的命令行窗口连接数据库,再查询,结果将会与事务中的查询不同。这里可以理解为,DML语句在当前事务中是生效的,但是还保留着回滚的权利。
总而言之,可以把事务理解为装DML语句的一个盒子,盒子中可以反悔。这个盒子是与外界隔离的,除非提交事务中的操作,否则对数据库不会生效。
这个盒子需要显示的调用命令:SET AUTOCOMMIT=0(或者临时创建:begin、starttransaction)来创建。盒子会在显示提交commit或者DDL、DCL的执行导致提交后销毁。在盒子中执行全部回滚,也会销毁盒子(执行中间点回滚,盒子依然存在)。
S404、在确定出的数据量大于数据量预设限值,且数据库不支持事务机制时,取消数据量大于数据量预设限值时所执行的访问请求语句对数据库造成的修改。
在一个具体示例中,基于获取到的预设密钥和应用程序的标识信息,确定应用程序访问数据库时所需的数据库账号及密码,并通过确定出的数据库账号及密码对数据库进行访问。计算机设备通过确定出的数据库账号及密码对数据库进行访问的方式,则可以是计算机设备为应用程序登录数据库账号及密码所指示的数据库账号,以通过该数据库账号与数据库建立通信连接,从而实现应用程序对数据库的访问。
不同标识信息的应用程序采用的数据库账号不同。具体来说,当标识信息指示应用程序为监管主体时,应用程序采用的数据库账号可以是对数据库进行数据库管理的数据库管理账号;当标识信息指示应用程序为非监管主体时,应用程序采用的数据库账号可以是计算机设备构建的通用数据库账号。
在某些实施方式中,上述方法还包括:在标识信息指示应用程序为非监管主体的情况下,获取数据库的数据库标识;根据数据库标识以及预设密钥,生成应用程序访问数据库时所需的数据库账号及密码,并通过确定出的数据库账号及密码对数据库进行访问。
在本申请实施例中,标识信息可以指示应用程序为非监管主体,也可以指示应用程序为监管主体。不同标识信息的对象,其在访问数据库时所采用的数据库账号及密码不同。在标识信息指示应用程序为非监管主体时,应用程序采用的数据库账号及密码可以是计算机设备为数据库创建的数据库账号所对应账号及密码。
在本申请实施例中为了保证数据库账号的安全性,计算机设备在确定非监管主体采用的数据库账号及密码时,需要按照计算机设备创建数据库账号的方式来计算得到相应的数据库账号及密码。
当应用程序为非监管主体时,计算机设备需要确定数据库的数据库标识以及用于代理数据库的实例程序代码的实例标识,计算机设备可以基于数据库标识、实例标识和数据库的预设密钥计算出相应的数据库账号及密码。
在标识信息指示应用程序为监管主体时,计算机设备可以确定数据库的数据库管理账号及密码来作为应用程序所需采用的数据库账号及密码。当标识信息指示应用程序为非监管主体时,计算机设备需要计算为数据库创建的数据库账号及密码来作为应用程序采用的数据库账号及密码,其中,数据库账号及密码可以包括数据库账号标识以及数据库账号密码。在标识信息指示应用程序为监管主体时,应用程序采用的数据库账号及密码可以是数据库管理账号及密码。
在应用程序对数据库的访问过程中,计算机设备可以执行访问请求语句,执行的访问请求语句可以是计算机设备接收到的访问请求指令中携带的。具体地,计算机设备接收到的访问请求指令可以携带至少一条访问请求语句。
在一些实施方式中,当应用程序的标识信息指示应用程序为监管主体时,计算机设备可以在解密得到数据库的数据库管理账号及密码后,为应用程序登录数据库管理账号及密码所指示的数据库管理账号,从而使得应用程序在访问数据库时可以被允许直接执行这至少一条访问请求语句。当应用程序的标识信息指示应用程序为非监管主体时,计算机设备可以从权限设备中获取非监管主体的执行权限信息。其中,执行权限信息至少可以包括数据量阈值,数据量阈值用于指示允许应用程序在数据库中修改的数据的最大数据量。
本申请实施例提供的数据库的访问方法,根据应用程序的访问请求指令验证应用程序是否具有访问权限,若具有访问权限,则根据数据库的预设密钥以及访问请求指令,获取应用程序访问数据库所需的数据库账号及密码,利用获取的数据库账号及密码访问数据库,通过访问权限验证以及数据库账号及密码的获取,大大提高了对数据库的数据保护力度,对应用程序访问数据库的过程的防护效果较好,大大降低了数据库中的数据泄密的风险。
如图5所示,本申请的另一个实施例提供了一种数据库的访问装置,包括:
接收模块,用于接收应用程序发送的针对数据库的访问请求指令;
验证模块,用于根据所述访问请求指令验证所述应用程序是否具有访问权限;
获取模块,用于若所述应用程序具有访问权限,则根据所述数据库的预设密钥以及所述访问请求指令,获取所述应用程序访问所述数据库所需的数据库账号及密码;
访问模块,用于利用获取的数据库账号及密码访问所述数据库。
在一些实施方式中,根据所述访问请求指令验证所述应用程序是否具有访问权限,包括:根据所述访问请求指令生成与所述应用程序对应的第一动态加密指令;根据所述第一动态加密指令生成第二动态加密指令;比对所述第一动态加密指令与所述第二动态加密指令是否相同;若相同,则确定所述应用程序具有访问权限。
在一些实施方式中,根据所述访问请求指令生成与所述应用程序对应的第一动态加密指令,包括:获取与所述应用程序对应的公开密钥及预设动态系数的值;其中,所述预设动态系数包括时间;将所述公开密钥及所述预设动态系数的值顺序连接为第一字符串,并根据预设加密算法,将所述第一字符串加密为第二字符串;将所述第二字符串转换生成第一动态加密指令。
在一些实施方式中,将所述第二字符串转换生成第一动态加密指令,包括:将所述第二字符串转换为第一数组;根据预设动态加密指令位数,将所述第一数组等分为多个第二数组;其中,每个所述第二数组的长度均与所述预设动态加密指令位数相同;将各个所述第二数组中相同位置的元素进行逻辑运算,获得第三数组,并提取所述第三数组的每个字节元素中的一位二进制值,生成第一动态加密指令。
在一些实施方式中,根据所述第一动态加密指令生成第二动态加密指令,包括:当接收到应用程序对应的第一动态加密指令时,获取当前时间点;根据预设间隔时长,分别生成当前时间点及上一时间点各自对应的第二动态加密指令。
在一些实施方式中,访问请求指令携带所述应用程序的标识信息;所述根据所述数据库的预设密钥以及所述访问请求指令,获取所述应用程序访问所述数据库所需的数据库账号及密码,包括:在所述标识信息指示所述应用程序为监管主体的情况下,获取所述数据库的加密数据,所述加密数据包括加密后的账号及密码;根据所述预设密钥对所述加密后的账号及密码进行解密处理,得到所述数据库管理账号及密码;将所述数据库管理账号及密码确定为所述应用程序访问所述数据库所需的数据库账号及密码。
在一些实施方式中,所述加密数据还包括密钥,所述加密后的账号及密码是根据所述密钥和所述预设密钥对所述数据库管理账号及密码进行加密后得到的;所述根据所述预设密钥对所述加密后的账号及密码进行解密处理,得到所述数据库管理账号及密码,包括:根据所述密钥以及所述预设密钥生成解密参数;采用所述解密参数及所述密钥对所述加密后的账号及密码进行解密处理,得到所述数据库管理账号及密码。
在一些实施方式中,根据获取的所述预设密钥以及所述访问请求指令,获取所述应用程序访问所述数据库所需的数据库账号及密码,包括:在所述标识信息指示所述应用程序为非监管主体的情况下,获取所述数据库的数据库标识;根据所述数据库标识以及所述预设密钥,生成所述应用程序访问所述数据库时所需的数据库账号及密码。
在一些实施方式中,根据所述数据库标识以及所述预设密钥,生成所述应用程序访问所述数据库时所需的数据库账号及密码,包括:获取用于代理所述数据库的实例程序代码的实例标识;基于所述实例标识以及所述数据库标识,生成数据库账号标识;根据所述数据库账号标识及所述预设密钥,生成数据库账号密码;生成包含所述数据库账号标识和所述数据库账号密码的数据库账号及密码。
本申请实施例提供的数据库的访问装置,能够根据应用程序的访问请求指令验证应用程序是否具有访问权限,若具有访问权限,则根据数据库的预设密钥以及访问请求指令,获取应用程序访问数据库所需的数据库账号及密码,利用获取的数据库账号及密码访问数据库,通过访问权限验证以及数据库账号及密码的获取,大大提高了对数据库的数据保护力度,对应用程序访问数据库的过程的防护效果较好,大大降低了数据库中的数据泄密的风险。
本申请的另一个实施例提供了一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序,以实现上述任一实施方式的数据库的访问方法。
如图6所示,电子设备10可以包括:处理器100,存储器101,总线102和通信接口103,处理器100、通信接口103和存储器101通过总线102连接;存储器101中存储有可在处理器100上运行的计算机程序,处理器100运行该计算机程序时执行本申请前述任一实施方式所提供的方法。
其中,存储器101可能包含高速随机存取存储器(RAM:Random Access Memory),也可能还可以包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。通过至少一个通信接口103(可以是有线或者无线)实现该系统网元与至少一个其他网元之间的通信连接,可以使用互联网、广域网、本地网、城域网等。
总线102可以是ISA总线、PCI总线或EISA总线等。总线可以分为地址总线、数据总线、控制总线等。其中,存储器101用于存储程序,处理器100在接收到执行指令后,执行该程序,前述本申请实施例任一实施方式揭示的方法可以应用于处理器100中,或者由处理器100实现。
处理器100可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器100中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器100可以是通用处理器,可以包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器101,处理器100读取存储器101中的信息,结合其硬件完成上述方法的步骤。
本申请实施例提供的电子设备与本申请实施例提供的方法出于相同的发明构思,具有与其采用、运行或实现的方法相同的有益效果。
本申请的另一个实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行,以实现上述任一实施方式的数据库的访问方法。
参考图7所示,其示出的计算机可读存储介质为光盘20,其上存储有计算机程序(即程序产品),该计算机程序在被处理器运行时,会执行前述任意实施方式所提供的方法。
需要说明的是,计算机可读存储介质的例子还可以包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他光学、磁性存储介质,在此不再一一赘述。
本申请的上述实施例提供的计算机可读存储介质与本申请实施例提供的方法出于相同的发明构思,具有与其存储的应用程序所采用、运行或实现的方法相同的有益效果。
需要说明的是:
术语“模块”并非意图受限于特定物理形式。取决于具体应用,模块可以实现为硬件、固件、软件和/或其组合。此外,不同的模块可以共享公共组件或甚至由相同组件实现。不同模块之间可以存在或不存在清楚的界限。
在此提供的算法和显示不与任何特定计算机、虚拟装置或者其它设备固有相关。各种通用装置也可以与基于在此的示例一起使用。根据上面的描述,构造这类装置所要求的结构是显而易见的。此外,本申请也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本申请的内容,并且上面对特定语言所做的描述是为了披露本申请的最佳实施方式。
应该理解的是,虽然附图的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,附图的流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
以上所述实施例仅表达了本申请的实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。
Claims (12)
1.一种数据库的访问方法,其特征在于,包括:
接收应用程序发送的针对数据库的访问请求指令;
根据所述访问请求指令验证所述应用程序是否具有访问权限;
若所述应用程序具有访问权限,则根据所述数据库的预设密钥以及所述访问请求指令,获取所述应用程序访问所述数据库所需的数据库账号及密码;
利用获取的数据库账号及密码访问所述数据库。
2.根据权利要求1所述的方法,其特征在于,所述根据所述访问请求指令验证所述应用程序是否具有访问权限,包括:
根据所述访问请求指令生成与所述应用程序对应的第一动态加密指令;
根据所述第一动态加密指令生成第二动态加密指令;
比对所述第一动态加密指令与所述第二动态加密指令是否相同;
若相同,则确定所述应用程序具有访问权限。
3.根据权利要求2所述的方法,其特征在于,根据所述访问请求指令生成与所述应用程序对应的第一动态加密指令,包括:
获取与所述应用程序对应的公开密钥及预设动态系数的值;其中,所述预设动态系数包括时间;
将所述公开密钥及所述预设动态系数的值顺序连接为第一字符串,并根据预设加密算法,将所述第一字符串加密为第二字符串;
将所述第二字符串转换生成第一动态加密指令。
4.根据权利要求3所述的验证方法,其特征在于,所述将所述第二字符串转换生成第一动态加密指令,包括:
将所述第二字符串转换为第一数组;
根据预设动态加密指令位数,将所述第一数组等分为多个第二数组;其中,每个所述第二数组的长度均与所述预设动态加密指令位数相同;
将各个所述第二数组中相同位置的元素进行逻辑运算,获得第三数组,并提取所述第三数组的每个字节元素中的一位二进制值,生成第一动态加密指令。
5.根据权利要求2所述的验证方法,其特征在于,所述根据所述第一动态加密指令生成第二动态加密指令,包括:
当接收到应用程序对应的第一动态加密指令时,获取当前时间点;
根据预设间隔时长,分别生成当前时间点及上一时间点各自对应的第二动态加密指令。
6.根据权利要求1所述的方法,其特征在于,所述访问请求指令携带所述应用程序的标识信息;所述根据所述数据库的预设密钥以及所述访问请求指令,获取所述应用程序访问所述数据库所需的数据库账号及密码,包括:
在所述标识信息指示所述应用程序为监管主体的情况下,获取所述数据库的加密数据,所述加密数据包括加密后的账号及密码;
根据所述预设密钥对所述加密后的账号及密码进行解密处理,得到所述数据库管理账号及密码;
将所述数据库管理账号及密码确定为所述应用程序访问所述数据库所需的数据库账号及密码。
7.根据权利要求6所述的方法,其特征在于,所述加密数据还包括密钥,所述加密后的账号及密码是根据所述密钥和所述预设密钥对所述数据库管理账号及密码进行加密后得到的;所述根据所述预设密钥对所述加密后的账号及密码进行解密处理,得到所述数据库管理账号及密码,包括:
根据所述密钥以及所述预设密钥生成解密参数;
采用所述解密参数及所述密钥对所述加密后的账号及密码进行解密处理,得到所述数据库管理账号及密码。
8.根据权利要求1所述的方法,其特征在于,所述根据获取的所述预设密钥以及所述访问请求指令,获取所述应用程序访问所述数据库所需的数据库账号及密码,包括:
在所述标识信息指示所述应用程序为非监管主体的情况下,获取所述数据库的数据库标识;
根据所述数据库标识以及所述预设密钥,生成所述应用程序访问所述数据库时所需的数据库账号及密码。
9.根据权利要求8所述的方法,其特征在于,所述根据所述数据库标识以及所述预设密钥,生成所述应用程序访问所述数据库时所需的数据库账号及密码,包括:
获取用于代理所述数据库的实例程序代码的实例标识;
基于所述实例标识以及所述数据库标识,生成数据库账号标识;
根据所述数据库账号标识及所述预设密钥,生成数据库账号密码;
生成包含所述数据库账号标识和所述数据库账号密码的数据库账号及密码。
10.一种数据库的访问装置,其特征在于,包括:
接收模块,用于接收应用程序发送的针对数据库的访问请求指令;
验证模块,用于根据所述访问请求指令验证所述应用程序是否具有访问权限;
获取模块,用于若所述应用程序具有访问权限,则根据所述数据库的预设密钥以及所述访问请求指令,获取所述应用程序访问所述数据库所需的数据库账号及密码;
访问模块,用于利用获取的数据库账号及密码访问所述数据库。
11.一种电子设备,其特征在于,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序,以实现如权利要求1-9中任一所述的方法。
12.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行,以实现如权利要求1-9中任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211001460.7A CN115374424A (zh) | 2022-08-19 | 2022-08-19 | 数据库的访问方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211001460.7A CN115374424A (zh) | 2022-08-19 | 2022-08-19 | 数据库的访问方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115374424A true CN115374424A (zh) | 2022-11-22 |
Family
ID=84064761
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211001460.7A Pending CN115374424A (zh) | 2022-08-19 | 2022-08-19 | 数据库的访问方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115374424A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116455603A (zh) * | 2023-03-13 | 2023-07-18 | 安庆吕阁妮网络科技有限公司 | 一种基于隔离加密的数据库访问方法及系统 |
-
2022
- 2022-08-19 CN CN202211001460.7A patent/CN115374424A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116455603A (zh) * | 2023-03-13 | 2023-07-18 | 安庆吕阁妮网络科技有限公司 | 一种基于隔离加密的数据库访问方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9977918B2 (en) | Method and system for verifiable searchable symmetric encryption | |
US20210248849A1 (en) | Secure smart unlocking | |
US10599863B2 (en) | Database encryption to provide write protection | |
TW201638798A (zh) | 用於在加密資料上進行查詢處理的資料庫伺服器及客戶端 | |
US7809958B2 (en) | Method for guaranteeing freshness of results for queries against a non-secure data store | |
CN111884986B (zh) | 一种数据加密处理方法、装置及存储介质 | |
EP3839791B1 (en) | Identification and authorization of transactions via smart contracts | |
AU2017440029B2 (en) | Cryptographic key generation for logically sharded data stores | |
US10846373B2 (en) | Method and system for securing a client's access to a DRM agent's services for a video player | |
Macedo et al. | A practical framework for privacy-preserving NoSQL databases | |
CN111475828A (zh) | 区块链账本数据的加密方法及装置、解密方法及装置 | |
WO2012164427A1 (en) | Protecting a control vector in a cryptographic system | |
CN111404892B (zh) | 数据监管方法、装置和服务器 | |
CN104484628A (zh) | 一种具有加密解密功能的多应用智能卡 | |
CN115374424A (zh) | 数据库的访问方法、装置、电子设备及存储介质 | |
WO2024098550A1 (zh) | 数据中用户标识的加解密方法、系统及设备 | |
CN111104693A (zh) | 一种Android平台软件数据破解方法、终端设备及存储介质 | |
CN108376212B (zh) | 执行代码安全保护方法、装置及电子装置 | |
CN115589316A (zh) | 一种数据加密传输方法、装置、电子设备及存储介质 | |
EP1782203B1 (en) | Method for guaranteeing freshness of results for queries against a non-secure data store | |
US20120311324A1 (en) | Method of mapping key information | |
CN115439118B (zh) | 一种基于区块链的数字存证管理方法 | |
CN114064730A (zh) | 一种数据查询方法、装置及系统 | |
CN115510465A (zh) | 一种非侵入式数据库加密方法、系统和装置 | |
CN110826083A (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 |