数据库操作方法、装置、设备和计算机可读存储介质与流程

专利2022-06-29  69


本发明涉及数据库操作领域,尤其涉及数据库操作方法、装置、设备和计算机可读存储介质。



背景技术:

sql(structuredquerylanguage,结构化查询语言)是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。

sql是各种数据库最直接也是最通用的操作数据的语言,尽管sql本身的能力非常强大,但是利用sql语句进行数据库操作时,也无可避免地会给数据库带来很多安全问题,为了减少这些安全问题,当前通常会设置sql预警,例如,在每次数据库中有新增的表时候,数据库运维人员都设置新增表的访问权限,在数据库操作时根据sql语句信息,判断是否具有数据库操作权限,若不具有数据库操作权限,则进行sql预警,这样的sql预警方式,预警的粒度较粗且每次都需要额外的维护权限。



技术实现要素:

本发明的主要目的在于提供一种数据库操作方法、装置、设备和计算机可读存储介质,旨在解决当前不可以对数据库操作指令进行有效地验证,导致数据库操作的风险性较高的技术问题。

为实现上述目的,本发明提供数据库操作方法,所述数据库操作方法包括以下步骤:

在接收到数据库操作请求时,获取所述数据库操作请求对应的操作指令;

通过预设sql语法解析器解析所述操作指令,获得所述操作指令的语法结构,和所述操作指令中包含的关键字符信息;

根据所述语法结构和所述关键字符信息,构建所述操作指令对应的sql语法树;

根据所述sql语法树获取所述关键字符信息的验证规则,在所述关键字符信息符合所述验证规则时,执行所述操作指令。

在一实施例中,所述通过预设sql语法解析器解析所述操作指令,获得所述操作指令的语法结构,和所述操作指令中包含的关键字符信息的步骤之后,包括:

判断所述操作指令的语法结构是否为sql语法结构,和/或所述关键字符信息中是否包含sql关键字;

若所述操作指令的语法结构是sql语法结构,或所述关键字符信息中包含sql关键字,则执行所述根据所述语法结构和所述关键字符信息,构建所述操作指令对应的sql语法树的步骤。

在一实施例中,所述判断所述操作指令的语法结构是否为sql语法结构,和/或所述关键字符信息中是否包含sql关键字的步骤之后,包括:

若所述操作指令的语法结构不是sql语法结构,且所述关键字符信息中不包含sql关键字,则判断所述关键字符信息中是否包含敏感信息;

若所述关键字符信息中包含敏感信息,则屏蔽所述操作指令;

若所述关键字符信息中不包含敏感信息,则调用预设数据接口对所述操作指令进行转化,以使所述操作指令的语法结构是sql语法结构,或所述关键字符信息中包含sql关键字。

在一实施例中,所述根据所述语法结构和所述关键字符信息,构建所述操作指令对应的sql语法树的步骤,包括:

对所述语法结构进行语法分析,得到所述语法结构对应的层级关系,并按所述层级关系生成基础语法树;

对所述关键字符信息进行词法分析,得到所述关键字符信息中的关键字段和关键值,将所述关键字段和所述关键值进行关联作为键值对;

将所述键值对添加到所述基础语法树的叶子节点上,生成所述操作指令对应的sql语法树。

在一实施例中,所述根据所述sql语法树获取所述关键字符信息的验证规则,在所述关键字符信息符合所述验证规则时,执行所述操作指令的步骤,包括:

查询预设规则映射表,获取所述sql语法树中键值对对应的验证规则,判断所述键值对中的关键值是否符合所述验证规则;

若所述键值对中的关键值不符合所述验证规则,则输出sql预警提示;

若所述键值对中的关键值符合所述验证规则,则执行所述操作指令。

在一实施例中,所述在接收到数据库操作请求时,获取所述数据库操作请求对应的操作指令的步骤,包括:

在接收到数据库操作请求时,获取所述操作请求对应的设备标识和/或账号标识,并判断所述设备标识和/或所述账号标识是否在预设黑名单中,其中,所述预设黑名单包括预设设备黑名单和预设账号黑名单;

