CN103761233A - 处理数据库操作请求的方法、设备和系统 - Google Patents

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

Info

Publication number
CN103761233A
CN103761233A CN201310489387.7A CN201310489387A CN103761233A CN 103761233 A CN103761233 A CN 103761233A CN 201310489387 A CN201310489387 A CN 201310489387A CN 103761233 A CN103761233 A CN 103761233A
Authority
CN
China
Prior art keywords
rule
operation requests
database
keyword
predefined
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
Application number
CN201310489387.7A
Other languages
English (en)
Inventor
陈超
桂勇哲
代兵
朱超
王超
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Qihoo Technology Co Ltd
Qizhi Software Beijing Co Ltd
Original Assignee
Beijing Qihoo Technology Co Ltd
Qizhi Software Beijing Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Qihoo Technology Co Ltd, Qizhi Software Beijing Co Ltd filed Critical Beijing Qihoo Technology Co Ltd
Priority to CN201310489387.7A priority Critical patent/CN103761233A/zh
Publication of CN103761233A publication Critical patent/CN103761233A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种处理数据库操作请求的方法、设备和系统,其中所述方法包括步骤:接收对于数据库的操作请求;解析所述操作请求,以判断所述操作请求是否包含符合预先定义的第一规则的关键词;在所述操作请求包含所述关键词的情况下,判断所述操作请求是否符合预先定义的第二规则中与所述关键词相关联的子规则;以及在所述操作请求不符合与所述关键词相关联的子规则的情况下,将所述操作请求发送到数据库服务器。

Description

