CN116881275A - 数据库查询方法、装置及存储介质 - Google Patents
数据库查询方法、装置及存储介质 Download PDFInfo
- Publication number
- CN116881275A CN116881275A CN202310651637.6A CN202310651637A CN116881275A CN 116881275 A CN116881275 A CN 116881275A CN 202310651637 A CN202310651637 A CN 202310651637A CN 116881275 A CN116881275 A CN 116881275A
- Authority
- CN
- China
- Prior art keywords
- field
- query
- request
- target
- sql
- 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
- 238000000034 method Methods 0.000 title claims abstract description 92
- 238000003860 storage Methods 0.000 title claims abstract description 22
- 238000012795 verification Methods 0.000 claims abstract description 53
- 238000012546 transfer Methods 0.000 claims abstract description 15
- 238000004891 communication Methods 0.000 claims description 17
- 230000008569 process Effects 0.000 claims description 14
- 238000004590 computer program Methods 0.000 claims description 9
- 230000015654 memory Effects 0.000 description 41
- 238000011161 development Methods 0.000 description 27
- 230000018109 developmental process Effects 0.000 description 27
- 230000006870 function Effects 0.000 description 23
- 238000012545 processing Methods 0.000 description 23
- 238000010586 diagram Methods 0.000 description 12
- 238000006467 substitution reaction Methods 0.000 description 7
- 238000009826 distribution Methods 0.000 description 6
- 230000000007 visual effect Effects 0.000 description 6
- 230000014509 gene expression Effects 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 5
- 230000032683 aging Effects 0.000 description 4
- 238000013475 authorization Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 3
- 230000000977 initiatory effect Effects 0.000 description 3
- 238000012544 monitoring process Methods 0.000 description 3
- 239000007787 solid Substances 0.000 description 3
- 238000010276 construction Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 238000005065 mining Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000009877 rendering Methods 0.000 description 2
- 235000014510 cooky Nutrition 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000007613 environmental effect Effects 0.000 description 1
- 230000006698 induction Effects 0.000 description 1
- 238000002347 injection Methods 0.000 description 1
- 239000007924 injection Substances 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000011022 operating instruction Methods 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000001105 regulatory effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000000243 solution Substances 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
- 238000012800 visualization Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/955—Retrieval from the web using information identifiers, e.g. uniform resource locators [URL]
- G06F16/9558—Details of hyperlinks; Management of linked annotations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/955—Retrieval from the web using information identifiers, e.g. uniform resource locators [URL]
- G06F16/9566—URL specific, e.g. using aliases, detecting broken or misspelled links
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Mathematical Physics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供一种数据库查询方法、装置及存储介质,涉及数据查询领域。该方法包括:接收请求侧发送的查询超文本传输协议http请求,查询http请求用于请求从预目标数据库中获得目标数据,查询http请求中包括SQL校验字段、认证标记字段和SQL语句字段;基于SQL校验字段和目标数据库中的签名字段进行校验;在SQL校验字段校验成功的情况下,基于认证标记字段和SQL语句字段,从目标数据库中查询目标数据。
Description
技术领域
本申请涉及数据查询领域,尤其涉及一种数据库查询方法、装置及存储介质。
背景技术
可视化大屏类产品由于可以通过呈现图表等关键数据和指标,以企业支撑进行问题挖掘、流程改进、成绩总结等活动,因而被广泛应用。
具体地,可视化大屏类产品往往是通过查询后台数据,然后在前端进行图表渲染和呈现。现有数据接口实现技术中,往往是通过特定查询接口或通用查询接口开发的方式对单个接口进行后端开发或配置。
然而,当面对大量的数据查询需求时,接口开发和接口维护都是繁重任务,同时,当前端的数据需求新增或变化时,后端都需要做出相应的处理,这将极大影响可视化大屏的开发效率。如此,在保证数据接口安全开放的前提下,如何降低数据查询的开发量为本申请亟待解决的问题。
发明内容
本申请提供一种数据库查询方法、装置及存储介质,能够解决数据接口安全较低,且数据查询时的开发量较大的问题。
为达到上述目的,本申请采用如下技术方案:
第一方面,本申请提供一种数据库查询方法,应用于接口侧,该方法包括:接收请求侧发送的查询超文本传输协议(Hyper Text Transfer Protocol,http)请求,查询http请求用于请求从目标数据库中获得目标数据,查询http请求中包括结构化查询语言(Structured Query Language,SQL)校验字段、认证标记字段和SQL语句字段;基于SQL校验字段和目标数据库中的签名字段进行校验;在SQL校验字段校验成功的情况下,基于认证标记字段和SQL语句字段,从目标数据库中查询目标数据。
基于上述技术方案,本申请实施例提供的数据库查询方法,可以在接收到查询http请求之后,基于查询http请求中的SQL校验字段和目标数据库中的签名字段进行校验,并在校验成功的情况下,基于查询http请求中的认证标记字段和SQL语句字段,从目标数据库中查询目标数据。因此,一方面,可以通过SQL校验字段和认证标记字段,限制数据接口的许可用户,在保证数据接口的安全性;另一方面,可以从查询http请求中快速获取SQL语句字段,直接在目标数据库中进行查询,降低了数据查询时的开发量。如此,本申请实施例提供的数据库查询方法可以在保证数据接口安全性的情况下,降低数据查询时的开发量。
在第一方面的第一种可能的实现方式中,基于SQL校验字段和目标数据库中的签名字段进行校验,包括:将SQL校验字段和目标数据库中的签名字段进行匹配;在SQL校验字段与目标数据库中的一个签名字段相匹配的情况下,确定SQL校验字段校验成功;或者,在SQL校验字段与目标数据库中的所有签名字段均不匹配的情况下,确定SQL校验字段校验失败。
在第一方面的第二种可能的实现方式中,基于认证标记字段和SQL语句字段,从目标数据库中查询目标数据,包括:在认证标记字段指示免认证的情况下,根据SQL语句字段,从目标数据库中查询目标数据;或者,在认证标记字段指示非免认证的情况下,若查询http请求的请求头信息不满足第一条件,则认证成功,并根据SQL语句字段,从目标数据库中查询目标数据;其中,第一条件包括以下至少之一:请求头信息未携带用户令牌、用户令牌为非法令牌、用户令牌包含的用户信息与认证标记字段对应的许可用户不匹配。
在第一方面的第三种可能的实现方式中,在认证标记字段指示非免认证的情况下,若查询http请求的请求头信息满足第一条件,则认证失败,并向请求侧发送认证失败的指示信息;接收请求侧发送的登录http请求,登录http请求用于请求访问目标数据库,登录http请求中包括目标用户信息字段;将目标用户信息字段与目标数据库中的用户信息字段进行匹配;在目标用户信息字段匹配成功的情况下,生成并向请求侧发送目标用户令牌;接收请求侧再次发送的查询http请求,以请求从目标数据库中获得目标数据,其中,再次发送的查询http请求中包括目标用户令牌。
在第一方面的第四种可能的实现方式中,查询http请求中还包括替换变量字段,基于认证标记字段和SQL语句字段,从目标数据库中查询目标数据之后,方法还包括:基于替换变量字段,对SQL语句字段进行变量替换,得到目标SQL语句字段;基于目标SQL语句字段,从目标数据库中查询目标数据。
第二方面,本申请提供一种数据库查询方法,应用于请求侧,该方法包括:向接口侧发送查询超文本传输协议http请求,查询http请求用于请求从目标数据库中获得目标数据,查询http请求中包括SQL校验字段、认证标记字段和SQL语句字段;其中,SQL校验字段用于接口侧与目标数据库中的签名字段进行校验,并在SQL校验字段校验成功的情况下,基于认证标记字段和SQL语句字段,从目标数据库中查询目标数据。
在第二方面的第一种可能的实现方式中,向接口侧发送查询http请求之后,方法还包括:接收接口侧发送的认证失败的指示信息,认证失败的指示信息为接口侧在认证标记字段指示非免认证、且查询http请求的请求头信息满足第一条件的情况下发送的;向接口侧发送登录http请求,登录http请求用于请求访问目标数据库,登录http请求中包括目标用户信息字段;接收接口侧发送的目标用户令牌,目标用户令牌为接口侧在目标用户信息字段与目标数据库中的用户信息字段匹配成功的情况下生成并发送的;向接口侧再次发送查询http请求,以请求从目标数据库中获得目标数据,其中,再次发送的查询http请求中包括目标用户令牌;其中,第一条件包括以下至少之一:请求头信息未携带用户令牌、用户令牌为非法令牌、用户令牌包含的用户信息与认证标记字段对应的许可用户不匹配。
第三方面,本申请提供一种数据库查询装置,应用于接口侧,该装置包括:接收模块、校验模块和查询模块;接收模块,用于接收请求侧发送的查询http请求,查询http请求用于请求从目标数据库中获得目标数据,查询http请求中包括SQL校验字段、认证标记字段和SQL语句字段;校验模块,用于接收模块接收的基于SQL校验字段和目标数据库中的签名字段进行校验;查询模块,用于在校验模块对SQL校验字段校验成功的情况下,基于认证标记字段和SQL语句字段,从目标数据库中查询目标数据。
在第三方面的第一种可能的实现方式中,装置还包括:发送模块和匹配模块;发送模块,用于在认证标记字段指示非免认证的情况下,若查询http请求的请求头信息满足第一条件,则认证失败,并向请求侧发送认证失败的指示信息;接收模块,还用于接收请求侧发送的登录http请求,登录http请求用于请求访问目标数据库,登录http请求中包括目标用户信息字段;匹配模块,用于将目标用户信息字段与目标数据库中的用户信息字段进行匹配;发送模块,还用于在目标用户信息字段匹配成功的情况下,生成并向请求侧发送目标用户令牌;接收模块,还用于接收请求侧再次发送的查询http请求,以请求从目标数据库中获得目标数据,其中,再次发送的查询http请求中包括发送模块发送的目标用户令牌。
第四方面,本申请提供一种数据库查询装置,应用于请求侧,该装置包括:发送模块;发送模块,用于向接口侧发送查询超文本传输协议http请求,查询http请求用于请求从目标数据库中获得目标数据,查询http请求中包括SQL校验字段、认证标记字段和SQL语句字段;其中,SQL校验字段用于接口侧与目标数据库中的签名字段进行校验,并在SQL校验字段校验成功的情况下,基于认证标记字段和SQL语句字段,从目标数据库中查询目标数据。
第五方面,本申请提供了一种数据库查询装置,该装置包括:处理器和通信接口;通信接口和处理器耦合,处理器用于运行计算机程序或指令,以实现如第一方面和第一方面的任一种可能的实现方式中所描述的数据库查询方法,或者实现如第二方面和第二方面的任一种可能的实现方式中所描述的数据库查询方法。
第六方面,本申请提供了一种计算机可读存储介质,计算机可读存储介质中存储有指令,当指令在终端上运行时,使得终端执行如第一方面和第一方面的任一种可能的实现方式中描述的数据库查询方法,或者执行如第二方面和第二方面的任一种可能的实现方式中描述的数据库查询方法。
第七方面,本申请实施例提供一种包含指令的计算机程序产品,当计算机程序产品在数据库查询装置上运行时,使得数据库查询装置执行如第一方面和第一方面的任一种可能的实现方式中所描述的数据库查询方法,或者执行如第二方面和第二方面的任一种可能的实现方式中所描述的数据库查询方法。
第八方面,本申请实施例提供一种芯片,芯片包括处理器和通信接口,通信接口和处理器耦合,处理器用于运行计算机程序或指令,以实现如第一方面和第一方面的任一种可能的实现方式中所描述的数据库查询方法,或者实现如第二方面和第二方面的任一种可能的实现方式中所描述的数据库查询方法。
具体的,本申请实施例中提供的芯片还包括存储器,用于存储计算机程序或指令。
附图说明
图1为本申请实施例提供的一种数据库查询方法的流程图之一;
图2为本申请实施例提供的一种数据库查询方法的流程图之二;
图3为本申请实施例提供的一种数据库查询方法的流程图之三;
图4为本申请实施例提供的另一种数据库查询方法的流程图之一;
图5为本申请实施例提供的另一种数据库查询方法的流程图之二;
图6为本申请实施例提供的一种数据库查询方法的流程图之四;
图7为本申请实施例提供的一种数据库查询装置的系统示意图;
图8为本申请实施例提供的一种数据库查询装置的结构示意图;
图9为本申请实施例提供的另一种数据库查询装置的结构示意图;
图10为本申请实施例提供的又一种数据库查询装置的结构示意图;
图11为本申请实施例提供的又一种数据库查询装置的结构示意图;
图12为本申请实施例提供的一种芯片的结构示意图。
具体实施方式
下面结合附图对本申请实施例提供的数据库查询方法、装置及存储介质进行详细地描述。
本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。
本申请的说明书以及附图中的术语“第一”和“第二”等是用于区别不同的对象,或者用于区别对同一对象的不同处理,而不是用于描述对象的特定顺序。
此外,本申请的描述中所提到的术语“包括”和“具有”以及它们的任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括其他没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
需要说明的是,本申请实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本申请实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
在本申请的描述中,除非另有说明,“多个”的含义是指两个或两个以上。
在数字化转型浪潮中,企业越来越重视生产环节、业务效能等方面的各类数据,往往通过对各类数据的归纳、处理得到的关键指标,然后通过可视化大屏的形式呈现出来,以支撑问题挖掘、流程改进、成绩总结等。
具体地,当前各类可视化大屏产品层出不穷,其基本逻辑都是查询后台数据,然后在前端进行图表渲染和呈现。现有数据接口实现技术可以分为两种:1、特定查询接口方式,单个接口实现单个查询功能,利用现有接口框架来保证接口安全,但通过模板调用、代码生成等方法减轻后端接口开发工作量;2、通用查询接口方式,单个接口实现通用查询功能,可以直接接收查询SQL语句,返回查询结果,接口安全则通过令牌、签名等机制来保证。
其中,特定查询接口开发方式需要对单个接口进行后端开发或配置,在目前大屏数据越加繁多和复杂的情况下,接口开发和接口维护都是繁重任务,同时,前端的每个数据需求新增或变化,都要后端相应处理,这将大大影响可视化大屏的开发效率。而通用查询接口开发方式,其接口可以直接接收并处理SQL查询语句,前端数据查询新增或调整只需要修改请求的SQL语句,无需后端开发,但这种方式并不能保证数据接口安全问题。
为了解决现有技术中,数据查询时数据接口安全较低,且数据查询时的开发量较大的问题,本申请提供了一种数据库查询方法,可以在接收到查询http请求之后,基于查询http请求中的SQL校验字段和目标数据库中的签名字段进行校验,并在校验成功的情况下,基于查询http请求中的认证标记字段和SQL语句字段,从目标数据库中查询目标数据。因此,一方面,可以通过SQL校验字段和认证标记字段,限制数据接口的许可用户,在保证数据接口的安全性;另一方面,可以从查询http请求中快速获取SQL语句字段,并直接在目标数据库中进行查询,降低了数据查询时的开发量。如此,本申请实施例提供的数据库查询方法可以在保证数据接口安全性的情况下,降低数据查询时的开发量。
本申请数据库查询方法应用于通过可视化大屏类产品查询后台数据,在前端进行图表渲染和呈现的场景。
如图1所示,为本申请实施例提供的数据库查询方法的流程图,应用于接口侧,该方法包括以下步骤S101至步骤S103:
S101、接口侧接收请求侧发送的查询http请求。
其中,查询http请求用于请求从目标数据库中获得目标数据,查询http请求中包括SQL校验字段、认证标记字段和SQL语句字段。
可选地,http请求可以包括统一资源定位符(Uniform Resource Locator,URL)信息、请求参数和请求头。
本申请实施例中,接口侧可以根据URL信息,判断上述http请求的请求类型。
示例性地,接口侧接收请求侧发送的http请求之后,可以获取http请求中的URL信息、请求参数和请求头。然后可以在该http请求中的URL信息为查询URL信息的情况下,将http请求判断为查询http请求;在该http请求中的URL信息为登录URL信息的情况下,将http请求判断为登录http请求。
可选地,上述查询http请求可以为请求侧请求查询目标数据库中的数据的请求。
本申请实施例中,上述目标数据库可以为按照数据结构来组织、存储和管理数据的数据包,包含所需查询的所有数据。
可选地,上述目标数据库可以为查询http请求中的URL信息所指向的数据库。
本申请实施例中,目标数据可以为所需查询的数据。
示例性地,从目标数据库中获得目标数据可以为:从生产量数据库中获得日生产量数据。
本申请实施例中,不同的查询URL信息可以指向不同的数据库。
可选地,接口侧可以配置多个查询URL信息,分别指向不同的数据库,以便后续可以直接执行相应的SQL语句查询,降低数据查询时的开发量。
需要说明的是,SQL语句为结构化查询语言,结构化查询语言是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。其中,SQL语言就是对数据库进行操作的一种语言。
可选地,上述SQL语句字段,可以用于定义查询http请求的原始SQL语句,以在目标数据库中查询目标数据。
可选地,认证标记字段可以用于定义查询http请求的许可用户信息,认证标记字段可以包含校验码。
S102、接口侧基于SQL校验字段和目标数据库中的签名字段进行校验。
可选地,上述SQL校验字段,可以用于定义SQL语句字段中的SQL语句对应的校验码。
本申请实施例中,上述校验码可以基于SQL语句字段,结合自定义密钥和散列算法生成。
可选地,结合图1,如图2所示,上述步骤S102可以包括下述的步骤S102a至步骤S102c2。
S102a、接口侧将SQL校验字段和目标数据库中的一个签名字段进行匹配。
可选地,接口侧可以对查询http请求中的SQL校验字段和目标数据库中的签名字段进行匹配,以实现查询http请求的防篡改。
S102b、接口侧判断SQL校验字段与目标数据库中的一个签名字段是否相匹配。
S102c1、接口侧在SQL校验字段与目标数据库中的一个签名字段相匹配的情况下,确定SQL校验字段校验成功。
可以理解,SQL校验字段校验成功可以说明该查询http请求为合理请求,没有构造越权。
S102c2、接口侧在SQL校验字段与目标数据库中的所有签名字段均不匹配的情况下,确定SQL校验字段校验失败。
可以理解,SQL校验字段校验失败可以说明该查询http请求可能存在构造越权风险。
如此,通过判断SQL校验字段与目标数据库中的一个签名字段是否相匹配的强制请求校验的方式,将查询http请求中的SQL校验字段进行单独校验,可以实现接口请求防篡改,从而有效避免请求构造越权风险。
S103、接口侧在SQL校验字段校验成功的情况下,基于认证标记字段和SQL语句字段,从目标数据库中查询目标数据。
可选地,接口侧可以在认证标记字段认证成功的情况下,对目标数据库执行SQL语句字段中的SQL语句,从目标数据库中查询目标数据。
本申请实施例提供一种数据库查询方法,可以在接收到查询http请求之后,基于查询http请求中的SQL校验字段和目标数据库中的签名字段进行校验,并在校验成功的情况下,基于查询http请求中的认证标记字段和SQL语句字段,从目标数据库中查询目标数据。因此,一方面,可以通过SQL校验字段和认证标记字段,限制数据接口的许可用户,在保证数据接口的安全性;另一方面,可以从查询http请求中快速获取SQL语句字段,并直接在目标数据库中进行查询,降低了数据查询时的开发量。如此,本申请实施例提供的数据库查询方法可以在保证数据接口安全性的情况下,降低数据查询时的开发量。
可选地,结合图1,如图3所示,上述步骤S103可以包括下述的步骤S103a和步骤S103b2。
S103a、接口侧在SQL校验字段校验成功的情况下,判断认证标记字段是否指示免认证。
S103b1、接口侧在认证标记字段指示免认证的情况下,根据SQL语句字段,从目标数据库中查询目标数据。
本申请实施例中,若认证标记字段指示免认证,则接口侧可以直接对目标数据库执行SQL语句字段中的SQL语句,从目标数据库中查询目标数据。
S103b2、接口侧在认证标记字段指示非免认证的情况下,若查询http请求的请求头信息不满足第一条件,则认证成功,并根据SQL语句字段,从目标数据库中查询目标数据。
其中,第一条件包括以下至少之一:请求头信息未携带用户令牌、用户令牌为非法令牌、用户令牌包含的用户信息与认证标记字段对应的许可用户不匹配。
本申请实施例中,若认证标记字段指示非免认证,则接口侧可以检查查询http请求中的请求头的用户令牌。
可选地,接口侧可以在请求头信息未携带用户令牌、用户令牌为非法令牌、用户令牌包含的用户信息与认证标记字段对应的许可用户不匹配的情况下,判断认证失败,并将认证失败的结果返回值请求侧。
可选地,接口侧可以在请求头信息携带用户令牌,且该用户令牌为合法令牌,且该用户令牌包含的用户信息与认证标记字段对应的许可用户相匹配的情况下,判断认证成功,并对目标数据库执行SQL语句字段中的SQL语句,从目标数据库中查询目标数据。
如此,可以通过对查询http请求进行身份认证,在通过认证或免认证的情况下,根据SQL语句字段,从目标数据库中查询目标数据,因此可以提高数据接口的安全性。
可选地,本申请实施例提供的数据库查询方法还可以包括下述的步骤S201至步骤S205。
S201、接口侧在认证标记字段指示非免认证的情况下,若查询http请求的请求头信息满足第一条件,则认证失败,并向请求侧发送认证失败的指示信息。
可选地,接口侧可以在请求头信息未携带用户令牌、用户令牌为非法令牌、用户令牌包含的用户信息与认证标记字段对应的许可用户不匹配的情况下,判断认证失败,并将认证失败的结果返回值请求侧。
S202、接口侧接收请求侧发送的登录http请求。
其中,登录http请求用于请求访问目标数据库,登录http请求中包括目标用户信息字段。
本申请实施例中,在请求侧接收到接口侧发送的认证失败的指示信息之后,可以向接口侧发送登录http请求。
可选地,上述登录http请求可以为请求侧接收到接口侧发送的认证失败的指示信息之后,自动触发发送的,也可以为请求侧主动发送的。
S203、接口侧将目标用户信息字段与目标数据库中的用户信息字段进行匹配。
可选地,用户信息字段可以包括用户名字段和用户密码字段。
S204、接口侧在目标用户信息字段匹配成功的情况下,生成并向请求侧发送目标用户令牌。
本申请实施例中,“目标用户信息字段匹配成功”可以理解为:目标用户的用户名与用户密码,与目标数据库的用户列表的用户名与用户密码相匹配。也就是说,目标用户为目标数据库的用户列表中的许可用户。
可选地,用户令牌可以基于Json Web Token(JWT)规范生成,可以包含用户信息(用户名)、过期时间等关键信息。
可选地,目标用户令牌可以用于查询http请求中的身份认证,以从目标数据库中获取目标数据。
S205、接口侧接收请求侧再次发送的查询http请求,以请求从目标数据库中获得目标数据。
其中,再次发送的查询http请求中包括目标用户令牌。
可选地,请求侧在接收到接口侧发送的目标用户令牌写入请求头中,然后通过写入目标用户令牌的请求头,再次向接口侧发送查询http请求,以请求从目标数据库中获得目标数据。
需要说明的是,在执行上述步骤S205之后,即接收到请求侧再次发送的查询http请求后,接口侧可以继续执行上述步骤S101至步骤S104中的所有步骤,以达到从目标数据库中获得目标数据的目的。
如此,在需要身份认证时,可以采用用户令牌机制,实现用户身份认证和请求时效控制,提高数据接口的安全性。并且可以在身份认证不通过时,通过对请求侧发送的登录http请求中的用户信息字段进行匹配,在相匹配的情况下生成相应的用户令牌,限制仅许可用户可以从目标数据库中获得目标数据,保证了数据接口的安全性。
可选地,查询http请求中还可以包括替换变量字段。在上述步骤S103之后,本申请实施例还包括下述的步骤S104和步骤S105。
S104、接口侧基于替换变量字段,对SQL语句字段进行变量替换,得到目标SQL语句字段;
可选地,若查询http请求中还包括了替换变量字段,可以根据替换变量字段内容对SQL语句字段中的SQL语句进行变量替换,得到目标SQL语句字段。
本申请实施例中,若查询http请求中不包括替换变量字段,则可以直接将SQL语句字段中的SQL语句,确定为目标SQL语句。
S105、接口侧基于目标SQL语句字段,从目标数据库中查询目标数据。
本申请实施例中,接口侧可以在认证标记字段认证成功的情况下,对目标数据库执行目标SQL语句字段,从目标数据库中查询目标数据。
如此,可以通过替换变量字段,对SQL语句字段进行变量替换,而无需重新对SQL语句字段进行编译,降低了查询请求的实现代码量,从而降低了数据查询时的开发量。
如图4所示,为本申请实施例提供的数据库查询方法的流程图,应用于请求侧,该方法包括以下步骤S301:
S301、请求侧向接口侧发送查询http请求。
其中,查询http请求用于请求从目标数据库中获得目标数据,查询http请求中包括SQL校验字段、认证标记字段和SQL语句字段。
本申请实施例中,SQL校验字段用于接口侧与目标数据库中的签名字段进行校验,并在SQL校验字段校验成功的情况下,基于认证标记字段和SQL语句字段,从目标数据库中查询目标数据。
可选地,上述查询http请求可以包括URL信息、请求参数和请求头。其中请求参数可以包括SQL校验字段、认证标记字段和SQL语句字段。
对于请求侧发送查询http请求详细描述,可以参见上述对接口侧接收查询http请求的相关描述,此处不予赘述。
本申请提供的一种数据库查询方法,可以在接收到查询http请求之后,基于查询http请求中的SQL校验字段和目标数据库中的签名字段进行校验,并在校验成功的情况下,基于查询http请求中的认证标记字段和SQL语句字段,从目标数据库中查询目标数据。因此,一方面,可以通过SQL校验字段和认证标记字段,限制数据接口的许可用户,在保证数据接口的安全性;另一方面,可以从查询http请求中快速获取SQL语句字段,并直接在目标数据库中进行查询,降低了数据查询时的开发量。如此,本申请实施例提供的数据库查询方法可以在保证数据接口安全性的情况下,降低数据查询时的开发量。
可选地,结合图4,如图5所示,在上述步骤S301之后,本申请实施例提供的数据库查询方法还可以包括下述的步骤S302至步骤S305。
S302、请求侧接收接口侧发送的认证失败的指示信息。
其中,认证失败的指示信息为接口侧在认证标记字段指示非免认证、且查询http请求的请求头信息满足第一条件的情况下发送的。
S303、请求侧向接口侧发送登录http请求。
其中,登录http请求用于请求访问目标数据库,登录http请求中包括目标用户信息字段。
S304、请求侧接收接口侧发送的目标用户令牌。
其中,目标用户令牌为接口侧在目标用户信息字段与目标数据库中的用户信息字段匹配成功的情况下生成并发送的。
S305、请求侧向接口侧再次发送查询http请求,以请求从目标数据库中获得SQL语句。
其中,再次发送的查询http请求中包括目标用户令牌。
其中,第一条件包括以下至少之一:请求头信息未携带用户令牌、用户令牌为非法令牌、用户令牌包含的用户信息与认证标记字段对应的许可用户不匹配。
对于请求侧接收认证失败的指示信息,并再次发起登录http请求的详细描述,可以参见上述对接口侧发送认证失败的指示信息至请求侧的相关描述,此处不予赘述。
如此,在需要身份认证时,可以采用用户令牌机制,实现用户身份认证和请求时效控制,提高数据接口的安全性。并且可以在身份认证不通过时,通过对请求侧发送的登录http请求中的用户信息字段进行匹配,在相匹配的情况下生成相应的用户令牌,限制仅许可用户可以从目标数据库中获得目标数据,保证了数据接口的安全性。
以下以实施例1至实施例3来对本申请实施例提供的数据库查询方法进行示例性说明。
实施例1:如图6所示,该数据库查询方法可以包括下述的步骤S401至步骤S414。
S401、接口侧接收请求侧发送的查询http请求。
S402、接口侧判断SQL校验字段和目标数据库中的一个签名字段是否匹配。
S403、接口侧在SQL校验字段和目标数据库中的一个签名字段匹配成功的情况下,判断认证标记字段是否指示免认证;或者,
接口侧在SQL校验字段和目标数据库中的一个签名字段匹配失败的情况下,结束处理。
S404、接口侧在认证标记字段指示非免认证的情况下,判断查询http请求的请求头信息是否满足第一条件。
S405、接口侧在查询http请求的请求头信息不满足第一条件的情况下,检查是否存在替换变量字段;或者,
接口侧在认证标记字段指示免认证的情况下,直接检查是否存在替换变量字段。
S406、接口侧在存在替换变量字段的情况下,对SQL语句执行替换变量。
S407、接口侧对目标数据库执行SQL语句,得到目标数据;或者,
接口侧在不存在替换变量字段的情况下,直接对目标数据库执行SQL语句,得到目标数据。
S408、接口侧将目标数据返回请求侧。
S409、接口侧在查询http请求的请求头信息满足第一条件的情况下,返回认证失败的指示信息至请求侧。
S410、请求侧发起登录http请求。
S411、接口侧判断目标用户信息字段与目标数据库中的用户信息字段是否匹配。
S412、接口侧在目标用户信息字段与目标数据库中的用户信息字段相匹配的情况下,生成并向请求侧发送用户令牌。
S413、接口侧在向请求侧发送用户令牌之后,再次接收请求侧发送的查询http请求。
S414、接口侧在目标用户信息字段与目标数据库中的用户信息字段不匹配的情况下,返回登录失败的指示信息至请求侧,结束处理。
实施例2:该数据库查询方法可以包括下述的步骤S501至步骤S506。
S501、开发部署任务分发模块。
可选地,上述任务分发模块归属系统后端,实现接口监听和任务分发,作为一种可能的实现方式,后端可启用Web服务器实现接口监听,通过路径映射将不同URL的请求指向不同的处理函数。
S502、开发部署请求校验模块。
可选地,上述请求校验模块归属系统后端,对请求参数中进行字段校验,并对校验通过的请求识别认证标记字段,据此确定转入身份认证还是转入查询处理。
在一种可能的实现方式中,该请求校验模块中的字段校验可采用哈希运算消息认证码(HMAC)来生成,其三个输入参数分别为密钥、散列算法和消息内容。其中,密钥由开发者自定义,散列算法可以选择SHA256,消息内容则根据校验字段而有所区别。
该请求校验模块接收的请求参数包含字段如下:
SQL语句字段,内容为查询请求原始SQL语句;
SQL校验字段,内容为以SQL语句字段作为消息内容生成的校验码;
认证标记字段,内容为许可用户信息,和以许可用户信息加上SQL校验字段作为消息内容生成的校验码,中间以“|”符号分隔;
替换变量字段,内容为查询需要进行变量替换的替换内容作为消息内容生成的校验码,中间以“|”符号分隔;
本模块根据各字段的校验规则,重新生成对应的校验码,与请求参数包含的校验码比对,全部一致则判定校验通过,否则返回校验错误。
校验通过后,本模块检查认证标记字段的许可用户信息,作为一种可能的实现方式,可以用以下规则指定字段对应的许可用户要求:
字符串“0”:表示免认证;
其他:表示许可用户的用户名需匹配的正则表达式。
当本模块识别到认证标记字符串为“0”时,将直接转入查询处理模块,否则将转入身份认证模块。由此,本模块可以实现系统数据接口登录要求的灵活控制,可以完成接口的登录拦截或免认证开放。
可选的,本模块中的字段校验可采用其他生成算法,如HMAC-MD5等,但应保证生成算法包含密钥,而非单纯的消息摘要(如MD5),通过保护密钥来确保系统接口的安全。
S503、开发部署身份认证模块。
该模块归属系统后端,实现登录授权和身份认证。
登录授权功能的处理逻辑如下:本模块将登录请求携带的用户名和密码与数据库用户表比对,不一致则返回登录错误,一致则计算用户令牌并返回。
作为一种可能的实现方式,本模块中的用户令牌可采用JWT机制来生成,其结果包含三段内容:标头(Header)、有效载荷(Payload)和签名(Signature)。其中签名基于表头和有效载荷根据指定算法和密钥生成,本模块可以同样选择HMAC-SHA256算法,另外指定一个密钥完成签名。为实现接口的身份认证功能,有效载荷应包含登录用户名;为实现接口的时效控制功能,有效载荷应指定令牌的到期时间。
身份认证功能的处理逻辑如下:本模块检查请求头是否携带用户令牌,未携带则直接返回认证错误。如请求头携带用户令牌,本模块将利用前述登录授权功能生成令牌所应用的算法和密钥对令牌进行验证,如发现签名非法或令牌超时,则返回认证错误;否则将令牌有效载荷中的登录用户名与请求参数中的认证标记字段的用户名正则表达式进行比对,相符则转入数据查询模块,否则返回认证错误。
本模块可以实现系统数据接口的身份认证功能和时效控制功能,由于采用了正则表达式模式,限定接口授权用户身份的请求参数可以更加简便和灵活。
S504、开发部署查询处理模块。
该模块归属系统后端,实现数据库查询。
本模块先检查请求参数是否包含替换变量字段,替换变量字段的格式为“替换变量字符串|替换内容字符串|校验码”,如请求参数存在该字段,本模块将搜索SQL语句字段的替换变量字符串,将其全部替换为替换内容字符串,得到目标SQL语句,否则直接将SQL语句字段作为目标SQL语句;然后面向数据库执行目标SQL语句,返回查询结果。
本模块将与具体数据库形成对应关系,如系统需要查询多个数据库,应开发部署多个查询处理模块,由任务分发模块根据不同的查询请求URL进行调用。
本模块提供了针对SQL语句的变量替换功能。在大屏场景中,经常会出现多个查询需求,其查询逻辑完全一致,但部分关键参数有所区别的情况,变量替换功能允许基于一条带替换变量的SQL语句,设置不同的变量替换内容,实现多个目标的查询,从而提升接口请求开发效率。
S505、开发部署请求生成模块。
该模块属于开发辅助模块,用于快速生成本系统接口的标准请求参数,无需在线部署。
作为一种可能的实现方式,接口请求参数的生成规则如下:
SQL语句字段,开发人员直接输入的原始SQL语句;
SQL校验字段,基于SQL语句,由本模块根据自定义密钥和散列算法生成,该密钥和算法应与请求校验模块设定的密钥和算法保持一致;该字段可同时识别为本请求的唯一标识,认证标记字段校验源需要加入该字段,保证字段校验码不被其他请求混用;
认证标记字段,开发人员输入0或授权用户名的正则表达式作为字段原始内容,由本模块将原始内容加上SQL校验字段(“|”符号连接)作为校验源,用预设密钥和算法生成校验码,最后形成“认证标记原始内容|校验码”格式的字符串,作为字段内容;
替换变量字段,开发人员输入替换内容列表,格式为“替换变量1|替换内容1;替换变量2|替换内容2”,由本模块用预设密钥和算法根据替换内容生成校验码,最后形成“替换变量1|替换内容1|校验码1;替换变量2|替换内容2|校验码2”格式的字符串,作为字段内容。
认证标记字段校验加入SQL校验字段作为校验源,其必要性在于,缺少SQL校验字段的认证标记字段具备通用性,例如“0|校验码”这样的字符串将可以作为系统任意查询请求的认证标记字段,如果前端从任意一个免登录请求中取得免认证的认证标记字段,将其替换到要求认证的请求参数中,该请求将同样免认证,从而造成数据越权。
S506、开发部署数据请求模块。
该模块属于系统前端,实现数据查询和用户登录。
数据查询功能的实现逻辑如下:开发前端数据页面,面向大屏具体数据需求,配置对应的URL,以及由请求生成模块生成的请求参数;查询时向后端数据接口URL发起携带请求头和请求参数的HTTP请求;当请求返回认证失败时,模块将转向用户登录页面;
用户登录功能的实现逻辑如下:开发用户登录页面,由用户填写登录用户名和密码,向后端请求登录,如登录成功,则将返回的用户令牌存入cookie,后续将携带包含用户令牌的请求头,重新发起数据查询请求。
在大屏数据场景中,本模块往往由公共浏览器实现,环境安全无法保证。因此,本模块自身不包含任何密钥和算法,避免模块被逆向带来数据安全风险。
可选的,本模块的用户令牌存储可以采用其他机制,例如通过浏览器的本地空间来存储。
实施例3:假设在可视化大屏的数据查询的场景下,某企业需求查询业务a的用户数,该大屏分为主屏和副屏。其中,主屏可以进行免登录的数据查询,用于显示业务a在b省的全天用户数;副屏要求登录之后才可以进行数据查询,且用户名为Admin前缀,用于显示业务a在c市和d市的白天用户数和夜晚用户数。该数据库查询方法可以包括下述的步骤S601至步骤S603。
S601、基于数据需求,设计包含替换变量的查询SQL语句。
利用变量替换,目标查询可以归结为以下两条基础查询语句:
SELECT COUNT(*)FROM db_name.table_name WHERE prov=’甲省’;
SELECT COUNT(*)FROM db_name.table_name WHERE city=’${city}’AND time=’${time}’;
其中,${xxx}为本系统定义的变量占位符,用以支持变量识别和替换。
S602、利用本系统的请求生成模块,生成查询对应具体请求参数。
本系统的请求生成模块,需要开发人员根据查询需求定义SQL语句、认证标记、替换变量等字段的原始内容。配置各查询的原始内容如下:
查询1,b省全天用户数:
qryObj={
"sqlcmd":"SELECT COUNT(*)FROM db_name.table_name WHERE prov=’甲省’",
"auth":"0",
}
查询2,c市白天用户数:
以上查询利用了本系统的变量替换功能,其余查询可参照查询2,只需修改replace字段,例如replace字段改为"city|B市;time|night",即可查询d市夜晚用户数。
以上查询利用了本系统的身份认证功能,auth字段定义了授权用户名的正则匹配式。
本系统的请求生成模块,根据以上原始请求内容,可以利用预设密钥和算法,计算得到符合系统接口要求的标准请求参数,以密钥为Abcd1234的HMAC-SHA256算法为例,结果示例如下:
查询1,甲省全天用户数:
查询2,A市白天用户数:
查询3,A市夜晚用户数:
S603、大屏前端增加HTTP请求,指向目标数据库对应的接口URL
大屏前端将请求参数加入前端代码,即可通过向后端接口发起携带标准请求参数的HTTP请求,实现大屏数据查询。
本步骤中,一种可能的情况是,前端在未完成用户登录的情况下发起要求登录的查询请求,本系统接口将返回认证失败错误,此时系统前端将跳转至登录页面,完成登录后再重新发起查询请求。
如图7所示,为本申请实施例提供的一种数据库查询装置的系统示意图,该装置包括:任务分发模块71、请求校验模块72、身份认证模块73、查询处理模块74、请求生成模块75和数据请求模块76。
其中,上述任务分发模块71,监听接口,识别请求URL信息,根据URL信息将请求分发到对应处理模块;该模块在系统后端部署,持续监听接口,对于查询请求URL,将请求分发到关联数据库的请求校验模块72;对于登录请求URL,将请求分发到身份认证模块73。
上述请求校验模块72,校验及识别请求参数,判断是否启用身份认证;该模块在系统后端部署,对请求参数中的SQL语句字段、认证标记字段和替换变量字段分别进行校验,任一校验失败均结束处理;全部校验通过则识别认证标记字段,当认证标记字段设置为要求认证时,转入身份认证模块73,否则转入查询处理模块74。
上述身份认证模块73,接收登录请求返回用户令牌,校验及识别令牌;该模块在系统后端部署,对于登录请求,将请求参数携带的用户名和密码与数据库用户表比对,一致则生成用户令牌并返回;对于认证请求,将对请求头携带的用户令牌进行解析,如令牌合法、在有效期内,则将令牌载荷中的用户信息与认证标记字段的许可用户进行匹配,一致则认证通过,转入查询处理模块74,否则结束处理。
上述查询处理模块74:基于原始SQL语句及替换变量计算目标SQL语句,面向数据库执行SQL语句得到查询结果并返回;该模块在系统后端部署,如请求参数包含替换变量字段,则根据该字段内容对SQL语句字段进行替换处理得到目标SQL语句,否则直接将SQL语句字段作为目标SQL语句;然后面向数据库执行目标SQL语句,返回查询结果。
上述请求生成模块75:根据基本SQL需求,生成符合接口要求的带签名的接口请求参数;该模块属离线开发模块,只在开发期间作为工具调用,无需在线部署。对于新的数据查询需求,开发人员只需编写SQL语句,设定认证标记和替换变量,即可通过该模块生成复核本系统标准的接口请求参数。接口请求参数生成方法如下:SQL语句字段,开发人员根据数据需求编写的原始SQL语句;SQL校验字段,基于SQL语句,由请求生成模块75根据自定义密钥和散列算法生成,同时可识别为本请求的唯一标识,作为其他字段校验的输入;认证标记字段,定义本查询的许可用户信息,同时包含校验码,该校验码由请求生成模块75基于本字段内容和SQL校验字段根据自定义密钥和散列算法生成;替换变量字段,定义本查询需要进行变量替换的替换关系,同时包含校验码,该校验码由请求生成模块75基于本字段替换内容根据自定义密钥和散列算法生成;上述校验涉及的自定义密钥和散列算法与请求校验模块72需保持一致,该参数是保证接口安全的关键参数,本系统中只在离线的请求生成模块75和后端的请求校验模块72保存,避免了前端逆向泄露风险;认证标记字段校验源除了字段本身内容外,同时引入了本请求的SQL校验字段,保证了该校验码只对本请求有效,不会被改用于其他请求,造成越权或注入等风险。
上述数据请求模块76:利用接口请求参数调用数据接口,如返回认证错误,则发起登录请求,将成功登录返回的令牌加入请求头,重新发起查询请求。该模块在系统前端部署,包含数据查询页和用户登录页。数据查询页将写入请求生成模块75生成的接口请求参数,指定URL向后端数据接口发起查询请求;当查询返回认证失败时,模块将调用用户登录页,由用户填写登录用户名和密码,向后端请求登录,如登录成功,则将返回的用户令牌存入缓存,后续将携带包含用户令牌的请求头,重新发起数据查询请求。
本申请实施例可以根据上述方法示例对数据库查询装置进行功能模块或者功能单元的划分,例如,可以对应各个功能划分各个功能模块或者功能单元,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块或者功能单元的形式实现。其中,本申请实施例中对模块或者单元的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
如图8所示,为本申请实施例提供的一种数据库查询装置的结构示意图,应用于接口侧,该装置包括:接收模块81、校验模块82和查询模块83。
其中,接收模块81,用于接收请求侧发送的查询超文本传输协议http请求,查询http请求用于请求从目标数据库中获得目标数据,查询http请求中包括结构化查询语言SQL校验字段、认证标记字段和SQL语句字段;校验模块82,用于接收模块81接收的基于SQL校验字段和目标数据库中的签名字段进行校验;查询模块83,用于在校验模块82对SQL校验字段校验成功的情况下,基于认证标记字段和SQL语句字段,从目标数据库中查询目标数据。
在一种可能的实现方式中,上述校验模块82,具体用于:
将SQL校验字段和目标数据库中的签名字段进行匹配;在SQL校验字段与目标数据库中的一个签名字段相匹配的情况下,确定SQL校验字段校验成功;或者,在SQL校验字段与目标数据库中的所有签名字段均不匹配的情况下,确定SQL校验字段校验失败。
在一种可能的实现方式中,上述查询模块83,具体用于:
在认证标记字段指示免认证的情况下,根据SQL语句字段,从目标数据库中查询目标数据;或者,在认证标记字段指示非免认证的情况下,若查询http请求的请求头信息不满足第一条件,则认证成功,并根据SQL语句字段,从目标数据库中查询目标数据;其中,第一条件包括以下至少之一:请求头信息未携带用户令牌、用户令牌为非法令牌、用户令牌包含的用户信息与认证标记字段对应的许可用户不匹配。
在一种可能的实现方式中,上述装置还包括:发送模块和匹配模块;
上述发送模块,用于在认证标记字段指示非免认证的情况下,若查询http请求的请求头信息满足第一条件,则认证失败,并向请求侧发送认证失败的指示信息;上述接收模块81,还用于接收请求侧发送的登录http请求,登录http请求用于请求访问目标数据库,登录http请求中包括目标用户信息字段;上述匹配模块,用于将目标用户信息字段与目标数据库中的用户信息字段进行匹配;上述发送模块,还用于在目标用户信息字段匹配成功的情况下,生成并向请求侧发送目标用户令牌;上述接收模块81,还用于接收请求侧再次发送的查询http请求,以请求从目标数据库中获得目标数据,其中,再次发送的查询http请求中包括发送模块发送的目标用户令牌。
在一种可能的实现方式中,上述查询http请求中还包括替换变量字段;装置还包括:替换模块;
上述替换模块,用于在所述查询模块83基于认证标记字段和SQL语句字段,从目标数据库中查询目标数据之后,基于替换变量字段,对SQL语句字段进行变量替换,得到目标SQL语句字段;
上述查询模块83,还用于基于目标SQL语句字段,从目标数据库中查询目标数据。
在通过硬件实现时,本申请实施例中的接收模块81和发送模块可以集成在通信接口上,校验模块82、查询模块83和匹配模块可以集成在处理器上。具体实现方式如图10所示。
图10示出了上述实施例中所涉及的数据库查询装置的又一种可能的结构示意图。该数据库查询装置包括:处理器302和通信接口303。处理器302用于对数据库查询装置的动作进行控制管理,例如,执行上述校验模块82、查询模块83和匹配模块执行的步骤,和/或用于执行本文所描述的技术的其它过程。通信接口303用于支持数据库查询装置与其他网络实体的通信,例如,执行上述接收模块81和发送模块执行的步骤。数据库查询装置还可以包括存储器301和总线304,存储器301用于存储数据库查询装置的程序代码和数据。
其中,存储器301可以是数据库查询装置中的存储器等,该存储器可以包括易失性存储器,例如随机存取存储器;该存储器也可以包括非易失性存储器,例如只读存储器,快闪存储器,硬盘或固态硬盘;该存储器还可以包括上述种类的存储器的组合。
上述处理器302可以是实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。该处理器可以是中央处理器,通用处理器,数字信号处理器,专用集成电路,现场可编程门阵列或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。该处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,DSP和微处理器的组合等。
总线304可以是扩展工业标准结构(Extended Industry StandardArchitecture,EISA)总线等。总线304可以分为地址总线、数据总线、控制总线等。为便于表示,图10中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
如图9所示,为本申请实施例提供的一种数据库查询装置的结构示意图,应用于请求侧,该装置包括:发送模块91。
其中,发送模块91,用于向接口侧发送查询超文本传输协议http请求,查询http请求用于请求从目标中获得目标数据,查询http请求中包括结构化查询语言SQL校验字段、认证标记字段和SQL语句字段;
其中,SQL校验字段用于接口侧与目标数据库中的签名字段进行校验,并在SQL校验字段校验成功的情况下,基于认证标记字段和SQL语句字段,从目标数据库中查询目标数据。
在一种可能的实现方式中,上述装置包括:接收模块;
上述接收模块,用于在发送模块91向接口侧发送查询http请求之后,接收接口侧发送的认证失败的指示信息,认证失败的指示信息为接口侧在认证标记字段指示非免认证、且查询http请求的请求头信息满足第一条件的情况下发送的;上述发送模块91,还用于向接口侧发送登录http请求,登录http请求用于请求访问目标数据库,登录http请求中包括目标用户信息字段;上述接收模块,还用于接收接口侧发送的目标用户令牌,目标用户令牌为接口侧在目标用户信息字段与目标数据库中的用户信息字段匹配成功的情况下生成并发送的;上述发送模块91,还用于向接口侧再次发送查询http请求,以请求从目标数据库中获得目标数据,其中,再次发送的查询http请求中包括目标用户令牌;其中,第一条件包括以下至少之一:请求头信息未携带用户令牌、用户令牌为非法令牌、用户令牌包含的用户信息与认证标记字段对应的许可用户不匹配。
在通过硬件实现时,本申请实施例中的接收模块和发送模块91可以集成在通信接口上。具体实现方式如图11所示。
图11示出了上述实施例中所涉及的数据库查询装置的又一种可能的结构示意图。该数据库查询装置包括:处理器402和通信接口403。处理器402用于对数据库查询装置的动作进行控制管理,例如,执行本文所描述的技术的其它过程。通信接口403用于支持数据库查询装置与其他网络实体的通信,例如,执行上述接收模块和发送模块91执行的步骤。数据库查询装置还可以包括存储器401和总线404,存储器401用于存储数据库查询装置的程序代码和数据。
其中,存储器401可以是数据库查询装置中的存储器等,该存储器可以包括易失性存储器,例如随机存取存储器;该存储器也可以包括非易失性存储器,例如只读存储器,快闪存储器,硬盘或固态硬盘;该存储器还可以包括上述种类的存储器的组合。
上述处理器402可以是实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。该处理器可以是中央处理器,通用处理器,数字信号处理器,专用集成电路,现场可编程门阵列或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。该处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,DSP和微处理器的组合等。
总线404可以是扩展工业标准结构(Extended Industry StandardArchitecture,EISA)总线等。总线404可以分为地址总线、数据总线、控制总线等。为便于表示,图11中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
图12是本申请实施例提供的芯片170的结构示意图。芯片170包括一个或两个以上(包括两个)处理器1710和通信接口1730。
可选的,该芯片170还包括存储器1740,存储器1740可以包括只读存储器和随机存取存储器,并向处理器1710提供操作指令和数据。存储器1740的一部分还可以包括非易失性随机存取存储器(non-volatile random access memory,NVRAM)。
在一些实施方式中,存储器1740存储了如下的元素,执行模块或者数据结构,或者他们的子集,或者他们的扩展集。
在本申请实施例中,通过调用存储器1740存储的操作指令(该操作指令可存储在操作系统中),执行相应的操作。
其中,上述处理器1710可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,单元和电路。该处理器可以是中央处理器,通用处理器,数字信号处理器,专用集成电路,现场可编程门阵列或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,单元和电路。所述处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,DSP和微处理器的组合等。
存储器1740可以包括易失性存储器,例如随机存取存储器;该存储器也可以包括非易失性存储器,例如只读存储器,快闪存储器,硬盘或固态硬盘;该存储器还可以包括上述种类的存储器的组合。
总线1720可以是扩展工业标准结构(Extended Industry StandardArchitecture,EISA)总线等。总线1720可以分为地址总线、数据总线、控制总线等。为便于表示,图12中仅用一条线表示,但并不表示仅有一根总线或一种类型的总线。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
本申请实施例提供一种包含指令的计算机程序产品,当该计算机程序产品在计算机上运行时,使得该计算机执行上述方法实施例中的数据库查询方法。
本申请实施例还提供一种计算机可读存储介质,计算机可读存储介质中存储有指令,当该指令在计算机上运行时,使得该计算机执行上述方法实施例所示的方法流程中的数据库查询方法。
其中,计算机可读存储介质,例如可以是但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(Random Access Memory,RAM)、只读存储器(Read-Only Memory,ROM)、可擦式可编程只读存储器(Erasable Programmable Read Only Memory,EPROM)、寄存器、硬盘、光纤、便携式紧凑磁盘只读存储器(Compact Disc Read-Only Memory,CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合、或者本领域熟知的任何其它形式的计算机可读存储介质。一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于特定用途集成电路(Application Specific Integrated Circuit,ASIC)中。在本申请实施例中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
本发明的实施例提供一种包含指令的计算机程序产品,当指令在计算机上运行时,使得计算机执行如上述的应用于接口侧的数据库查询方法,或者应用于请求侧的数据库查询方法。
由于本发明的实施例中的数据库查询装置、计算机可读存储介质、计算机程序产品可以应用于上述方法,因此,其所能获得的技术效果也可参考上述方法实施例,本发明实施例在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、设备和方法,可以通过其它的方式实现。例如,以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
以上,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何在本申请揭露的技术范围内的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应该以权利要求的保护范围为准。
Claims (12)
1.一种数据库查询方法,其特征在于,应用于接口侧,所述方法包括:
接收请求侧发送的查询超文本传输协议http请求,所述查询http请求用于请求从目标数据库中获得目标数据,所述查询http请求中包括结构化查询语言SQL校验字段、认证标记字段和SQL语句字段;
基于所述SQL校验字段和目标数据库中的签名字段进行校验;
在所述SQL校验字段校验成功的情况下,基于所述认证标记字段和所述SQL语句字段,从所述目标数据库中查询所述目标数据。
2.根据权利要求1所述的方法,其特征在于,所述基于所述SQL校验字段和目标数据库中的签名字段进行校验,包括:
将所述SQL校验字段和所述目标数据库中的签名字段进行匹配;
在所述SQL校验字段与所述目标数据库中的一个签名字段相匹配的情况下,确定所述SQL校验字段校验成功;或者,
在所述SQL校验字段与所述目标数据库中的所有签名字段均不匹配的情况下,确定所述SQL校验字段校验失败。
3.根据权利要求1或2所述的方法,其特征在于,所述基于所述认证标记字段和所述SQL语句字段,从所述目标数据库中查询所述目标数据,包括:
在所述认证标记字段指示免认证的情况下,根据所述SQL语句字段,从所述目标数据库中查询所述目标数据;
或者,
在所述认证标记字段指示非免认证的情况下,若所述查询http请求的请求头信息不满足第一条件,则认证成功,并根据所述SQL语句字段,从所述目标数据库中查询所述目标数据;
其中,所述第一条件包括以下至少之一:所述请求头信息未携带用户令牌、所述用户令牌为非法令牌、所述用户令牌包含的用户信息与所述认证标记字段对应的许可用户不匹配。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
在所述认证标记字段指示非免认证的情况下,若所述查询http请求的请求头信息满足所述第一条件,则认证失败,并向所述请求侧发送认证失败的指示信息;
接收所述请求侧发送的登录http请求,所述登录http请求用于请求访问所述目标数据库,所述登录http请求中包括目标用户信息字段;
将所述目标用户信息字段与所述目标数据库中的用户信息字段进行匹配;
在所述目标用户信息字段匹配成功的情况下,生成并向所述请求侧发送目标用户令牌;
接收所述请求侧再次发送的查询http请求,以请求从目标数据库中获得目标数据,其中,再次发送的所述查询http请求中包括所述目标用户令牌。
5.根据权利要求1所述的方法,其特征在于,所述查询http请求中还包括替换变量字段,所述基于所述认证标记字段和所述SQL语句字段,从所述目标数据库中查询所述目标数据之后,所述方法还包括:
基于所述替换变量字段,对所述SQL语句字段进行变量替换,得到目标SQL语句字段;
基于所述目标SQL语句字段,从所述目标数据库中查询所述目标数据。
6.一种数据库查询方法,其特征在于,应用于请求侧,所述方法包括:
向接口侧发送查询超文本传输协议http请求,所述查询http请求用于请求从目标数据库中获得目标数据,所述查询http请求中包括结构化查询语言SQL校验字段、认证标记字段和SQL语句字段;
其中,所述SQL校验字段用于所述接口侧与目标数据库中的签名字段进行校验,并在所述SQL校验字段校验成功的情况下,基于所述认证标记字段和所述SQL语句字段,从所述目标数据库中查询所述目标数据。
7.根据权利要求6所述的方法,其特征在于,所述向接口侧发送查询http请求之后,所述方法还包括:
接收所述接口侧发送的认证失败的指示信息,所述认证失败的指示信息为所述接口侧在所述认证标记字段指示非免认证、且所述查询http请求的请求头信息满足所述第一条件的情况下发送的;
向所述接口侧发送登录http请求,所述登录http请求用于请求访问所述目标数据库,所述登录http请求中包括目标用户信息字段;
接收所述接口侧发送的目标用户令牌,所述目标用户令牌为所述接口侧在所述目标用户信息字段与所述目标数据库中的用户信息字段匹配成功的情况下生成并发送的;
向所述接口侧再次发送查询http请求,以请求从所述目标数据库中获得所述目标数据,其中,再次发送的所述查询http请求中包括所述目标用户令牌;
其中,所述第一条件包括以下至少之一:所述请求头信息未携带用户令牌、所述用户令牌为非法令牌、所述用户令牌包含的用户信息与所述认证标记字段对应的许可用户不匹配。
8.一种数据库查询装置,其特征在于,应用于接口侧,所述装置包括:接收模块、校验模块和查询模块;
所述接收模块,用于接收请求侧发送的查询超文本传输协议http请求,所述查询http请求用于请求从目标数据库中获得目标数据,所述查询http请求中包括结构化查询语言SQL校验字段、认证标记字段和SQL语句字段;
所述校验模块,用于所述接收模块接收的基于所述SQL校验字段和目标数据库中的签名字段进行校验;
所述查询模块,用于在所述校验模块对所述SQL校验字段校验成功的情况下,基于所述认证标记字段和所述SQL语句字段,从所述目标数据库中查询所述目标数据。
9.根据权利要求8所述的装置,其特征在于,所述装置还包括:发送模块和匹配模块;
所述发送模块,用于在所述认证标记字段指示非免认证的情况下,若所述查询http请求的请求头信息满足所述第一条件,则认证失败,并向所述请求侧发送认证失败的指示信息;
所述接收模块,还用于接收所述请求侧发送的登录http请求,所述登录http请求用于请求访问所述目标数据库,所述登录http请求中包括目标用户信息字段;
所述匹配模块,用于将所述目标用户信息字段与所述目标数据库中的用户信息字段进行匹配;
所述发送模块,还用于在所述目标用户信息字段匹配成功的情况下,生成并向所述请求侧发送目标用户令牌;
所述接收模块,还用于接收所述请求侧再次发送的查询http请求,以请求从目标数据库中获得目标数据,其中,再次发送的所述查询http请求中包括所述发送模块发送的所述目标用户令牌。
10.一种数据库查询装置,其特征在于,应用于请求侧,所述装置包括:发送模块;
所述发送模块,用于向接口侧发送查询超文本传输协议http请求,所述查询http请求用于请求从目标中获得目标数据,所述查询http请求中包括结构化查询语言SQL校验字段、认证标记字段和SQL语句字段;
其中,所述SQL校验字段用于所述接口侧与目标数据库中的签名字段进行校验,并在所述SQL校验字段校验成功的情况下,基于所述认证标记字段和所述SQL语句字段,从所述目标数据库中查询所述目标数据。
11.一种数据库查询装置,其特征在于,包括:处理器和通信接口;所述通信接口和所述处理器耦合,所述处理器用于运行计算机程序或指令,以实现如权利要求1-7任一项中所述的数据库查询方法。
12.一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,其特征在于,当计算机执行该指令时,该计算机执行上述权利要求1-7任一项中所述的数据库查询方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310651637.6A CN116881275A (zh) | 2023-06-02 | 2023-06-02 | 数据库查询方法、装置及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310651637.6A CN116881275A (zh) | 2023-06-02 | 2023-06-02 | 数据库查询方法、装置及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116881275A true CN116881275A (zh) | 2023-10-13 |
Family
ID=88261146
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310651637.6A Pending CN116881275A (zh) | 2023-06-02 | 2023-06-02 | 数据库查询方法、装置及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116881275A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117331964A (zh) * | 2023-12-01 | 2024-01-02 | 成都明途科技有限公司 | 数据查询方法、装置、设备及存储介质 |
-
2023
- 2023-06-02 CN CN202310651637.6A patent/CN116881275A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117331964A (zh) * | 2023-12-01 | 2024-01-02 | 成都明途科技有限公司 | 数据查询方法、装置、设备及存储介质 |
CN117331964B (zh) * | 2023-12-01 | 2024-02-27 | 成都明途科技有限公司 | 数据查询方法、装置、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110495132B (zh) | 用于在分布式网络节点内生成、上传和执行代码区块的系统和方法 | |
US10853064B2 (en) | System and method for ensuring correct execution of software | |
CN109981679B (zh) | 在区块链网络中执行事务的方法和装置 | |
US10735429B2 (en) | Controlling user creation of data resources on a data processing platform | |
CA3087858C (en) | Authentication and authorization using tokens with action identification | |
JP4625334B2 (ja) | 情報処理装置、情報処理方法、情報処理プログラム及び記録媒体、並びに資源管理装置 | |
US20180198629A1 (en) | Verified boot and key rotation | |
CN111600899A (zh) | 微服务访问控制方法、装置、电子设备及存储介质 | |
US20060116966A1 (en) | Methods and systems for verifying protectable content | |
CN108334595B (zh) | 数据共享方法及装置 | |
CA2951914C (en) | Restricted code signing | |
CN110535807B (zh) | 一种业务鉴权方法、装置和介质 | |
CN115769241A (zh) | 针对经许可的区块链的隐私保护架构 | |
EP3744071B1 (en) | Data isolation in distributed hash chains | |
CN110708335A (zh) | 访问认证方法、装置及终端设备 | |
CN110597908A (zh) | 一种基于区块链的征信记录方法、设备及存储介质 | |
CN116881275A (zh) | 数据库查询方法、装置及存储介质 | |
US20070100854A1 (en) | Method of providing a validatable data structure | |
CN112948866A (zh) | 一种数据处理方法、装置、设备及可读存储介质 | |
CN116049300A (zh) | 可视化图表展示方法、系统及电子设备 | |
CN112016118A (zh) | 匿名数据库评级更新 | |
US20230015246A1 (en) | Method and system for facilitating identity and access management in a cloud environment | |
US11611442B1 (en) | Systems and applications for semi-anonymous communication tagging | |
EP3143749B1 (en) | Restricted code signing | |
US20240046258A1 (en) | Group payment accounts |
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 |