若所述设备标识和/或所述账号标识在预设黑名单中,则屏蔽所述数据库操作请求;

若所述设备标识和所述账号标识没有在预设黑名单中,则获取所述数据库操作请求对应的操作指令。

在一实施例中,所述根据所述sql语法树获取所述关键字符信息的验证规则,在所述关键字符信息符合所述验证规则时,执行所述操作指令的步骤之后,包括:

在所述操作指令执行完成时,获取所述数据库的更新信息,并判断所述更新信息中是否包含敏感信息;

若所述更新信息中包含敏感信息,则撤销所述操作指令,以将所述数据库恢复至初始状态。

此外,为实现上述目的,本发明还提供一种数据库操作装置,所述数据库操作装置包括:

指令获取模块,用于在接收到数据库操作请求时,获取所述数据库操作请求对应的操作指令;

信息获取模块,用于通过预设sql语法解析器解析所述操作指令,获得所述操作指令的语法结构,和所述操作指令中包含的关键字符信息;

树形构造模块,用于根据所述语法结构和所述关键字符信息,构建所述操作指令对应的sql语法树;

指令执行模块,用于根据所述sql语法树获取所述关键字符信息的验证规则,在所述关键字符信息符合所述验证规则时,执行所述操作指令。

此外,为实现上述目的,本发明还提供一种数据库操作设备;

所述数据库操作设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其中:

所述计算机程序被所述处理器执行时实现如上所述的数据库操作方法的步骤。

此外,为实现上述目的,本发明还提供计算机存储介质;

所述计算机存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述的数据库操作方法的步骤。

本发明实施例提出的一种数据库操作方法、装置、设备和计算机可读存储介质,通过在接收到数据库操作请求时,获取所述数据库操作请求对应的操作指令;通过预设sql语法解析器解析所述操作指令,获得所述操作指令的语法结构,和所述操作指令中包含的关键字符信息;根据所述语法结构和所述关键字符信息,构建所述操作指令对应的sql语法树;根据所述sql语法树获取所述关键字符信息的验证规则,在所述关键字符信息符合所述验证规则时,执行所述操作指令。本发明还公开了一种数据库操作装置、设备和计算机可读存储介质。本发明实施例中利用解析器解析操作指令,得到操作指令对应的sql语法树,根据sql语法树结构确定数据库操作指令的验证规则,并按照验证规则对操作指令进行验证,在操作指令中的关键字符信息符合验证规则时,执行操作指令,本发明实施例中通过对操作指令进行验证,有效地降低操作数据库的风险性,保证了数据库中数据信息的安全。

附图说明

图1是本发明实施例方案涉及的硬件运行环境的装置结构示意图;

图2为本发明数据库操作方法第一实施例的流程示意图;

图3为本发明数据库操作方法第一实施例中数据库操作预警的具体场景示意图;

图4为本发明数据库操作方法第一实施例中sql语法树构建的具体场景示意图;

图5为本发明数据库操作方法第二实施例的流程示意图;

图6为本发明数据库操作方法第三实施例的流程示意图;

图7为本发明数据库操作装置一实施例的功能模块示意图。

本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

如图1所示,图1是本发明实施例方案涉及的硬件运行环境的终端(又叫数据库操作设备,其中,数据库操作设备可以是由单独的数据库操作装置构成,也可以是由其他装置与数据库操作装置组合形成)结构示意图。

本发明实施例终端可以固定终端,也可以是移动终端,如,带联网功能的智能空调、智能电灯、智能电源、智能音箱、自动驾驶汽车、pc(personalcomputer)个人计算机、智能手机、平板电脑、电子书阅读器、便携计算机等。

如图1所示,该终端可以包括:处理器1001,例如,中央处理器centralprocessingunit,cpu),网络接口1004,用户接口1003,存储器1005,通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(display)、输入单元比如键盘(keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如无线保真wireless-fidelity,wifi接口)。存储器1005可以是高速ram存储器,也可以是稳定的存储器(non-volatilememory),例如,磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。

可选地,终端还可以包括摄像头、rf(radiofrequency,射频)电路,传感器、音频电路、wifi模块;输入单元,比显示屏,触摸屏;网络接口可选除无线接口中除wifi外,蓝牙、探针等等。其中,传感器比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器;当然,移动终端还可配置陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。