处理数据库操作请求的方法、设备和系统
技术领域
本发明涉及数据库技术,尤其涉及一种处理数据库操作请求的方法、设备和系统。
背景技术
在计算机时代,出现了专门用于存储、管理数据的数据库系统,而且数据库系统在网络应用上日益普及。一般来说,数据库系统中会包括一个或者多个数据库,专门用于存储某个应用的数据。在关系型数据库中,数据一般分布在多张数据表中,每张数据表存在某个方面的数据。例如在一个常用的网络应用的数据库中,会一张数据表存储用户的基本信息,有另一张数据表存储用户的登录信息等。
随着时代的发展和技术的进步,目前人类社会每天产生的数据量相当惊人,海量数据造成关系型数据库(例如诸如MySQL)的数据表容量越来越大,一张表的条目(记录)数可达几千万甚至上亿条。
随着数据库的广泛使用,越来越多的开发人员投入其中,由于开发人员业务水平参差不齐,在开发过程中经常会出现对数据库进行误操作和错误使用的情况,从而会对数据库的整体性能造成影响,严重时甚至造成数据的丢失。因此,如何恰当使用数据库技术(特别是数据库查询语言和管理工具)成为目前急需解决的问题。
当前,对于数据库的安全性以及优化并未出现较为理想的解决方案,一般采取以下的措施:提高开发人员自身的数据库技术能力,并且提高开发人员进行开发时的细心程度;所有数据库程序语言的操作语句在上线前,均由专业的数据库管理员进行审核,才能上线。然而,这样的措施对开发人员的业务能力要求较高,无形中提高了开发成本,并且依赖于开发人员的细心程度,难以确保质量,另外,无法杜绝人为恶意通过Web服务器直连数据库进行的危险操作,增加了安全风险。
发明内容
鉴于上述问题,提出了本发明,以便提供一种克服上述问题或者至少部分地解决上述问题的处理数据库操作请求的方法、设备和系统。
依据本发明的一个方面,提供了一种处理数据库操作请求的方法,包括步骤:接收对于数据库的操作请求;解析该操作请求,以判断该操作请求是否包含符合预先定义的第一规则的关键词;在该操作请求包含该关键词的情况下,判断该操作请求是否符合预先定义的第二规则中与该关键词相关联的子规则;以及在该操作请求不符合与该关键词相关联的子规则的情况下,将该操作请求发送到数据库服务器。
可选地,在根据本发明的实施例的处理数据库操作请求的方法中,该预先定义的第一规则包含适于对该数据库进行操作的数据库程序语言的操作语句中的一个或多个动词。
可选地,在根据本发明的实施例的处理数据库操作请求的方法中,该预先定义的第二规则包含一个或者多个子规则,每个子规则与该第一规则中的动词相关联,并涉及数据库程序语言的操作语句中与该动词相关联的子句。
可选地,在根据本发明的实施例的处理数据库操作请求的方法中,在该操作请求不包含该关键词的情况下,返回操作请求错误的提示。
可选地,在根据本发明的实施例的处理数据库操作请求的方法中,在该操作请求符合与该关键词相关联的子规则的情况下,返回操作请求错误的提示。
可选地,在根据本发明的实施例的处理数据库操作请求的方法中,该数据库程序语言是结构化查询语言SQL,该数据库是MySQL数据库。
依据本发明的一个方面,提供了一种处理数据库操作请求的设备,包括:应用接口,适于接收对于数据库的操作请求;第一规则判断器,适于解析该操作请求,以判断该操作请求是否包含符合预先定义的第一规则的关键词;第二规则判断器,适于在该操作请求包含该关键词的情况下,判断该操作请求是否符合预先定义的第二规则中与该关键词相关联的子规则;以及数据库接口,适于在该操作请求不符合与该关键词相关联的子规则的情况下,将该操作请求发送到数据库服务器。
可选地,在根据本发明的实施例的处理数据库操作请求的设备中,该预先定义的第一规则包含适于对该数据库进行操作的数据库程序语言的操作语句中的一个或多个动词。
可选地,在根据本发明的实施例的处理数据库操作请求的设备中,该预先定义的第二规则包含一个或者多个子规则,每个子规则与该第一规则中的动词相关联,并涉及数据库程序语言的操作语句中与该动词相关联的子句。
可选地,在根据本发明的实施例的处理数据库操作请求的设备中,在该操作请求不包含该关键词的情况下,该第一规则判断器返回操作请求错误的提示。
可选地,在根据本发明的实施例的处理数据库操作请求的设备中,在该操作请求符合与该关键词相关联的子规则的情况下,该第二规则判断器返回操作请求错误的提示。
可选地,在根据本发明的实施例的处理数据库操作请求的设备中,该数据库程序语言是结构化查询语言SQL,该数据库是MySQL数据库。
依据本发明的又一个方面,提供了一种处理数据库操作请求的系统,包括:根据本发明的实施例的处理数据库操作请求的设备;一个或者多个应用服务器,适于向该设备发送对于数据库的操作请求,并且接收该设备返回的操作请求错误的提示;以及数据库服务器,适于接收该设备发送的操作请求。
本发明提供了上述处理数据库操作请求的方法、设备和系统。根据本发明的实施例,可以接收对于数据库的操作请求,解析该操作请求,以判断该操作请求是否包含符合预先定义的第一规则的关键词,在该操作请求包含该关键词的情况下,判断该操作请求是否符合预先定义的第二规则中与该关键词相关联的子规则,在该操作请求不符合与该关键词相关联的子规则的情况下,将该操作请求发送到数据库服务器。由此,通过利用预先定义的第一规则和第二规则(即,例如如上所述的白名单规则和黑名单规则)对于操作请求进行判断,可以准确地对于数据库操作请求进行识别和区分,从而避免了对于数据库进行误操作或错误的使用,避免了对数据库的整体性能造成影响,杜绝了数据丢失的现象发生。另外,可以防范对于数据库的人为恶意的危险操作,杜绝了数据库安全和性能方面的隐患。再者,可以降低对于数据库开发人员的技术能力要求,降低了开发成本。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示意性地图示了根据本发明的实施例的处理数据库操作请求的方法的流程图;以及
图2示意性地图示了根据本发明的实施例的包含处理数据库操作请求的设备、多个数据库服务器、多个应用服务器的系统的框图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
图1示意性地图示了根据本发明的实施例的处理数据库操作请求的方法100的流程图。
根据本发明的实施例,数据库例如可以是MySQL数据库。在下文中,以MySQL数据库为例,对本发明的原理进行描述,然而,这只是为了示例的目的,本发明的范围并不限于此,本发明的原理同样适用于其它类型的数据库,例如IBM DB2、Oracle 10等数据库。
如图1所示,根据本发明的实施例的处理数据库操作请求的方法100始于步骤S101,其中,接收对于数据库的操作请求。可选地,在步骤S101中,例如可以从一个或多个应用服务器接收对于数据库的操作请求。
根据本发明的实施例,该操作请求可以包括数据库程序语言的操作语句,数据库程序语言例如可以是SQL(Structured Query Language,结构化查询语言),即,该操作请求可以包括SQL语句。然而,SQL语言和SQL语句仅为示例,用于帮助读者理解本发明的原理,本发明的范围并不限于此,而是同样适用于其它适当的数据库程序语言和相对应的语句。
根据本发明的实施例,接下来,执行步骤S103,其中,解析操作请求,以判断该操作请求是否包含符合预先定义的第一规则的关键词。
根据本发明的实施例,该预先定义的第一规则可以包含适于对该数据库进行操作的数据库程序语言的操作语句中的一个或多个动词。可选地,该预先定义的第一规则可以是白名单规则,其可以包含适于对数据库进行操作的一个或多个动词。以SQL语句为例,这样的符合白名单规则的动词例如可以包括SELECT、DELETE、UPDATE、INSERT、REPLACE、SHOW、SET、START、COMMIT、ROLLBACK、BEGIN、DESC等,而白名单规则的列表例如可以通过配置文件进行配置。
根据本发明的实施例,在操作请求包含上述关键词的情况下,即,在操作请求符合该白名单规则的情况下,可以执行步骤S105,其中,判断该操作请求是否符合预先定义的第二规则中与该关键词相关联的子规则。根据本发明的实施例,该预先定义的第二规则可以包含一个或者多个子规则,每个子规则与该第一规则中的动词相关联,并涉及数据库程序语言的操作语句中与该动词相关联的子句。例如,这些子规则中的每一个与上述动词SELECT、DELETE、UPDATE、INSERT、REPLACE、SHOW、SET、START、COMMIT、ROLLBACK、BEGIN、DESC等分别相关联,并且涉及与这些动词相关联的子句。以动词DELETE为例,与其相关联的其中一个子规则例如可以是:不包含WHERE条件从句,即,如果包含动词DELETE的操作请求中不包含WHERE条件从句,那么就符合预先定义的第二规则中与DELETE相关联的子规则。
可选地,该预先定义的第二规则可以是黑名单规则,即,适于对数据库进行操作的数据库程序语言的操作语句不应该符合该预先定义的第二规则,或者反过来说,符合该预先定义的第二规则的操作语句属于非法语句。
可选地,根据本发明的实施例,在操作请求不包含上述关键词的情况下,即,在操作请求不符合该白名单规则的情况下,方法100还可以包括步骤:返回操作请求错误的提示,例如,可以向一个或者多个应用服务器返回操作请求错误的提示。
根据本发明的实施例,在步骤S105之后,在操作请求不符合与关键词相关联的子规则的情况下,即,在操作请求不符合该黑名单规则的情况下,可以执行步骤S107,其中,将该操作请求发送到数据库服务器。
可选地,根据本发明的实施例,在操作请求符合与关键词相关联的子规则的情况下,即,在操作请求符合该黑名单规则的情况下,方法100还可以包括步骤:返回操作请求错误的提示,例如,可以向一个或者多个应用服务器返回操作请求错误的提示。
根据本发明的实施例,上述数据库服务器可以是从数据库服务器和/或主数据库服务器。即,根据本发明的原理,(1)可以在多个从数据库服务器中分配对于数据库的操作请求,将操作请求分配给多个从数据库服务器之一;(2)也可以在多个主数据库服务器中分配对于数据库的操作请求,将操作请求分配给多个主数据库服务器之一;(3)还可以在一个或多个从数据库服务器以及一个或多个主数据库服务器中分配对于数据库的操作请求,将操作请求分配给其中的一个从数据库服务器或者一个主数据库服务器。
下面以一些简单的操作请求为例,来描述上述各步骤的处理,本领域技术人员应当理解,这些示例的描述仅仅是为了帮助读者理解本发明的原理,而并非用于限制本发明,本发明的范围并不限于此。
首先给出第一个示例,在步骤S101中,接收对于数据库的操作请求,假设该对于数据库的操作请求包括SQL语句“DELETE FROM TABLE”,在上述步骤S103中,会解析该操作请求,发现该操作请求包含符合上述预先定义的第一规则的关键词DELETE,即,该操作请求包含适于对于数据库进行操作的动词DELETE。于是,可以执行步骤S105,其中,判断操作请求是否符合预先定义的第二规则中与该关键词DELETE相关联的子规则。如上所述,与动词DELETE相关联的一个子规则可以是:不包含WHERE条件从句,由于上述SQL语句“DELETE FROM TABLE”不包含WHERE条件从句,因此符合预先定义的第二规则中与DELETE相关联的子规则,故该操作请求属于非法的操作请求,需要执行返回操作请求错误的提示的步骤,例如,可以向一个或者多个应用服务器返回操作请求错误的提示。而如果该操作请求包括例如“DELETE WHERE…”的SQL语句,该操作请求就不符合与关键词DELETE相关联的子规则了,就可以执行步骤S107,即,将该操作请求发送到数据库服务器。
下面给出上述预先定义的第二规则的代码的示例,同样,这些代码仅用于帮助读者理解本发明的原理,而并非用于限制本发明,本发明的范围并不限于此。
Figure BDA0000397788950000071
在上面的代码中,定义了两个黑名单规则,即blacklist[1]和blacklist[2],在实际操作中,会遍历取得上述代码中的每个数据元素,操作请求中的每条语句都会被解析,拆分成若干关键词。如果语句中第一个关键词等于FIRST的值(例如上面的DELETE和SELECT)且不等于FIRST_NOT的值(例如上面的nil,即空值NULL),那么继续向下遍历语句中之后的关键词;如果ANY中有值(非空值),且如果语句中接下来的关键词中出现ANY中的值,则符合预先定义的第二规则(黑名单规则),如果ANY_NOT中有值(例如上面的WHERE和SLEEP(*)),则语句中接下来的关键词中没有出现ANY_NOT中的值,则符合预先定义的第二规则,即符合黑名单规则。其中,“*”可以代表任意字符。
以上面的SQL语句“DELETE FROM TABLE”为例,在运行上述代码中的blacklist[1]部分时,由于语句中的第一个关键词DELETE等于FIRST的值,因此继续向下遍历;而由于语句中接下来的关键词FROM没有出现ANY_NOT的值,因此符合预先定义的第二规则,即符合黑名单规则,需要执行返回操作请求错误的提示的步骤,例如,可以向一个或者多个应用服务器返回操作请求错误的提示。而如果该SQL语句为“DELETEWHERE…”,语句中的第二个关键词出现了blacklist[1]部分中ANY_NOT的值,因此不符合预先定义的第二规则,就可以将该操作请求发送到数据库服务器。
本发明提供了上述处理数据库操作请求的方法。根据本发明的实施例,可以接收对于数据库的操作请求,解析该操作请求,以判断该操作请求是否包含符合预先定义的第一规则的关键词,在该操作请求包含该关键词的情况下,判断该操作请求是否符合预先定义的第二规则中与该关键词相关联的子规则,在该操作请求不符合与该关键词相关联的子规则的情况下,将该操作请求发送到数据库服务器。由此,通过利用预先定义的第一规则和第二规则(即,例如如上所述的白名单规则和黑名单规则)对于操作请求进行判断,可以准确地对于数据库操作请求进行识别和区分,从而避免了对于数据库进行误操作或错误的使用,避免了对数据库的整体性能造成影响,杜绝了数据丢失的现象发生。另外,可以防范对于数据库的人为恶意的危险操作,杜绝了数据库安全和性能方面的隐患。再者,可以降低对于数据库开发人员的技术能力要求,降低了开发成本。
与上述方法100相对应,本发明还提供了一种处理数据库操作请求的设备200。图2示意性地图示了根据本发明的实施例的包含处理数据库操作请求的设备、多个数据库服务器、多个应用服务器的系统的框图。
如图2所示,该设备200包括应用接口201、第一规则判断器203、第二规则判断器205、以及数据库接口207。其中,应用接口201适于接收对于数据库的操作请求,第一规则判断器203适于解析该操作请求,以判断该操作请求是否包含符合预先定义的第一规则的关键词,第二规则判断器205适于在该操作请求包含该关键词的情况下,判断该操作请求是否符合预先定义的第二规则中与该关键词相关联的子规则,数据库接口207适于在该操作请求不符合与该关键词相关联的子规则的情况下,将该操作请求发送到数据库服务器。
根据本发明的实施例,首先,应用接口201接收对于数据库的操作请求。可选地,应用接口201例如可以从一个或多个应用服务器接收对于数据库的操作请求。
根据本发明的实施例,该操作请求可以包括数据库程序语言的操作语句,数据库程序语言例如可以是SQL(Structured Query Language,结构化查询语言),即,该操作请求可以包括SQL语句。然而,SQL语言和SQL语句仅为示例,用于帮助读者理解本发明的原理,本发明的范围并不限于此,而是同样适用于其它适当的数据库程序语言和相对应的语句。
根据本发明的实施例,接下来,第一规则判断器203解析操作请求,以判断该操作请求是否包含符合预先定义的第一规则的关键词。
根据本发明的实施例,该预先定义的第一规则可以包含适于对该数据库进行操作的数据库程序语言的操作语句中的一个或多个动词。可选地,该预先定义的第一规则可以是白名单规则,其可以包含适于对数据库进行操作的一个或多个动词。以SQL语句为例,这样的符合白名单规则的动词例如可以包括SELECT、DELETE、UPDATE、INSERT、REPLACE、SHOW、SET、START、COMMIT、ROLLBACK、BEGIN、DESC等,而白名单规则的列表例如可以通过配置文件进行配置。
根据本发明的实施例,在操作请求包含上述关键词的情况下,即,在操作请求符合该白名单规则的情况下,第二规则判断器205判断该操作请求是否符合预先定义的第二规则中与该关键词相关联的子规则。根据本发明的实施例,该预先定义的第二规则可以包含一个或者多个子规则,每个子规则与该第一规则中的动词相关联,并涉及数据库程序语言的操作语句中与该动词相关联的子句。例如,这些子规则中的每一个与上述动词SELECT、DELETE、UPDATE、INSERT、REPLACE、SHOW、SET、START、COMMIT、ROLLBACK、BEGIN、DESC等分别相关联,并且涉及与这些动词相关联的子句。以动词DELETE为例,与其相关联的其中一个子规则例如可以是:不包含WHERE条件从句,即,如果包含动词DELETE的操作请求中不包含WHERE条件从句,那么就符合预先定义的第二规则中与DELETE相关联的子规则。
可选地,该预先定义的第二规则可以是黑名单规则,即,适于对数据库进行操作的数据库程序语言的操作语句不应该符合该预先定义的第二规则,或者反过来说,符合该预先定义的第二规则的操作语句属于非法语句。
可选地,根据本发明的实施例,在操作请求不包含上述关键词的情况下,即,在操作请求不符合该白名单规则的情况下,第一规则判断器203可以返回操作请求错误的提示,例如,第一规则判断器203可以通过应用接口201向一个或者多个应用服务器返回操作请求错误的提示。
根据本发明的实施例,在操作请求不符合与关键词相关联的子规则的情况下,即,在操作请求不符合该黑名单规则的情况下,数据库接口207可以将该操作请求发送到数据库服务器。
可选地,根据本发明的实施例,在操作请求符合与关键词相关联的子规则的情况下,即,在操作请求符合该黑名单规则的情况下,第二规则判断器205可以返回操作请求错误的提示,例如,第二规则判断器205可以通过应用接口201向一个或者多个应用服务器返回操作请求错误的提示。
根据本发明的实施例,上述数据库服务器可以是从数据库服务器和/或主数据库服务器。即,根据本发明的原理,(1)可以在多个从数据库服务器中分配对于数据库的操作请求,将操作请求分配给多个从数据库服务器之一;(2)也可以在多个主数据库服务器中分配对于数据库的操作请求,将操作请求分配给多个主数据库服务器之一;(3)还可以在一个或多个从数据库服务器以及一个或多个主数据库服务器中分配对于数据库的操作请求,将操作请求分配给其中的一个从数据库服务器或者一个主数据库服务器。
下面以一些简单的操作请求为例,来描述上述各模块的处理,本领域技术人员应当理解,这些示例的描述仅仅是为了帮助读者理解本发明的原理,而并非用于限制本发明,本发明的范围并不限于此。
首先给出第一个示例,应用接口201接收对于数据库的操作请求,假设该对于数据库的操作请求包括SQL语句“DELETE FROM TABLE”,第一规则判断器203会解析该操作请求,发现该操作请求包含符合上述预先定义的第一规则的关键词DELETE,即,该操作请求包含适于对于数据库进行操作的动词DELETE。然后,第二规则判断器205判断操作请求是否符合预先定义的第二规则中与该关键词DELETE相关联的子规则。如上所述,与动词DELETE相关联的一个子规则可以是:不包含WHERE条件从句,由于上述SQL语句“DELETE FROM TABLE”不包含WHERE条件从句,因此符合预先定义的第二规则中与DELETE相关联的子规则,故该操作请求属于非法的操作请求,第二规则判断器205需要执行返回操作请求错误的提示,例如,第二规则判断器205可以通过应用接口201向一个或者多个应用服务器返回操作请求错误的提示。而如果该操作请求包括例如“DELETE WHERE…”的SQL语句,该操作请求就不符合与关键词DELETE相关联的子规则了,数据库接口207就可以将该操作请求发送到数据库服务器。
下面给出上述预先定义的第二规则的代码的示例,同样,这些代码仅用于帮助读者理解本发明的原理,而并非用于限制本发明,本发明的范围并不限于此。
Figure BDA0000397788950000111
在上面的代码中,定义了两个黑名单规则,即blacklist[1]和blacklist[2],在实际操作中,会遍历取得上述代码中的每个数据元素,操作请求中的每条语句都会被解析,拆分成若干关键词。如果语句中第一个关键词等于FIRST的值(例如上面的DELETE和SELECT)且不等于FIRST_NOT的值(例如上面的nil,即空值NULL),那么继续向下遍历语句中之后的关键词;如果ANY中有值(非空值),且如果语句中接下来的关键词中出现ANY中的值,则符合预先定义的第二规则(黑名单规则),如果ANY_NOT中有值(例如上面的WHERE和SLEEP(*)),则语句中接下来的关键词中没有出现ANY_NOT中的值,则符合预先定义的第二规则,即符合黑名单规则。其中,“*”可以代表任意字符。
以上面的SQL语句“DELETE FROM TABLE”为例,在运行上述代码中的blacklist[1]部分时,由于语句中的第一个关键词DELETE等于FIRST的值,因此继续向下遍历;而由于语句中接下来的关键词FROM没有出现ANY_NOT的值,因此符合预先定义的第二规则,即符合黑名单规则,第二规则判断器205需要返回操作请求错误的提示,例如,第二规则判断器205可以通过应用接口201向一个或者多个应用服务器返回操作请求错误的提示。而如果该SQL语句为“DELETE WHERE…”,语句中的第二个关键词出现了blacklist[1]部分中ANY_NOT的值,因此不符合预先定义的第二规则,数据库接口207就可以将该操作请求发送到数据库服务器。
由于上述各设备实施例与前述各方法实施例相对应,因此不再对各设备实施例进行详细描述。
根据本发明的又一方面,还提供了一种处理数据库操作请求的系统1000。参见图2,系统1000包括上述设备200;一个或者多个应用服务器300-1,…,300-n,适于向设备200发送对于数据库的操作请求,并且接收设备200返回的操作请求错误的提示;以及一个或者多个数据库服务器400-1,…,400-n,适于接收设备200发送的操作请求。
c10.如权利要求7至9中的任一项所述的设备,其中在所述操作请求不包含所述关键词的情况下,所述第一规则判断器(203)返回操作请求错误的提示。
c11.如权利要求7至9中的任一项所述的设备,其中在所述操作请求符合与所述关键词相关联的子规则的情况下,所述第二规则判断器(205)返回操作请求错误的提示。
c12.如权利要求7至9中的任一项所述的设备,其中所述数据库程序语言是结构化查询语言SQL,所述数据库是MySQL数据库。
在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的装置中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个装置中。可以把实施例中的若干模块组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者模块中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个装置实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的装置中的一些或者全部模块的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。

