处理数据库操作请求的方法、设备和系统的制作方法

文档序号:6515779阅读:131来源:国知局
处理数据库操作请求的方法、设备和系统的制作方法
【专利摘要】本发明公开了一种处理数据库操作请求的方法、设备和系统,其中所述方法包括步骤:接收对于数据库的操作请求;解析所述操作请求,以判断所述操作请求是否包含符合预先定义的第一规则的关键词;在所述操作请求包含所述关键词的情况下,判断所述操作请求是否符合预先定义的第二规则中与所述关键词相关联的子规则;以及在所述操作请求不符合与所述关键词相关联的子规则的情况下,将所述操作请求发送到数据库服务器。
【专利说明】处理数据库操作请求的方法、设备和系统
【技术领域】
[0001]本发明涉及数据库技术,尤其涉及一种处理数据库操作请求的方法、设备和系统。【背景技术】
[0002]在计算机时代,出现了专门用于存储、管理数据的数据库系统,而且数据库系统在网络应用上日益普及。一般来说,数据库系统中会包括一个或者多个数据库,专门用于存储某个应用的数据。在关系型数据库中,数据一般分布在多张数据表中,每张数据表存在某个方面的数据。例如在一个常用的网络应用的数据库中,会一张数据表存储用户的基本信息,有另一张数据表存 储用户的登录信息等。
[0003]随着时代的发展和技术的进步,目前人类社会每天产生的数据量相当惊人,海量数据造成关系型数据库(例如诸如MySQL)的数据表容量越来越大,一张表的条目(记录)数可达几千万甚至上亿条。
[0004]随着数据库的广泛使用,越来越多的开发人员投入其中,由于开发人员业务水平参差不齐,在开发过程中经常会出现对数据库进行误操作和错误使用的情况,从而会对数据库的整体性能造成影响,严重时甚至造成数据的丢失。因此,如何恰当使用数据库技术(特别是数据库查询语言和管理工具)成为目前急需解决的问题。
[0005]当前,对于数据库的安全性以及优化并未出现较为理想的解决方案,一般采取以下的措施:提高开发人员自身的数据库技术能力,并且提高开发人员进行开发时的细心程度;所有数据库程序语言的操作语句在上线前,均由专业的数据库管理员进行审核,才能上线。然而,这样的措施对开发人员的业务能力要求较高,无形中提高了开发成本,并且依赖于开发人员的细心程度,难以确保质量,另外,无法杜绝人为恶意通过Web服务器直连数据库进行的危险操作,增加了安全风险。

【发明内容】

