CN114969096A - 报文解析方法、装置、电子设备和存储介质 - Google Patents
报文解析方法、装置、电子设备和存储介质 Download PDFInfo
- Publication number
- CN114969096A CN114969096A CN202210686223.2A CN202210686223A CN114969096A CN 114969096 A CN114969096 A CN 114969096A CN 202210686223 A CN202210686223 A CN 202210686223A CN 114969096 A CN114969096 A CN 114969096A
- Authority
- CN
- China
- Prior art keywords
- field
- request message
- message
- database
- opengauss
- 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
- 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/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- 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/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供报文解析方法、装置、电子设备和存储介质。该方法包括:获取请求报文;根据OpenGauss数据库的报文特征,判断所述请求报文是否为针对OpenGauss数据库的请求报文;在所述请求报文为针对OpenGauss数据库的请求报文的情况下,根据OpenGauss数据库的报文解析规则对所述请求报文进行解析。因此能够利用该方法对OpenGauss数据库的请求报文进行解析,从而解决现有技术中的问题。
Description
技术领域
本申请涉及信息处理技术领域,具体而言,涉及报文解析方法、装置、电子设备和存储介质。
背景技术
OpenGauss作为一款开源的关系型数据库,由于其具有安全性、开放性、可用性等方面的优势,受到了越来越多的关注。然而,与MySQL、Oracle等通用数据库相比,目前缺少针对OpenGauss数据库中的请求报文进行解析的解决方案。
发明内容
本申请实施例的目的在于提供报文解析方法、装置、电子设备和存储介质,用于解决现有技术中的问题。
本申请实施例第一方面提供了一种报文解析方法,所述方法包括:
获取请求报文;
根据OpenGauss数据库的报文特征,判断所述请求报文是否为针对OpenGauss数据库的请求报文;
在所述请求报文为针对OpenGauss数据库的请求报文的情况下,根据OpenGauss数据库的报文解析规则对所述请求报文进行解析。
于一实施例中,根据OpenGauss数据库的报文解析规则对所述请求报文进行解析,具体包括:
通过对所述请求报文的层层剥离解析,获取所述请求报文的应用层数据;
根据所述应用层数据中指定字节的字节数据,确定所述请求报文的报文类型;
根据OpenGauss数据库中,与所述报文类型对应的报文解析规则对所述请求报文进行解析。
于一实施例中,根据所述应用层数据中指定字节的字节数据,确定所述请求报文的报文类型,具体包括:
根据所述应用层数据中第一个字节的字节数据,确定所述请求报文的报文类型。
于一实施例中,所述请求报文的报文类型具体包括SQL请求包;所述请求报文由多个字段组成,其中,各个字段分别包括标志位属性值;以及,
根据OpenGauss数据库中,与所述报文类型对应的报文解析规则对所述请求报文进行解析,具体包括:
分别针对组成所述请求报文的各个字段,根据所述字段的标志位属性值确定所述字段的字段类型;
根据所述字段类型所对应的预设字段解析流程,对所述字段进行解析。
于一实施例中,各个字段分别还包括参数长度属性值和参数属性值;所述字段类型具体包括:Bind字段、Parse字段、Describe字段、Execute字段或Sync字段;以及,
根据所述字段类型对应的字段解析流程,对所述字段进行解析,具体包括以下任意一种或多种:
在所述字段的字段类型具体为Parse字段的情况下,根据所述字段的参数长度属性值的指示,获取所述字段的参数属性值,并对所述参数属性值进行SQL语句的提取;
在所述字段的字段类型具体为Bind字段、Describe字段或Execute字段的情况下,不对所述字段的参数属性值进行SQL语句的提取;
在所述字段的字段类型具体为Sync字段的情况下,结束对所述请求报文进行解析。
于一实施例中,所述请求报文的报文类型具体还包括login请求包和logout请求包。
于一实施例中,根据OpenGauss数据库的报文特征,判断所述请求报文是否为针对OpenGauss数据库的请求报文,具体包括:
判断所述请求报文第一个字节的字节数据,是否符合OpenGauss数据库的报文特征;
若符合,则所述请求报文为针对OpenGauss数据库的请求报文;或,
若不符合,则所述请求报文不为针对OpenGauss数据库的请求报文。
本申请实施例第二方面提供了一种报文解析装置,包括:
获取单元,获取请求报文;
判断单元,根据OpenGauss数据库的报文特征,判断所述请求报文是否为针对OpenGauss数据库的请求报文;
解析单元,在所述请求报文为针对OpenGauss数据库的请求报文的情况下,根据OpenGauss数据库的报文解析规则对所述请求报文进行解析。
本申请实施例第三方面提供了一种电子设备,包括:
处理器;
用于存储处理器可执行指令的存储器;其中,所述处理器被配置为执行本申请实施例第一方面任意一项所述的方法。
本申请实施例第四方面提供了一种存储介质,所述存储介质存储有计算机程序,所述计算机程序可由处理器执行以完成本申请实施例第一方面任意一项所述的方法。
采用本申请实施例所提供的报文解析方法,获取请求报文之后,根据OpenGauss数据库的报文特征,判断该请求报文是否为针对OpenGauss数据库的请求报文,然后在该请求报文为针对OpenGauss数据库的请求报文的情况下,根据OpenGauss数据库的报文解析规则对该请求报文进行解析,因此能够利用该方法对OpenGauss数据库的请求报文进行解析,从而解决现有技术中的问题。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本申请一实施例提供的报文解析方法的具体流程示意图;
图2为本申请一实施例提供的客户端可服务器的交互示意图;
图3为本申请一实施例提供的,具体应用场景下报文解析方法的具体流程示意图;
图4为本申请一实施例提供的报文解析装置的具体结构示意图;
图5为本申请一实施例提供的电子设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。在本申请的描述中,诸如“第一”、“第二”、“第三”等术语仅用于区分描述,而不能理解为指示或暗示相对重要性或先后顺序。
随着网络安全等级保护2.0标准的出台和落实,数据库作为数据的存储载体,其安全性愈发的受到重视。为确保数据库的安全,通常会引入数据库审计***。数据库审计***可以记录用户对数据库的操作,监控风险操作,实时告警,并生成有效的审计报告,以便于管理员对数据库操作的安全性进行审查,在出错时进行事故溯源。而数据库审计的前提是能对数据库的服务器和客户端之间的请求报文进行解析,通过解析从请求报文中提取出有效信息,如SQL语句、数据库的用户名等,然后才能基于请求报文中所提取出的有效信息进行审计。
OpenGauss作为一款开源的关系型数据库,由于其具有安全性、开放性、可用性等方面的优势,受到了越来越多的关注。然而,与MySQL、Oracle等通用数据库相比,目前缺少针对OpenGauss数据库中的请求报文进行解析的解决方案,可能会对OpenGauss数据库的审计造成影响。
基于此,本申请实施例提供一种报文解析方法,能够用于解决对OpenGauss数据库中的报文进行解析。如图1所示为该方法的具体流程示意图,该方法包括如下步骤:
步骤S11:获取请求报文。
在实际应用中,OpenGauss数据库通常包括服务器和多个客户端,服务器分别与各个客户端之间连接,从而能够实现服务器与客户端之间的通信。因此,客户端可以向服务器发送请求报文,从而请求进行登录、登出、数据查询等,当然服务器也可以向客户端发送请求报文,从而对客户端的登录、登出、数据查询等进行响应。
因此,该获取请求报文可以为服务器获取客户端所发送的请求报文,也可以是客户端获取服务器所发送的请求报文。在实际应用中,还可以在客户端和服务器之间进一步设置代理服务器,这样客户端和服务器之间通过该代理服务器进行连接,此时代理服务器可以获取客户端所发送的请求报文,然后将该请求报文向服务器进行转发,代理服务器也可以获取服务器所发送的请求报文,然后将该请求报文向客户端进行转发。
对于代理服务器具体的设置方式,比如可以设置于OpenGauss数据库的服务器中或服务器集群的某个节点,也可以设置于云端等,因此能够通过在客户端可服务器之间设置该代理服务器,避免两者之间的直接通信,从而提高数据的安全性,并且在该代理服务器具体为虚拟代理服务器(比如设置于云端的代理服务器)的情况下,还可以降低设备投入成本。
于一实施例中,如图2所示,代理服务器设置于OpenGauss数据库的服务器,该服务器通过代理服务器连接多个客户端。此时,各个客户端分别可以向代理服务器发送请求报文,该步骤S11可以具体为代理服务器获取客户端所发送的请求报文;另外,在客户端数量较多的情况下,考虑到各个客户端向代理服务器发送请求报文,可能会导致数据阻塞的情况,因此代理服务器在接收到多个客户端所发送的请求报文后,还可以根据各个请求报文的生成时间、发送时间、紧急程度等,将这些请求报文添加至报文队列,然后根据报文队列中各个请求报文的排列顺序,依次从报文队列中获取请求报文。
步骤S12:根据OpenGauss数据库的报文特征,判断请求报文是否为针对OpenGauss数据库的请求报文,若是则执行步骤S13;或,若否,则执行步骤S14。
步骤S13:在该请求报文为针对OpenGauss数据库的请求报文的情况下,根据OpenGauss数据库的报文解析规则对该请求报文进行解析。
步骤S14:在该请求报文不为针对OpenGauss数据库的请求报文的情况下,不对该请求报文进行解析。
这里可以对上述的步骤S12~步骤S14进行统一说明。
OpenGauss数据库具有自身的报文特征,该报文特征能够体现出OpenGauss数据库所特有的数据结构,因此在获取到请求报文之后,可以根据OpenGauss数据库的报文特征,判断请求报文是否为针对OpenGauss数据库的请求报文。
比如,OpenGauss数据库的一种报文特征可以为,第一个字节的字节数据为某些特定的数据,该特定的数据包括0x00、0x58、0x50等,因此在根据OpenGauss数据库的报文特征,判断请求报文是否为针对OpenGauss数据库的请求报文的过程中,可以先提取该请求报文第一个字节的字节数据,然后确定该请求报文第一个字节的字节数据,是否符合OpenGauss数据库的报文特征(即,该第一个字节的字节数据是否为0x00、0x58或0x50),若符合则说明该请求报文为针对OpenGauss数据库的请求报文,若不符合则说明该请求报文不为针对OpenGauss数据库的请求报文。
其中,根据OpenGauss数据库的一种报文特征,当请求报文第一个字节的字节数据为0x00时,说明该请求报文为针对OpenGauss数据库的请求报文,更具体的为请求登录的请求报文,此时该请求报文的报文类型为login请求包;当请求报文第一个字节的字节数据为0x58时,也说明该请求报文为针对OpenGauss数据库的请求报文,更具体的为请求登出的请求报文,此时该请求报文的报文类型为logout请求包;当请求报文第一个字节的字节数据为0x50时,说明该请求报文为针对OpenGauss数据库的请求报文,更具体的为请求进行数据查询的请求报文,此时该请求报文的报文类型为结构化查询语言(Structured QueryLanguage,SQL)请求包。
当然,考虑到OpenGauss数据库与其他数据库的差异性,还可以将OpenGauss数据库所特有的其他数据结构,作为该报文特征。
另外,在步骤S12中根据OpenGauss数据库的报文特征,判断出请求报文为针对OpenGauss数据库的请求报文的情况下,还可以将该请求报文进行存储。比如,由代理服务器执行该步骤S12时,若判断出请求报文为针对OpenGauss数据库的请求报文,则可以将该请求报文映射到服务器,并进行存储。
在所获取到的请求报文不为针对OpenGauss数据库的请求报文的情况下,通常可以不对该请求报文进行解析,比如可以丢弃该请求报文,也可以将该请求报文进行存储等。
在所获取到的请求报文为针对OpenGauss数据库的请求报文的情况下,可以进一步根据OpenGauss数据库的报文解析规则对该请求报文进行解析。
采用本申请实施例所提供的报文解析方法,获取请求报文之后,根据OpenGauss数据库的报文特征,判断该请求报文是否为针对OpenGauss数据库的请求报文,然后在该请求报文为针对OpenGauss数据库的请求报文的情况下,根据OpenGauss数据库的报文解析规则对该请求报文进行解析,因此能够利用该方法对OpenGauss数据库的请求报文进行解析,从而解决现有技术中的问题。
需要说明的是,考虑到OpenGauss数据库的数据库通常会发送***消息类请求报文,而该请求报文在审计过程中通常已进行相关记录,因此通常并不需要进行接卸。因此在根据OpenGauss数据库的报文解析规则对该请求报文进行解析之前,还可以判断该请求报文是否为服务器所发送的***消息类请求报文,若是,则不对该请求报文进行解析,若否则对该请求报文进行解析。从而筛除服务器所发送的***消息类请求报文,并对其他的请求报文,包括客户端所发送的请求报文、服务器所发送的非***消息类请求报文等,进行解析,这样当需要解析的请求报文数量较多的情况下,能够提高报文解析的整体效率。
需要进一步说明的是,在根据OpenGauss数据库的报文解析规则对该请求报文进行解析时,通常可以先对该请求报文进行层层剥离解析,比如可以调用OpenGauss数据库中的分析引擎,对该请求报文进行层层剥离解析,从而通过对请求报文的层层剥离解析,来获取该请求报文的应用层数据;在获取到该应用层数据之后,可以根据该应用层数据中指定字节的字节数据,确定该请求报文的报文类型,然后根据OpenGauss数据库中,与该报文类型对应的报文解析规则对该请求报文进行解析。
其中,上述提到针对OpenGauss数据库的请求报文的报文类型可以包括login请求包、logout请求包和SQL请求包,因此在根据该应用层数据中指定字节的字节数据,所确定出的该请求报文的报文类型可以为login请求包、logout请求包或SQL请求包,此时该指定字节可以为应用层数据的第一个字节。
比如,若该应用层数据第一个字节的字节数据为0x00,则可以确定该请求报文的报文类型为login请求包;若该应用层数据第一个字节的字节数据为0x58,则可以确定该请求报文的报文类型为logout请求包;若该应用层数据第一个字节的字节数据为0x50,则可以确定该请求报文的报文类型为SQL请求包。
在OpenGauss数据库中,针对不同报文类型的请求报文,通常具有不同的报文解析规则。
比如,针对报文类型为login请求包的请求报文,该请求报文中需要包含数据库的用户名、数据库名、是否可用于数据库审计等信息,这些信息需要通过对应的报文解析规则,从请求报文的参数中解析得到。该请求包的请求报文通常使用键值对的方式组织数据,并以0来分隔键值对;比如,针对login请求包的请求报文“user 0tomd 0database db1 0”,该请求报文中第1到第4字节是login请求报文的长度,第9到第12字节是关键字user,其后是数据库用户名。而后查找database,其后是数据库名。
针对报文类型为logout请求包的请求报文,该请求报文说明需要进行登出,可以结合对应的报文解析规则对该请求报文进行解析,从而得到进行登出的信息,包括登出的客户端、登出时间等。
针对SQL请求包的请求报文,该请求报文中通常包含SQL语句,可以通过对应的报文解析规则,从请求报文的参数中解析得到该SQL语句。另外,根据OpenGauss数据库的规则,报文类型为SQL请求包的请求报文通常可以由多个字段组成,并且各个字段分别包括标志位属性值、参数长度属性值和参数属性值,其中,标志位属性值能够反映相应该字段的字段类型,参数长度属性值能够用于指示如何获取该字段的参数属性值,比如该参数长度属性值具体为该字段的二进制参数的长度。
比如,如下表1所示为标志位属性值与字段类型的对应关系。根据该表1,当某个字段的标志位属性值为0x42时,说明该字段的字段类型为Bind字段;当某个字段的标志位属性值为0x50时,说明该字段的字段类型为Parse字段;当某个字段的标志位属性值为0x44时,说明该字段的字段类型为Describe字段;当某个字段的标志位属性值为0x45时,说明该字段的字段类型为Execute字段;当某个字段的标志位属性值为0x53时,说明该字段的字段类型为Sync字段。
表1
标志位属性值 | 字段类型 |
0x42 | Bind字段 |
0x50 | Parse字段 |
0x44 | Describe字段 |
0x45 | Execute字段 |
0x53 | Sync字段 |
这样,在请求报文的报文类型具体包括SQL请求包的情况下,根据OpenGauss数据库中,与报文类型对应的报文解析规则对请求报文进行解析,可以具体为,分别针对组成该请求报文的各个字段,根据该字段的标志位属性值确定该字段的字段类型,然后根据该字段类型所对应的预设字段解析流程,对该字段进行解析。
比如,在字段的字段类型具体为Parse字段的情况下,可以根据字段的参数长度属性值的指示,获取该字段的参数属性值,然后并对该参数属性值进行SQL语句的提取,从而得到SQL语句;在字段的字段类型具体为Bind字段、Describe字段或Execute字段的情况下,由于根据OpenGauss数据库的规则,这三种字段类型的字段不包含SQL语句,可以不对该字段的参数属性值进行SQL语句的提取,比如可以根据该字段参数长度属性值的指示确定相应的字段长度,然后对请求报文进行偏移,越过该字段进入下一个字段的解析;在该字段的字段类型具体为Sync字段的情况下,由于Sync字段是SQL请求包的请求报文的结尾字段,则结束对该请求报文进行解析。
在实际应用中,考虑到标志位属性值的值分比为0x42、0x50、0x44、0x45和0x53,为了节省存储空间,对于某个字段的标志位属性值,可以用一个字节来进行存储,比如0x42可以存储为42、0x50可以存储为50、0x44可以存储为44、0x45可以存储为45、0x53可以存储为53;而对于字段的参数长度属性值,可以用4个字节来进行存储。
比如,在表2中请求报文,包括Parse字段、Bind字段、Describe字段、Execute字段和Sync字段,各个字段的标志位属性值分别为50、42、44、45和53,因此利用1个字节进行存储;各个字段的参数长度属性值分别为00000023、0000000C、00000006、00000009和00000004,因此利用4个字节进行存储。其中,根据各个字段的参数长度属性值的指示,能够获取该字段的参数属性值。
表2
上述提到,在对报文类型为SQL请求包的请求报文进行解析时,可以分别针对组成请求报文的各个字段,根据该字段的标志位属性值确定字段的字段类型;然后,针对字段类型具体为Parse字段的字段,根据该字段的参数长度属性值的指示,获取该字段的参数属性值,并对该参数属性值进行SQL语句的提取;针对字段类型具体为Bind字段、Describe字段或Execute字段的字段,可以不对该字段的参数属性值进行SQL语句的提取;针对字段类型具体为Sync字段的字段,结束对请求报文进行解析。
结合上述表2,在实际应用中,具体的实现方式可以是,针对组成该请求报文的各个字段,可以按照数据读取顺序依次作为当前字段,然后读取该当前字段的1个字节(即标志位属性值),根据该当前字段的标志位属性值确定该当前字段的字段类型,若该当前字段的字段类型为Parse字段,则进一步读取4个字节(即参数长度属性值),从而根据该参数长度属性值的指示来获取该当前字段的参数属性值,进而根据该参数属性值进行SQL语句的提取,从而得到SQL语句;若该当前字段的字段类型为Bind字段、Describe字段或Execute字段,则说明该当前字段不含有SQL语句,可以不对该当前字段的参数属性值进行SQL语句的提取,比如可以进一步读取4个字节(即参数长度属性值),从而确定该当前字段的参数属性值,然后进行偏移,越过该当前字段进入下一个字段的解析;在该字段的字段类型具体为Sync字段的情况下,由于Sync字段是SQL请求包的请求报文的结尾字段,则结束对该请求报文进行解析。
需要说明的是,对于本申请实施例所提供的方法的部分或全部步骤,可以由OpenGauss数据库的服务器执行,或者也可以由代理服务器执行,或者部分步骤由服务器执行,并且另一部分步骤由代理服务器执行,比如,步骤S11和S12由代理服务器执行,步骤S13由服务器执行,这里并不对此进行限定。
另外,该方法还可以包括:利用解析结果进行审计,比如将解析结果(包括所提取的SQL语句等)导入审计模块,进行审计,比如对SQL语句进行检查等;并且在审计不通过的情况下,可以阻断该请求报文对应客户端的业务请求,还可以发送警示报告等。
上述是对本申请实施例所提供的报文解析方法的具体说明,为了便于理解,这里可以结合具体的应用场景,对该方法进一步说明。在该应用场景中,虚拟的代理服务器设置于OpenGauss数据库的服务器,从而使代理服务器能够获取到客户端所发送的请求报文,其中,该请求报文为针对OpenGauss数据库的请求报文,报文类型具体为SQL请求包的请求报文,并且该请求报文由三个字段组成,依次为Parse字段、Bind字段和Sync字段,各个字段的标志位属性值为1个字节,参数长度属性值为4个字节。
如图3所示为该方法的具体流程示意图,包括如下步骤:
步骤S31:代理服务器获取客户端所发送的请求报文。
步骤S32:代理服务器根据OpenGauss数据库的报文特征,判断为针对OpenGauss数据库的请求报文。
步骤S33:通过对该请求报文的层层剥离解析,获取应用层数据。
步骤S34:根据应用层数据中第一个字节的字节数据为0x50,确定该请求报文的报文类型为SQL请求包。
步骤S35:将该请求报文的第一个字段作为当前字段,根据该当前字段的标志位属性值确定该当前字段的字段类型为Parse字段。
步骤S36:取当前字段第一个字节之后的四个字节数据作为该当前字段的参数长度属性值,并根据该参数长度属性值的指示,获取该当前字段的参数属性值。
步骤S37:对当前字段的参数属性值进行SQL语句的提取。
步骤S38:将该请求报文的第二个字段作新的当前字段,根据新的当前字段的标志位属性值,确定新的当前字段的字段类型为Bind字段。
新的当前字段的第一个字节,即为该新的当前字段的标志位属性值。
步骤S39:取新的当前字段第一个字节之后的四个字节数据作为其参数长度属性值,并根据该参数长度属性值进行偏移,越过该新的当前字段进入下一个字段的解析。
步骤S310:将该请求报文的第三个字段作新的当前字段,根据新的当前字段的标志位属性值,确定新的当前字段的字段类型为Sync字段。
步骤S311:结束对所述请求报文进行解析。
显然,该图3所示的方法也能够解决现有技术中的问题,这里对此不再赘述。
基于与本申请实施例所提供的报文解析方法相同的发明构思,本申请实施例还提供了一种报文解析装置,对于该装置实施例,如有不清楚之处,可以参考方法实施例的相应内容。如图4所示为该装置40的具体结构示意图,该装置40包括:获取单元401、判断单元402和解析单元403,其中:
获取单元401,获取请求报文;
判断单元402,根据OpenGauss数据库的报文特征,判断所述请求报文是否为针对OpenGauss数据库的请求报文;
解析单元403,在所述请求报文为针对OpenGauss数据库的请求报文的情况下,根据OpenGauss数据库的报文解析规则对所述请求报文进行解析
采用本申请实施例所提供的装置40,由于该装置40采用与本申请实施例所提供的报文解析方法相同的发明构思,在该报文解析方法能够解决技术问题的前提下,该装置40也能够解决技术问题,这里对此不再赘述。
另外,在实际应用中,通过将该装置40与具体硬件设备、云技术等相结合所取得的技术效果,也在本申请的保护范围之内,比如采用分布式集群的方式将该装置40中的不同单元布设于分布式集群中的不同节点中,从而提高效率等;或,将该装置40中的部分单元布设于云端,从而降低成本等。
其中,解析单元403可以具体包括:剥离解析子单元、报文类型确定子单元和解析子单元,其中:剥离解析子单元,用于通过对所述请求报文的层层剥离解析,获取所述请求报文的应用层数据;报文类型确定子单元,用于根据所述应用层数据中指定字节的字节数据,确定所述请求报文的报文类型;解析子单元,用于根据OpenGauss数据库中,与所述报文类型对应的报文解析规则对所述请求报文进行解析。
报文类型确定子单元还可以具体包括:报文类型确定子模块,用于根据所述应用层数据中第一个字节的字节数据,确定所述请求报文的报文类型。
该请求报文的报文类型具体包括SQL请求包;所述请求报文由多个字段组成,其中,各个字段分别包括标志位属性值;以及,
解析子单元具体包括:字段类型确定子模块和字段解析子模块,其中:
字段类型确定子模块,用于分别针对组成所述请求报文的各个字段,根据所述字段的标志位属性值确定所述字段的字段类型;
字段解析子模块,用于根据所述字段类型所对应的预设字段解析流程,对所述字段进行解析。
各个字段分别还包括参数长度属性值和参数属性值;所述字段类型具体包括:Bind字段、Parse字段、Describe字段、Execute字段或Sync字段;以及,
字段解析子模块具体包括字段解析子单元,用于以下任意一种或多种:在所述字段的字段类型具体为Parse字段的情况下,根据所述字段的参数长度属性值的指示,获取所述字段的参数属性值,并对所述参数属性值进行SQL语句的提取;在所述字段的字段类型具体为Bind字段、Describe字段或Execute字段的情况下,不对所述字段的参数属性值进行SQL语句的提取;在所述字段的字段类型具体为Sync字段的情况下,结束对所述请求报文进行解析。
请求报文的报文类型具体还包括login请求包和logout请求包。
判断单元402可以具体包括判断子单元,用于判断所述请求报文第一个字节的字节数据,是否符合OpenGauss数据库的报文特征;若符合,则所述请求报文为针对OpenGauss数据库的请求报文;或,若不符合,则所述请求报文不为针对OpenGauss数据库的请求报文。
如图5所示,本实施例还提供了一种电子设备5,包括:至少一个处理器51和存储器52,图1中以一个处理器为例。处理器51和存储器52可以通过总线50连接,存储器52存储有可被处理器51执行的指令,指令被处理器51执行,以使电子设备5能够实现实本申请实施例中方法的全部或部分流程。
在实际应用中,该电子设备5可以是手机、笔记本电脑、台式电脑或其组成的大型服务器或服务器集群等。
本发明实施例还提供了一种存储介质,该存储介质存储有计算机程序,计算机程序可由处理器执行以完成本申请实施例中方法的全部或部分流程。其中,存储介质可为磁盘、光盘、只读存储记忆体(Read-Only Memory,ROM)、随机存储记忆体(Random AccessMemory,RAM)、快闪存储器(Flash Memory)、硬盘(Hard Disk Drive,缩写:HDD)或固态硬盘(Solid-State Drive,SSD)等。存储介质还可以包括上述种类的存储器的组合。
虽然结合附图描述了本发明的实施例,但是本领域技术人员可以在不脱离本发明的精神和范围的情况下作出各种修改和变型,这样的修改和变型均落入由所附权利要求所限定的范围之内。
Claims (10)
1.一种报文解析方法,其特征在于,所述方法包括:
获取请求报文;
根据OpenGauss数据库的报文特征,判断所述请求报文是否为针对OpenGauss数据库的请求报文;
在所述请求报文为针对OpenGauss数据库的请求报文的情况下,根据OpenGauss数据库的报文解析规则对所述请求报文进行解析。
2.根据权利要求1所述的方法,其特征在于,根据OpenGauss数据库的报文解析规则对所述请求报文进行解析,具体包括:
通过对所述请求报文的层层剥离解析,获取所述请求报文的应用层数据;
根据所述应用层数据中指定字节的字节数据,确定所述请求报文的报文类型;
根据OpenGauss数据库中,与所述报文类型对应的报文解析规则对所述请求报文进行解析。
3.根据权利要求2所述的方法,其特征在于,根据所述应用层数据中指定字节的字节数据,确定所述请求报文的报文类型,具体包括:
根据所述应用层数据中第一个字节的字节数据,确定所述请求报文的报文类型。
4.根据权利要求2所述的方法,其特征在于,所述请求报文的报文类型具体包括SQL请求包;所述请求报文由多个字段组成,其中,各个字段分别包括标志位属性值;以及,
根据OpenGauss数据库中,与所述报文类型对应的报文解析规则对所述请求报文进行解析,具体包括:
分别针对组成所述请求报文的各个字段,根据所述字段的标志位属性值确定所述字段的字段类型;
根据所述字段类型所对应的预设字段解析流程,对所述字段进行解析。
5.根据权利要求4所述的方法,其特征在于,各个字段分别还包括参数长度属性值和参数属性值;所述字段类型具体包括:Bind字段、Parse字段、Describe字段、Execute字段或Sync字段;以及,
根据所述字段类型对应的字段解析流程,对所述字段进行解析,具体包括以下任意一种或多种:
在所述字段的字段类型具体为Parse字段的情况下,根据所述字段的参数长度属性值的指示,获取所述字段的参数属性值,并对所述参数属性值进行SQL语句的提取;
在所述字段的字段类型具体为Bind字段、Describe字段或Execute字段的情况下,不对所述字段的参数属性值进行SQL语句的提取;
在所述字段的字段类型具体为Sync字段的情况下,结束对所述请求报文进行解析。
6.根据权利要求2所述的方法,其特征在于,所述请求报文的报文类型具体还包括login请求包和logout请求包。
7.根据权利要求1所述的方法,其特征在于,根据OpenGauss数据库的报文特征,判断所述请求报文是否为针对OpenGauss数据库的请求报文,具体包括:
判断所述请求报文第一个字节的字节数据,是否符合OpenGauss数据库的报文特征;
若符合,则所述请求报文为针对OpenGauss数据库的请求报文;或,
若不符合,则所述请求报文不为针对OpenGauss数据库的请求报文。
8.一种报文解析装置,其特征在于,包括:
获取单元,获取请求报文;
判断单元,根据OpenGauss数据库的报文特征,判断所述请求报文是否为针对OpenGauss数据库的请求报文;
解析单元,在所述请求报文为针对OpenGauss数据库的请求报文的情况下,根据OpenGauss数据库的报文解析规则对所述请求报文进行解析。
9.一种电子设备,其特征在于,包括:
处理器;
用于存储处理器可执行指令的存储器;其中,所述处理器被配置为执行如权利要求1-7任意一项所述的方法。
10.一种存储介质,其特征在于,所述存储介质存储有计算机程序,所述计算机程序可由处理器执行以完成权利要求1-7任意一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210686223.2A CN114969096A (zh) | 2022-06-16 | 2022-06-16 | 报文解析方法、装置、电子设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210686223.2A CN114969096A (zh) | 2022-06-16 | 2022-06-16 | 报文解析方法、装置、电子设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114969096A true CN114969096A (zh) | 2022-08-30 |
Family
ID=82962829
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210686223.2A Pending CN114969096A (zh) | 2022-06-16 | 2022-06-16 | 报文解析方法、装置、电子设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114969096A (zh) |
-
2022
- 2022-06-16 CN CN202210686223.2A patent/CN114969096A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108763031B (zh) | 一种基于日志的威胁情报检测方法及装置 | |
CN111522922B (zh) | 日志信息查询方法、装置、存储介质及计算机设备 | |
EP3251031B1 (en) | Techniques for compact data storage of network traffic and efficient search thereof | |
CN109684052B (zh) | 事务分析方法、装置、设备及存储介质 | |
CN109039787B (zh) | 日志处理方法、装置及大数据集群 | |
CN111740868B (zh) | 告警数据的处理方法和装置及存储介质 | |
US11188443B2 (en) | Method, apparatus and system for processing log data | |
CN111488594B (zh) | 一种基于云服务器的权限检查方法、装置、存储介质及终端 | |
CN107885634B (zh) | 监控中异常信息的处理方法和装置 | |
CN115242434A (zh) | 应用程序接口api的识别方法及装置 | |
CN110866031B (zh) | 数据库访问路径的优化方法、装置、计算设备以及介质 | |
CN109214189B (zh) | 识别程序漏洞的方法、装置、存储介质和电子设备 | |
CN114331167B (zh) | 一种冠军挑战者策略的管理方法、***、介质和设备 | |
CN114969096A (zh) | 报文解析方法、装置、电子设备和存储介质 | |
CN113778709B (zh) | 接口调用方法、装置、服务器及存储介质 | |
CN115185778A (zh) | 数据库的监控方法及装置 | |
CN115840939A (zh) | 安全漏洞处理方法、装置、计算机设备和存储介质 | |
CN115795100A (zh) | 用户事件处理方法、装置、电子设备及可读存储介质 | |
CN113468218A (zh) | 一种对数据库慢sql进行监测和管理的方法和装置 | |
CN114765599A (zh) | 子域名采集方法、装置 | |
CN111444156A (zh) | 一种基于云计算的故障诊断方法 | |
CN115549990B (zh) | 一种sql注入检测方法、装置、电子设备及存储介质 | |
CN115038089B (zh) | 一种基于信息抽取的多端数据监听采集方法 | |
CN112417328B (zh) | 一种网页监控方法及装置 | |
CN110196862B (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 |