Claims (10)

1.一种处理数据库操作请求的方法(100),包括步骤:
接收对于数据库的操作请求(S101);
解析所述操作请求,以判断所述操作请求是否包含符合预先定义的第一规则的关键词(S103);
在所述操作请求包含所述关键词的情况下,判断所述操作请求是否符合预先定义的第二规则中与所述关键词相关联的子规则(S105);以及
在所述操作请求不符合与所述关键词相关联的子规则的情况下,将所述操作请求发送到数据库服务器(S107)。
2.如权利要求1所述的方法,其中所述预先定义的第一规则包含适于对所述数据库进行操作的数据库程序语言的操作语句中的一个或多个动词。
3.如权利要求2所述的方法,其中所述预先定义的第二规则包含一个或者多个子规则,每个子规则与所述第一规则中的动词相关联,并涉及数据库程序语言的操作语句中与所述动词相关联的子句。
4.如权利要求1至3中的任一项所述的方法,其中在所述操作请求不包含所述关键词的情况下,返回操作请求错误的提示。
5.如权利要求1至3中的任一项所述的方法,其中在所述操作请求符合与所述关键词相关联的子规则的情况下,返回操作请求错误的提示。
6.如权利要求1至3中的任一项所述的方法,其中所述数据库程序语言是结构化查询语言SQL,所述数据库是MySQL数据库。
7.一种处理数据库操作请求的设备(200),包括:
应用接口(201),适于接收对于数据库的操作请求;
第一规则判断器(203),适于解析所述操作请求,以判断所述操作请求是否包含符合预先定义的第一规则的关键词;
第二规则判断器(205),适于在所述操作请求包含所述关键词的情况下,判断所述操作请求是否符合预先定义的第二规则中与所述关键词相关联的子规则;以及
数据库接口(207),适于在所述操作请求不符合与所述关键词相关联的子规则的情况下,将所述操作请求发送到数据库服务器。
8.如权利要求7所述的设备,其中所述预先定义的第一规则包含适于对所述数据库进行操作的数据库程序语言的操作语句中的一个或多个动词。
9.如权利要求8所述的设备,其中所述预先定义的第二规则包含一个或者多个子规则,每个子规则与所述第一规则中的动词相关联,并涉及数据库程序语言的操作语句中与所述动词相关联的子句。
10.一种处理数据库操作请求的系统(1000),包括:
如权利要求7-9所述的设备(200);
一个或者多个应用服务器(300-1,…,300-n),适于向所述设备(200)发送对于数据库的操作请求,并且接收所述设备(200)返回的操作请求错误的提示;以及
数据库服务器(400-1,…,400-n),适于接收所述设备(200)发送的操作请求。
CN201310489387.7A 2013-10-18 2013-10-18 处理数据库操作请求的方法、设备和系统 Pending CN103761233A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310489387.7A CN103761233A (zh) 2013-10-18 2013-10-18 处理数据库操作请求的方法、设备和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310489387.7A CN103761233A (zh) 2013-10-18 2013-10-18 处理数据库操作请求的方法、设备和系统