[0006]鉴于上述问题,提出了本发明,以便提供一种克服上述问题或者至少部分地解决上述问题的处理数据库操作请求的方法、设备和系统。
[0007]依据本发明的一个方面,提供了一种处理数据库操作请求的方法,包括步骤:接收对于数据库的操作请求;解析该操作请求,以判断该操作请求是否包含符合预先定义的第一规则的关键词;在该操作请求包含该关键词的情况下,判断该操作请求是否符合预先定义的第二规则中与该关键词相关联的子规则;以及在该操作请求不符合与该关键词相关联的子规则的情况下,将该操作请求发送到数据库服务器。
[0008]可选地,在根据本发明的实施例的处理数据库操作请求的方法中,该预先定义的第一规则包含适于对该数据库进行操作的数据库程序语言的操作语句中的一个或多个动
ο
[0009]可选地,在根据本发明的实施例的处理数据库操作请求的方法中,该预先定义的第二规则包含一个或者多个子规则,每个子规则与该第一规则中的动词相关联,并涉及数据库程序语言的操作语句中与该动词相关联的子句。
[0010]可选地,在根据本发明的实施例的处理数据库操作请求的方法中,在该操作请求不包含该关键词的情况下,返回操作请求错误的提示。
[0011]可选地,在根据本发明的实施例的处理数据库操作请求的方法中,在该操作请求符合与该关键词相关联的子规则的情况下,返回操作请求错误的提示。
[0012]可选地,在根据本发明的实施例的处理数据库操作请求的方法中,该数据库程序语言是结构化查询语言SQL,该数据库是MySQL数据库。
[0013]依据本发明的一个方面,提供了一种处理数据库操作请求的设备,包括:应用接口,适于接收对于数据库的操作请求;第一规则判断器,适于解析该操作请求,以判断该操作请求是否包含符合预先定义的第一规则的关键词;第二规则判断器,适于在该操作请求包含该关键词的情况下,判断该操作请求是否符合预先定义的第二规则中与该关键词相关联的子规则;以及数据库接口,适于在该操作请求不符合与该关键词相关联的子规则的情况下,将该操作请求发送到数据库服务器。
[0014]可选地,在根据本发明的实施例的处理数据库操作请求的设备中,该预先定义的第一规则包含适于对该数据库进行操作的数据库程序语言的操作语句中的一个或多个动
ο
[0015]可选地,在根据本发明的实施例的处理数据库操作请求的设备中,该预先定义的第二规则包含一个或者多个子规则,每个子规则与该第一规则中的动词相关联,并涉及数据库程序语言的操作语句中与该动词相关联的子句。
[0016]可选地,在根据本发明的实施例的处理数据库操作请求的设备中,在该操作请求不包含该关键词的情况下,该第一规则判断器返回操作请求错误的提示。
[0017]可选地,在根据本发明的`实施例的处理数据库操作请求的设备中,在该操作请求符合与该关键词相关联的子规则的情况下,该第二规则判断器返回操作请求错误的提示。
[0018]可选地,在根据本发明的实施例的处理数据库操作请求的设备中,该数据库程序语言是结构化查询语言SQL,该数据库是MySQL数据库。
[0019]依据本发明的又一个方面,提供了一种处理数据库操作请求的系统,包括:根据本发明的实施例的处理数据库操作请求的设备;一个或者多个应用服务器,适于向该设备发送对于数据库的操作请求,并且接收该设备返回的操作请求错误的提示;以及数据库服务器,适于接收该设备发送的操作请求。
[0020]本发明提供了上述处理数据库操作请求的方法、设备和系统。根据本发明的实施例,可以接收对于数据库的操作请求,解析该操作请求,以判断该操作请求是否包含符合预先定义的第一规则的关键词,在该操作请求包含该关键词的情况下,判断该操作请求是否符合预先定义的第二规则中与该关键词相关联的子规则,在该操作请求不符合与该关键词相关联的子规则的情况下,将该操作请求发送到数据库服务器。由此,通过利用预先定义的第一规则和第二规则(即,例如如上所述的白名单规则和黑名单规则)对于操作请求进行判断,可以准确地对于数据库操作请求进行识别和区分,从而避免了对于数据库进行误操作或错误的使用,避免了对数据库的整体性能造成影响,杜绝了数据丢失的现象发生。另外,可以防范对于数据库的人为恶意的危险操作,杜绝了数据库安全和性能方面的隐患。再者,可以降低对于数据库开发人员的技术能力要求,降低了开发成本。[0021]上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的【具体实施方式】。
【专利附图】

【附图说明】
[0022]通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
[0023]图1示意性地图示了根据本发明的实施例的处理数据库操作请求的方法的流程图;以及
[0024]图2示意性地图示了根据本发明的实施例的包含处理数据库操作请求的设备、多个数据库服务器、多个应用服务器的系统的框图。
【具体实施方式】
[0025]下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
[0026]图1示意性地图示了根据本发明的实施例的处理数据库操作请求的方法100的流程图。
[0027]根据本发明的实施例,数据库例如可以是MySQL数据库。在下文中,以MySQL数据库为例,对本发明的原理进行描述,然而,这只是为了示例的目的,本发明的范围并不限于此,本发明的原理同样适用于其它类型的数据库,例如IBM DB2, Oracle 10等数据库。
[0028]如图1所示,根据本发明的实施例的处理数据库操作请求的方法100始于步骤S101,其中,接收对于数据库的操作请求。可选地,在步骤SlOl中,例如可以从一个或多个应用服务器接收对于数据库的操作请求。
[0029]根据本发明的实施例,该操作请求可以包括数据库程序语言的操作语句,数据库程序语言例如可以是SQL(Structured Query Language,结构化查询语言),即,该操作请求可以包括SQL语句。然而,SQL语言和SQL语句仅为示例,用于帮助读者理解本发明的原理,本发明的范围并不限于此,而是同样适用于其它适当的数据库程序语言和相对应的语句。
[0030]根据本发明的实施例,接下来,执行步骤S103,其中,解析操作请求,以判断该操作请求是否包含符合预先定义的第一规则的关键词。
[0031]根据本发明的实施例,该预先定义的第一规则可以包含适于对该数据库进行操作的数据库程序语言的操作语句中的一个或多个动词。可选地,该预先定义的第一规则可以是白名单规则,其可以包含适于对数据库进行操作的一个或多个动词。以SQL语句为例,这样的符合白名单规则的动词例如可以包括SELECT、DELETE、UPDATE、INSERT、REPLACE、SHOW、SET、START、COMMIT、ROLLBACK、BEGIN、DESC等,而白名单规则的列表例如可以通过配置文件进行配置。
[0032]根据本发明的实施例,在操作请求包含上述关键词的情况下,S卩,在操作请求符合该白名单规则的情况下,可以执行步骤S105,其中,判断该操作请求是否符合预先定义的第二规则中与该关键词相关联的子规则。根据本发明的实施例,该预先定义的第二规则可以包含一个或者多个子规则,每个子规则与该第一规则中的动词相关联,并涉及数据库程序语言的操作语句中与该动词相关联的子句。例如,这些子规则中的每一个与上述动词SELECT、DELETE、UPDATE、INSERT、REPLACE、SHOW、SET、START、COMMIT、ROLLBACK、BEGIN、DESC等分别相关联,并且涉及与这些动词相关联的子句。以动词DELETE为例,与其相关联的其中一个子规则例如可以是:不包含WHERE条件从句,即,如果包含动词DELETE的操作请求中不包含WHERE条件从句,那么就符合预先定义的第二规则中与DELETE相关联的子规则。
[0033]可选地,该预先定义的第二规则可以是黑名单规则,即,适于对数据库进行操作的数据库程序语言的操作语句不应该符合该预先定义的第二规则,或者反过来说,符合该预先定义的第二规则的操作语句属于非法语句。
[0034]可选地,根据本发明的实施例,在操作请求不包含上述关键词的情况下,即,在操作请求不符合该白名单规则的情况下,方法100还可以包括步骤:返回操作请求错误的提示,例如,可以向一个或者多个应用服务器返回操作请求错误的提示。
[0035]根据本发明的实施例,在步骤S105之后,在操作请求不符合与关键词相关联的子规则的情况下,即,在操作请求不符合该黑名单规则的情况下,可以执行步骤S107,其中,将该操作请求发送到数据库服务器。
[0036]可选地,根据本发明的实施例,在操作请求符合与关键词相关联的子规则的情况下,即,在操作请求符合该黑名单规则的情况下,方法100还可以包括步骤:返回操作请求错误的提示,例如,可以 向一个或者多个应用服务器返回操作请求错误的提示。
[0037]根据本发明的实施例,上述数据库服务器可以是从数据库服务器和/或主数据库服务器。即,根据本发明的原理,(I)可以在多个从数据库服务器中分配对于数据库的操作请求,将操作请求分配给多个从数据库服务器之一;(2)也可以在多个主数据库服务器中分配对于数据库的操作请求,将操作请求分配给多个主数据库服务器之一;(3)还可以在一个或多个从数据库服务器以及一个或多个主数据库服务器中分配对于数据库的操作请求,将操作请求分配给其中的一个从数据库服务器或者一个主数据库服务器。
[0038]下面以一些简单的操作请求为例,来描述上述各步骤的处理,本领域技术人员应当理解,这些示例的描述仅仅是为了帮助读者理解本发明的原理,而并非用于限制本发明,本发明的范围并不限于此。
[0039]首先给出第一个示例,在步骤SlOl中,接收对于数据库的操作请求,假设该对于数据库的操作请求包括SQL语句“DELETE FROM TABLE”,在上述步骤S103中,会解析该操作请求,发现该操作请求包含符合上述预先定义的第一规则的关键词DELETE,即,该操作请求包含适于对于数据库进行操作的动词DELETE。于是,可以执行步骤S105,其中,判断操作请求是否符合预先定义的第二规则中与该关键词DELETE相关联的子规则。如上所述,与动词DELETE相关联的一个子规则可以是:不包含WHERE条件从句,由于上述SQL语句“DELETEFROM TABLE”不包含WHERE条件从句,因此符合预先定义的第二规则中与DELETE相关联的子规则,故该操作请求属于非法的操作请求,需要执行返回操作请求错误的提示的步骤,例如,可以向一个或者多个应用服务器返回操作请求错误的提示。而如果该操作请求包括例如“DELETE WHERE…”的SQL语句,该操作请求就不符合与关键词DELETE相关联的子规则了,就可以执行步骤S107,即,将该操作请求发送到数据库服务器。
[0040]下面给出上述预先定义的第二规则的代码的示例,同样,这些代码仅用于帮助读
者理解本发明的原理,而并非用于限制本发明,本发明的范围并不限于此。
[0041]
【权利要求】
1.一种处理数据库操作请求的方法(100),包括步骤: 接收对于数据库的操作请求(SlOl); 解析所述操作请求,以判断所述操作请求是否包含符合预先定义的第一规则的关键词(S103); 在所述操作请求包含所述关键词的情况下,判断所述操作请求是否符合预先定义的第二规则中与所述关键词相关联的子规则(S105);以及 在所述操作请求不符合与所述关键词相关联的子规则的情况下,将所述操作请求发送到数据库服务器(S107)。
2.如权利要求1所述的方法,其中所述预先定义的第一规则包含适于对所述数据库进行操作的数据库程序语言的操作语句中的一个或多个动词。
3.如权利要求2所述的方法,其中所述预先定义的第二规则包含一个或者多个子规贝U,每个子规则与所述第一规则中的动词相关联,并涉及数据库程序语言的操作语句中与所述动词相关联的子句。
4.如权利要求1至3中的任一项所述的方法,其中在所述操作请求不包含所述关键词的情况下,返回操作请求错误的提示。
5.如权利要求1至3中的任一项所述的方法,其中在所述操作请求符合与所述关键词相关联的子规则的情况 下,返回操作请求错误的提示。
6.如权利要求1至3中的任一项所述的方法,其中所述数据库程序语言是结构化查询语言SQL,所述数据库是MySQL数据库。
7.—种处理数据库操作请求的设备(200),包括: 应用接口(201),适于接收对于数据库的操作请求; 第一规则判断器(203),适于解析所述操作请求,以判断所述操作请求是否包含符合预先定义的第一规则的关键词; 第二规则判断器(205),适于在所述操作请求包含所述关键词的情况下,判断所述操作请求是否符合预先定义的第二规则中与所述关键词相关联的子规则;以及 数据库接口(207),适于在所述操作请求不符合与所述关键词相关联的子规则的情况下,将所述操作请求发送到数据库服务器。
8.如权利要求7所述的设备,其中所述预先定义的第一规则包含适于对所述数据库进行操作的数据库程序语言的操作语句中的一个或多个动词。
9.如权利要求8所述的设备,其中所述预先定义的第二规则包含一个或者多个子规贝U,每个子规则与所述第一规则中的动词相关联,并涉及数据库程序语言的操作语句中与所述动词相关联的子句。
10.一种处理数据库操作请求的系统(1000),包括: 如权利要求7-9所述的设备(200); 一个或者多个应用服务器(300-1,…,300-n),适于向所述设备(200)发送对于数据库的操作请求,并且接收所述设备(200)返回的操作请求错误的提示;以及 数据库服务器(400-1,…,400-n),适于接收所述设备(200)发送的操作请求。
【文档编号】G06F17/30GK103761233SQ201310489387
【公开日】2014年4月30日 申请日期:2013年10月18日 优先权日:2013年10月18日
【发明者】陈超, 桂勇哲, 代兵, 朱超, 王超 申请人:北京奇虎科技有限公司, 奇智软件(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1