本领域技术人员可以理解,图1中示出的终端结构并不构成对终端的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。

如图1所示,该计算机软件产品存储在一个存储介质(存储介质:又叫计算机存储介质、计算机介质、可读介质、可读存储介质、计算机可读存储介质或者直接叫介质等,存储介质可以是非易失性可读存储介质,如ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及计算机程序。

在图1所示的终端中,网络接口1004主要用于连接后台服务器,与后台服务器进行数据通信;用户接口1003主要用于连接客户端(用户端),与客户端进行数据通信;而处理器1001可以用于调用存储器1005中存储的计算机程序,并执行本发明以下实施例提供的数据库操作方法中的步骤。

参照图2,本发明一种数据库操作方法的第一实施例中,所述数据库操作方法包括:

步骤s10,在接收到数据库操作请求时,获取所述数据库操作请求对应的操作指令。

本实施例中数据库操作方法应用于数据库操作设备,数据库操作设备接收数据库操作请求,数据库操作请求的触发方式不作具体限定,即,数据库操作请求可以用户主动触发的,例如,用户在数据库操作设备点击数据库查询按键,触发数据库操作请求;此外,数据库操作请求还可以是数据库操作设备自动触发的,例如,数据库操作设备中预设数据库操作请求的触发条件:每天凌晨自动进行数据库查询,获取当天业务产生的数据信息,数据库操作设备在到达凌晨时,自动触发数据库操作请求,以获取当天业务产生的数据信息。

数据库操作设备在接收到数据库操作请求时,数据库操作设备获取数据库操作请求对应的操作指令;本实施例中的操作指令可以是查询指令、输入指令、删除指令等等。

步骤s20,通过预设sql语法解析器解析所述操作指令,获得所述操作指令的语法结构,和所述操作指令中包含的关键字符信息。

本实施例中预先构建sql语法解析器,sql语法解析器通过机器学习的方式来构建。具体地,数据库操作设备首先获取用于训练模型的sql指令样本集,该sql指令样本集中包括有不同的sql指令样本,数据库操作设备使用该sql指令样本集中的sql指令样本进行机器学习,训练获得sql语法解析器。其中,对于该机器学习的过程,可以是通过神经网络、遗传算法、支持向量机等多种方式实现。

由于sql指令样本集中的sql指令样本的数据量庞大,若要获取到全部sql指令样本进行模型训练,则会增大工作量,因此,本发明实施例中采用linear-svm(线性-支持向量机)的方式进行建模。数据库操作设备为训练sql语法解析器,首先要获取到sql指令样本集;然后从sql指令样本集中抽取一定数量的sql指令样本建立一个初始分析函数,在得到初始分析函数之后,数据库操作设备用sql指令样本集中剩余的sql指令样本进行迭代训练,得到预设sql语法解析器。

本实施例中数据库操作设备利用预设sql语法解析器解析操作指令,预设sql语法解析器对操作进行语法分析和词法分析,获得操作指令的语法结构,和操作指令中包含的关键字符信息,关键字符信息包括:语法结构信息(语法结构信息例如,语法格式结构)和关键词信息(关键词信息例如,sql关键字和敏感信息)。

步骤s30,根据所述语法结构和所述关键字符信息,构建所述操作指令对应的sql语法树。

数据库操作设备在获得操作指令的语法结构,和操作指令中包含的关键字符信息之后,数据库操作设备判断数据库操作指令是否为sql语句,数据库操作设备判定数据库操作指令是sql语句时,数据库操作设备对操作指令进行解析,构建操作指令对应的sql语法树,具体地,步骤s30包括:

步骤a1,对所述语法结构进行语法分析,得到所述语法结构对应的层级关系,并按所述层级关系生成基础语法树;

步骤a2,对所述关键字符信息进行词法分析,得到所述关键字符信息中的关键字段和关键值,将所述关键字段和所述关键值进行关联作为键值对;

步骤a3,将所述键值对添加到所述基础语法树的叶子节点上,生成所述操作指令对应的sql语法树。

即,数据库操作设备对语法结构进行语法分析,得到语法结构对应的层级关系,数据库操作设备按层级关系生成基础语法树;然后,数据库操作设备对关键字符信息进行词法分析,得到关键字符信息中的关键字段和关键值,数据库操作设备将关键字段和关键值进行关联,数据库操作设备将相互关联的关键字段和关键值作为一个键值对;数据库操作设备将键值对添加到基础语法树的叶子节点上,生成操作指令对应的sql语法树。

为了方便理解,本实施例中以一个具体的实例进行说明,参照图3,图3所示中包含sql拦截器用于捕获用户或者应用程序中的sql语句;securityrules是用户自定义的验证规则;parser是sql语法解析器用来解析sql语句并生成sql语法树;insecurewarning是匹配到不符合验证规则的时候发告警的预警模块。

具体地:数据库操作设备通过sql拦截器拦截用户操作数据库的操作指令,并将操作指令发送到sql语法解析器;sql语法解析器得到sql语法树,以select为例进行说明,一个完整的select语句最多可以包含以下若干结构:查询实体(select),查询目标(from),查询条件(where),分组(group),返回行数(limit),排序规则(order);查询实体包含:1、字段名2、函数名;查询目标包含:1、目标名2、子查询;查询条件包含:1、查询操作的操作符号2、查询条件表达式3、查询条件对应的值;分组包含:1、用来分组的字段2、用来分组的函数;返回行数限制包含:1、偏移量2、行数;排序规则包含:1、排序依据2、升序或者降序。

即,本实施例中操作指令对应的数据库中包含数据表,数据表中包含的内容有:用户号(user_id),用户名(user_name),用户级别(user_level),用户购买过的产品号(product_id),用户购买过的产品名称(product_name)。数据库操作指令是从用户表中(user)查询所有的用户号为1且产品号为2且用户级别为4或5的所有数据,sql语句可表达为:select*fromuserwhereuser_id=1and(product_id=2and(user_level=4oruser_level=5));然后,数据库操作设备通过sql语法解析器语法解析sql语句,得到sql语句的sql关键值用户号为1;产品号为2,且用户级别为4或5,和对应的关键字段为:用户名、产品号和用户级别,数据库操作设备将关键字段和关键值组合生成sql语法树。

结合图4,sql语法树根节点是select它标识了sql指令是查询类型指令,这个根节点有三个子节点,分别标识了要查询的字段(用户号,产品号),数据来源(用户表),筛选条件:它有多个节点,这些节点用来表示:用户id号,产品号,用户级别,并且它们之间的与或非关系也通过sql语法树中的叶子节点表示出来了。

本实施例中,数据库操作设备根据sql查询指令生成树更立体化的表达了数据库操作指令,通过生成树层级关系表达了操作指令的嵌套关系,以方便用户进行查看。

步骤s40,根据所述sql语法树获取所述关键字符信息的验证规则,在所述关键字符信息符合所述验证规则时,执行所述操作指令。

数据库操作设备在sql语法树解析出来之后,数据库操作设备将sql语法树中的信息和用户自定义的过滤安全规则相匹配,确定操作指令的每一部分是否有违反验证规则的地方,即,数据库操作设备根据sql语法树获取关键字符信息的验证规则,数据库操作设备判断关键字符信息是否符合验证规则,在关键字符信息符合验证规则时,数据库操作设备执行操作指令。

具体地,本实施例给出了一种根据sql语法树获取关键字符信息的验证规则,并进行验证执行操作指令的实现方式,包括:

步骤b1,查询预设规则映射表,获取所述sql语法树中键值对对应的验证规则,判断所述键值对中的关键值是否符合所述验证规则;

步骤b2,若所述键值对中的关键值不符合所述验证规则,则输出sql预警提示;

步骤b3,若所述键值对中的关键值符合所述验证规则,则执行所述操作指令。

即,数据库操作设备中预设规则映射表,预设规则映射表中记录不同的sql验证规则,数据库操作设备查询预设规则映射表,获取sql语法树中键值对对应的验证规则,数据库操作设备判断键值对中的关键值是否符合验证规则;若键值对中的关键值不符合验证规则,数据库操作设备输出sql预警提示;以提示用户此次数据库操作存在风险,若键值对中的关键值符合验证规则,则执行操作指令。

在本实施例中利用解析器解析操作指令,得到操作指令对应的sql语法树,根据sql语法树结构确定数据库操作指令的验证规则,并按照验证规则对操作指令进行验证,在操作指令中的关键字符信息符合验证规则时,执行操作指令,本发明实施例中通过对操作指令进行验证,有效地降低操作数据库的风险性,保证了数据库中数据信息的安全。

进一步地,参照图5,在本发明第一实施例的基础上,提出了本发明数据库操作方法的第二实施例。

本实施例是第一实施例中步骤s20之后的步骤,本实施例与本发明第一实施例的区别在于:

步骤s50,判断所述操作指令的语法结构是否为sql语法结构,和/或所述关键字符信息中是否包含sql关键字。

本实施例中需要构建sql语法树,只有sql语句(sql语句中包含特定的语法结构或者sql关键字)才可以构建sql语法树,因此,数据库操作设备将经过预设sql语法解析器解析得到的语法结构和关键字符信息进行分析,判断操作指令是否为sql语句,具体地,数据库操作设备判断操作指令的语法结构是否为sql语法结构,和/或关键字符信息中是否包含sql关键字。

若操作指令的语法结构是sql语法结构,或关键字符信息中包含sql关键字,数据库操作设备判断操作指令为sql语句,数据库操作设备执行第一实施例中步骤s30:根据所述语法结构和所述关键字符信息,构建所述操作指令对应的sql语法树。

步骤s60,若所述操作指令的语法结构不是sql语法结构,且所述关键字符信息中不包含sql关键字,则判断所述关键字符信息中是否包含敏感信息。

若操作指令的语法结构不是sql语法结构,且关键字符信息中不包含sql关键字,则数据库操作设备确定操作指令不是sql语句,此时,数据库操作设备没有直接将操作指令进行屏蔽,而是判断关键字符信息中是否包含敏感信息,敏感信息是指预先设置的具有风险性的信息,敏感信息的可以根据不同场景设置,内容不作具体限定

步骤s70,若所述关键字符信息中包含敏感信息,则屏蔽所述操作指令。

若关键字符信息中包含敏感信息,数据库操作设备则屏蔽操作指令,以降低数据库操作的风险性。

步骤s80,若所述关键字符信息中不包含敏感信息,则调用预设数据接口对所述操作指令进行转化,以使所述操作指令的语法结构是sql语法结构,或所述关键字符信息中包含sql关键字。

本实施例中数据库操作设备与预设数据接口通信连接,预设数据接口关联有预先设置的用于指令格式转化的脚本,可以将非sql语句转化为sql语句;若关键字符信息中不包含敏感信息,数据库操作设备则调用预设数据接口对操作指令进行转化,以使操作指令的语法结构是sql语法结构,或关键字符信息中包含sql关键字。在操作指令转化完成之后,数据库操作设备执行第一实施例中步骤s30:根据所述语法结构和所述关键字符信息,构建所述操作指令对应的sql语法树。

在本实施例中数据库操作设备判断操作指令是否为sql语句,在操作指令不是sql语句时,数据库操作设备判断操作指令中是否包含敏感信息,以确定操作指令的风险性,在操作指令不包含敏感信息,即,操作指令的风险性较低时,数据库操作设备将操作指令转化为sql语句,以执行数据库操作,本实施例中在有效降低数据库操作风险性的同时可以减少了操作指令无法响应的情况,从而保证了用户数据库操作的有效性。

进一步地,参照图6,在本发明上述实施例的基础上,提出了本发明数据库操作方法的第三实施例。

本实施例是第一实施例中步骤s10的细化步骤,本实施例与本发明上述实施例的区别在于:

步骤s11,在接收到数据库操作请求时,获取所述操作请求对应的设备标识和/或账号标识,并判断所述设备标识和/或所述账号标识是否在预设黑名单中,其中,所述预设黑名单包括预设设备黑名单和预设账号黑名单。

数据库操作设备在接收到数据库操作请求时,数据库操作设备获取操作请求对应的设备标识和/或账号标识,其中,设备标识可以是设备编号,或者设备地址信息等唯一识别设备的标识信息,账户标识可以是用户姓名,或者用户身份证信息等唯一识别用户身份的信息;数据库操作设备判断设备标识是否在预设的设备黑名单中,和/或数据库操作设备判断账号标识是否在预设的账号黑名单中。

步骤s12,若所述设备标识和/或所述账号标识在预设黑名单中,则屏蔽所述数据库操作请求。

若设备标识在预设的设备黑名单中,和/或账号标识在预设的账号黑名单中,数据库操作设备屏蔽数据库操作请求。

步骤s13,若所述设备标识和所述账号标识没有在预设黑名单中,则获取所述数据库操作请求对应的操作指令。

若设备标识和账号标识没有在预设黑名单中,数据库操作设备获取数据库操作请求对应的操作指令,以对操作指令进行解析,在本实施例中在接收到数据库操作请求时,首先根据数据库操作请求对应的设备标识和/或账号标识,对根据数据库操作请求进行初步过滤,可以减少部分操作指令,从而提高操作指令的解析效率,同时可以有效地屏蔽部分数据库操作请求,降低数据库的风险性。

进一步地,在本发明上述实施例的基础上,提出了本发明数据库操作方法的第四实施例。

本实施例是第一实施例中步骤s40之后的步骤,本实施例与本发明上述实施例的区别在于:

在所述操作指令执行完成时,获取所述数据库的更新信息,并判断所述更新信息中是否包含敏感信息;

若所述更新信息中包含敏感信息,则撤销所述操作指令,以将所述数据库恢复至初始状态。

本实施例中,数据库操作设备实时地检测数据库中数据的状态,若检测到数据库中出现更新信息时,数据库操作设备确定操作指令执行完成,在操作指令执行完成时,数据库操作设备获取数据库的更新信息,并判断更新信息中是否包含敏感信息,其中,敏感信息是指预先设置的具有风险性的信息,敏感信息的可以根据不同场景设置,内容不作具体限定。

若更新信息中不包含敏感信息,则数据库操作设备保存新增的更新信息,若更新信息中包含敏感信息,则数据库操作设备撤销操作指令,以将数据库恢复至操作指令执行之前的初始状态。

本实施例中数据库操作设备在数据库操作完成之后,实时地检测数据库中的更新信息,若更新信息中涉及到敏感信息,数据库操作设备可以进行回退,以有效保证数据库安全性。

此外,参照图7,本发明实施例还提出一种数据库操作装置,所述数据库操作装置包括:

指令获取模块10,用于在接收到数据库操作请求时,获取所述数据库操作请求对应的操作指令;

信息获取模块20,用于通过预设sql语法解析器解析所述操作指令,获得所述操作指令的语法结构,和所述操作指令中包含的关键字符信息;

树形构造模块30,用于根据所述语法结构和所述关键字符信息,构建所述操作指令对应的sql语法树;

指令执行模块40,用于根据所述sql语法树获取所述关键字符信息的验证规则,在所述关键字符信息符合所述验证规则时,执行所述操作指令。

在一实施例中,所述的数据库操作装置,包括:

指令判断模块,用于判断所述操作指令的语法结构是否为sql语法结构,和/或所述关键字符信息中是否包含sql关键字;

判定执行模块,用于若所述操作指令的语法结构是sql语法结构,或所述关键字符信息中包含sql关键字,则执行所述根据所述语法结构和所述关键字符信息,构建所述操作指令对应的sql语法树的步骤。

在一实施例中,所述的数据库操作装置,包括:

敏感信息判断模块,用于若所述操作指令的语法结构不是sql语法结构,且所述关键字符信息中不包含sql关键字,则判断所述关键字符信息中是否包含敏感信息;

指令屏蔽模块,用于若所述关键字符信息中包含敏感信息,则屏蔽所述操作指令;

指令转化模块,用于若所述关键字符信息中不包含敏感信息,则调用预设数据接口对所述操作指令进行转化,以使所述操作指令的语法结构是sql语法结构,或所述关键字符信息中包含sql关键字。

在一实施例中,所述树形构造模块30,包括:

语法解析单元,用于对所述语法结构进行语法分析,得到所述语法结构对应的层级关系,并按所述层级关系生成基础语法树;

词法解析单元,用于对所述关键字符信息进行词法分析,得到所述关键字符信息中的关键字段和关键值,将所述关键字段和所述关键值进行关联作为键值对;

树形生成单元,用于将所述键值对添加到所述基础语法树的叶子节点上,生成所述操作指令对应的sql语法树。

在一实施例中,所述指令执行模块40,包括:

查询获取单元,用于查询预设规则映射表,获取所述sql语法树中键值对对应的验证规则,判断所述键值对中的关键值是否符合所述验证规则;

输出告警单元,用于若所述键值对中的关键值不符合所述验证规则,则输出sql预警提示;

指令执行单元,用于若所述键值对中的关键值符合所述验证规则,则执行所述操作指令。

在一实施例中,所述指令获取模块10,包括:

标识判断单元,用于在接收到数据库操作请求时,获取所述操作请求对应的设备标识和/或账号标识,并判断所述设备标识和/或所述账号标识是否在预设黑名单中,其中,所述预设黑名单包括预设设备黑名单和预设账号黑名单;

请求屏蔽单元,用于若所述设备标识和/或所述账号标识在预设黑名单中,则屏蔽所述数据库操作请求;

指令获取单元,用于若所述设备标识和所述账号标识没有在预设黑名单中,则获取所述数据库操作请求对应的操作指令。

在一实施例中,所述的数据库操作装置,包括:

更新判断模块,用于在所述操作指令执行完成时,获取所述数据库的更新信息,并判断所述更新信息中是否包含敏感信息;

数据恢复模块,用于若所述更新信息中包含敏感信息,则撤销所述操作指令,以将所述数据库恢复至初始状态。

其中,数据库操作装置的各个功能模块实现的步骤可参照本发明数据库操作方法的各个实施例,此处不再赘述。

此外,本发明实施例还提出一种计算机存储介质。

所述计算机存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述实施例提供的数据库操作方法中的操作。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体/操作/对象与另一个实体/操作/对象区分开来,而不一定要求或者暗示这些实体/操作/对象之间存在任何这种实际的关系或者顺序;术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。

对于装置实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的。可以根据实际的需要选择中的部分或者全部模块来实现本发明方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。

以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。


技术特征:

1.一种数据库操作方法,其特征在于,所述数据库操作方法包括以下步骤:

在接收到数据库操作请求时,获取所述数据库操作请求对应的操作指令;

通过预设sql语法解析器解析所述操作指令,获得所述操作指令的语法结构,和所述操作指令中包含的关键字符信息;

根据所述语法结构和所述关键字符信息,构建所述操作指令对应的sql语法树;

根据所述sql语法树获取所述关键字符信息的验证规则,在所述关键字符信息符合所述验证规则时,执行所述操作指令。

2.如权利要求1所述的数据库操作方法,其特征在于,所述通过预设sql语法解析器解析所述操作指令,获得所述操作指令的语法结构,和所述操作指令中包含的关键字符信息的步骤之后,包括:

判断所述操作指令的语法结构是否为sql语法结构,和/或所述关键字符信息中是否包含sql关键字;

若所述操作指令的语法结构是sql语法结构,或所述关键字符信息中包含sql关键字,则执行所述根据所述语法结构和所述关键字符信息,构建所述操作指令对应的sql语法树的步骤。

3.如权利要求2所述的数据库操作方法,其特征在于,所述判断所述操作指令的语法结构是否为sql语法结构,和/或所述关键字符信息中是否包含sql关键字的步骤之后,包括:

若所述操作指令的语法结构不是sql语法结构,且所述关键字符信息中不包含sql关键字,则判断所述关键字符信息中是否包含敏感信息;

若所述关键字符信息中包含敏感信息,则屏蔽所述操作指令;

若所述关键字符信息中不包含敏感信息,则调用预设数据接口对所述操作指令进行转化,以使所述操作指令的语法结构是sql语法结构,或所述关键字符信息中包含sql关键字。

4.如权利要求1所述的数据库操作方法,其特征在于,所述根据所述语法结构和所述关键字符信息,构建所述操作指令对应的sql语法树的步骤,包括:

对所述语法结构进行语法分析,得到所述语法结构对应的层级关系,并按所述层级关系生成基础语法树;

对所述关键字符信息进行词法分析,得到所述关键字符信息中的关键字段和关键值,将所述关键字段和所述关键值进行关联作为键值对;

将所述键值对添加到所述基础语法树的叶子节点上,生成所述操作指令对应的sql语法树。

5.如权利要求1所述的数据库操作方法,其特征在于,所述根据所述sql语法树获取所述关键字符信息的验证规则,在所述关键字符信息符合所述验证规则时,执行所述操作指令的步骤,包括:

查询预设规则映射表,获取所述sql语法树中键值对对应的验证规则,判断所述键值对中的关键值是否符合所述验证规则;

若所述键值对中的关键值不符合所述验证规则,则输出sql预警提示;

若所述键值对中的关键值符合所述验证规则,则执行所述操作指令。

6.如权利要求1所述的数据库操作方法,其特征在于,所述在接收到数据库操作请求时,获取所述数据库操作请求对应的操作指令的步骤,包括:

在接收到数据库操作请求时,获取所述操作请求对应的设备标识和/或账号标识,并判断所述设备标识和/或所述账号标识是否在预设黑名单中,其中,所述预设黑名单包括预设设备黑名单和预设账号黑名单;

若所述设备标识和/或所述账号标识在预设黑名单中,则屏蔽所述数据库操作请求;

若所述设备标识和所述账号标识没有在预设黑名单中,则获取所述数据库操作请求对应的操作指令。

7.如权利要求1至6任意一项所述的数据库操作方法,其特征在于,所述根据所述sql语法树获取所述关键字符信息的验证规则,在所述关键字符信息符合所述验证规则时,执行所述操作指令的步骤之后,包括:

在所述操作指令执行完成时,获取所述数据库的更新信息,并判断所述更新信息中是否包含敏感信息;

若所述更新信息中包含敏感信息,则撤销所述操作指令,以将所述数据库恢复至初始状态。

8.一种数据库操作装置,其特征在于,所述数据库操作装置包括:

指令获取模块,用于在接收到数据库操作请求时,获取所述数据库操作请求对应的操作指令;

信息获取模块,用于通过预设sql语法解析器解析所述操作指令,获得所述操作指令的语法结构,和所述操作指令中包含的关键字符信息;

树形构造模块,用于根据所述语法结构和所述关键字符信息,构建所述操作指令对应的sql语法树;

指令执行模块,用于根据所述sql语法树获取所述关键字符信息的验证规则,在所述关键字符信息符合所述验证规则时,执行所述操作指令。

9.一种数据库操作设备,其特征在于,所述数据库操作设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其中:

所述计算机程序被所述处理器执行时实现如权利要求1至7中任一项所述的数据库操作方法的步骤。

10.一种计算机存储介质,其特征在于,所述计算机存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7中任一项所述的数据库操作方法的步骤。

技术总结
本发明公开了一种数据库操作方法,包括以下步骤:在接收到数据库操作请求时,获取所述数据库操作请求对应的操作指令;通过预设SQL语法解析器解析所述操作指令,获得所述操作指令的语法结构,和所述操作指令中包含的关键字符信息;根据所述语法结构和所述关键字符信息,构建所述操作指令对应的SQL语法树;根据所述SQL语法树获取所述关键字符信息的验证规则,在所述关键字符信息符合所述验证规则时,执行所述操作指令。本发明还公开了一种数据库操作装置、设备和计算机可读存储介质。本发明具有降低数据库操作的风险性的有益效果。

技术研发人员:刘顺
受保护的技术使用者:平安科技(深圳)有限公司
技术研发日:2020.02.12
技术公布日:2020.06.09

转载请注明原文地址: https://bbs.8miu.com/read-25520.html

最新回复(0)