Publications (1)

Publication Number Publication Date
CN103761233A true CN103761233A (zh) 2014-04-30

Family

ID=50528473

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310489387.7A Pending CN103761233A (zh) 2013-10-18 2013-10-18 处理数据库操作请求的方法、设备和系统

Country Status (1)

Country Link
CN (1) CN103761233A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105447408A (zh) * 2015-12-03 2016-03-30 曙光信息产业(北京)有限公司 一种数据保护方法及装置
CN105635046A (zh) * 2014-10-28 2016-06-01 北京启明星辰信息安全技术有限公司 一种数据库命令行过滤、阻断审计方法和装置
CN113419924A (zh) * 2021-08-23 2021-09-21 北京安华金和科技有限公司 一种基于会话保持的数据库操作风险提示处理方法及装置

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105635046A (zh) * 2014-10-28 2016-06-01 北京启明星辰信息安全技术有限公司 一种数据库命令行过滤、阻断审计方法和装置
CN105635046B (zh) * 2014-10-28 2019-05-17 北京启明星辰信息安全技术有限公司 一种数据库命令行过滤、阻断审计方法和装置
CN105447408A (zh) * 2015-12-03 2016-03-30 曙光信息产业(北京)有限公司 一种数据保护方法及装置
CN113419924A (zh) * 2021-08-23 2021-09-21 北京安华金和科技有限公司 一种基于会话保持的数据库操作风险提示处理方法及装置
CN113419924B (zh) * 2021-08-23 2021-12-07 北京安华金和科技有限公司 一种基于会话保持的数据库操作风险提示处理方法及装置

Similar Documents

Publication Publication Date Title
EP3080721B1 (en) Query techniques and ranking results for knowledge-based matching
US9471285B1 (en) Identifying software components in a software codebase
US7676453B2 (en) Partial query caching
CN103744802A (zh) Sql注入攻击的识别方法及装置
CN111352902A (zh) 日志处理方法、装置、终端设备及存储介质
US10296497B2 (en) Storing a key value to a deleted row based on key range density
CN109522341B (zh) 实现基于sql的流式数据处理引擎的方法、装置、设备
US8745062B2 (en) Systems, methods, and computer program products for fast and scalable proximal search for search queries
WO2015088994A1 (en) Building features and indexing for knowledge-based matching
US8850596B2 (en) Data leakage detection in a multi-tenant data architecture
CN114328574A (zh) 一种数据查询方法、装置、电子设备及计算机可读存储介质
CN112446022A (zh) 数据权限控制方法、装置、电子设备及存储介质
CN110618999A (zh) 数据的查询方法及装置、计算机存储介质、电子设备
CN111435406A (zh) 一种纠正数据库语句拼写错误的方法和装置
CN110362404B (zh) 一种基于sql的资源分配方法、装置和电子设备
CN103761233A (zh) 处理数据库操作请求的方法、设备和系统
CN103020196B (zh) 处理数据库操作请求的系统
US8600972B2 (en) Systems and methods for document searching
CN114443701A (zh) 数据流处理方法、电子设备和计算机程序产品
US20150142816A1 (en) Managing Searches for Information Associated with a Message
CN115905274A (zh) 数据处理的方法、装置、电子设备及介质
CN116679889B (zh) Raid设备配置信息的确定方法及装置、存储介质
KR101764290B1 (ko) 개인정보 보안 시스템 및 방법
CN116662373A (zh) 一种数据访问控制方法、装置、设备及介质
CN114334075A (zh) 数据形状置信

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication

Application publication date: 20140430

RJ01 Rejection of invention patent application after publication