【专利交易】【专利代理】【商标和版权申请】【高新技术企业认定】Tel:18215660330

数据库安全访问控制方法和系统的制作方法

xiaoxiao2020-07-22  2

【专利交易】【专利代理】【商标和版权申请】【高新技术企业认定】Tel:18215660330

数据库安全访问控制方法和系统的制作方法
【专利摘要】本发明公开了一种数据库安全访问控制方法和系统,该方法包括:从数据请求源向目标数据库服务器发送的数据访问请求中,解析出待执行SQL语句,并解析出数据请求源的标识信息、目标数据库服务器的标识信息作为数据访问请求的属性信息;根据该属性信息,从访问控制规则库中查找出与该属性信息相对应的访问控制规则后,将待执行SQL语句与访问控制规则中的SQL语句库进行比较;若比较结果为:待执行SQL语句为SQL语句库中的非法SQL语句,则阻断数据请求源对目标数据库服务器的访问。应用本发明,可以防止SQL注入攻击,增强数据库系统的安全控制强度。
【专利说明】数据库安全访问控制方法和系统
【技术领域】
[0001]本发明涉及网络安全【技术领域】,尤其涉及一种数据库安全访问控制方法和系统。【背景技术】
[0002]随着计算机的普及和计算机网络的发展,数据的共享日益增强,按照数据结构来组织、存储和管理数据的数据库系统的使用越来越广泛。例如,银行的客户信息、信息技术公司的源代码;产品销售公司的销售信息等都可以集中存放在相应的数据库中。
[0003]而随着信息技术的快速发展,信息的高度共享和迅速传递在为使用者带来巨大便利的同时,也随之带来了系统入侵、信息泄密、信息更改或破坏等网络安全问题。因此,对数据库系统进行统一的管理和控制以保证数据库的安全性和完整性的DBMS (DatabaseManagement System,数据库管理系统),在网络安全【技术领域】扮演着越来越重要的角色。
[0004]目前,数据库管理系统一般采用C/S(Client/Server,客户端/服务器)结构,其中,数据库设置于服务器端,客户操作数据库时,需通过数据访问程序向后台数据库进行访问。而目前的数据库安全访问控制,一般可以采用用户标识和鉴别、数据库访问日志的记录审核、扩展存储过程的管理、使用协议的加密、网络连接限制等技术手段进行安全控制。例如,在登录数据库时要求用户输入用户标识(如身份认证、口令认证等),并针对输入的标识进行鉴别审核以及对用户权限控制;通过数据库访问日志详细记录所有账号的登录事件,根据定期检查审核日志,及时发现可疑的登录事件发生;对网络连接的IP地址(Internet Protocol,互联网协议)进行限制,只保证自己允许的IP能够访问,且拒绝其他IP进行端口连接,以此对来自网络上的安全威胁进行有效的控制。然而,通过上述现有的安全访问控制手段,无法针对欺骗服务器执行恶意的SQL (Structured Query Language,结构化查询语言)命令的SQL注入攻击进行有效控制,导致现有的安全访问控制的存在安全漏洞。
[0005]因此,有必要提供一种能够防止数据库系统的SQL注入攻击,增强数据库系统的安全控制强度的访问控制方法。

【发明内容】

[0006]本发明实施例提供了一种数据库安全访问控制方法和系统,用以防止SQL注入攻击,增强数据库系统的安全控制强度。
[0007]根据本发明的一个方面,提供了一种数据库安全访问控制方法,包括:
[0008]从数据请求源向目标数据库服务器发送的数据访问请求中,解析出待执行结构化查询语言SQL语句,并解析出所述数据请求源的标识信息、所述目标数据库服务器的标识信息作为所述数据访问请求的属性信息;
[0009]根据所述数据访问请求的属性信息,从访问控制规则库中查找出与所述属性信息相对应的访问控制规则后,将解析出的待执行SQL语句与查找出的访问控制规则中的SQL语句库进行比较;[0010]若比较结果为:所述待执行SQL语句为所述SQL语句库中的正常SQL语句,则将所述数据访问请求向所述目标数据库服务器进行发送;
[0011 ] 若比较结果为:所述待执行SQL语句为所述SQL语句库中的非法SQL语句,则阻断所述数据请求源对所述目标数据库服务器的访问。
[0012]较佳地,在所述将所述待执行SQL语句与所述访问控制规则中的SQL语句库进行比较后,还包括:
[0013]若比较结果为:所述待执行SQL语句既不是所述SQL语句库中的正常SQL语句,也不是所述SQL语句库中的非法SQL语句,则:
[0014]向管理员发送判别SQL语句的提示信息;并
[0015]接收到所述管理员输入的SQL语句判别指示信息后,根据所述SQL语句判别指示信息,执行相应操作:
[0016]若所述SQL语句判别指示信息具体为正常SQL语句的判别指示信息,则将所述待执行SQL语句作为正常SQL语句存储至所述SQL语句库中,并将所述数据访问请求向所述目标数据库服务器进行发送;
[0017]若所述SQL语句判别指示信息具体为非法SQL语句的判别指示信息,则将所述待执行SQL语句作为非法SQL语句存储至所述SQL语句库中,并阻断所述数据请求源对所述目标数据库服务器的访问。
[0018]较佳地,所述访问控制规则库是预先设置的:
[0019]针对每个目标数据库服务器,以如下方法在所述访问控制规则库中设置涉及该目标数据库服务器的访问控制规则:
[0020]对于每个允许访问该目标数据库服务器的数据请求源,将该目标数据库服务器的标识信息与该数据请求源的标识信息作为属性信息后,将该目标数据库服务器针对该数据请求源所允许执行的SQL语句,作为对应该属性信息的访问控制规则中的SQL语句库中的正常SQL语句;将该目标数据库服务器针对该数据请求源不允许执行的SQL语句,作为对应该属性信息的访问控制规则中的SQL语句库中的非法SQL语句。
[0021]较佳地,所述解析出的待执行SQL语句是一个或多个;以及
[0022]在所述将解析出的待执行SQL语句与所述访问控制规则中的SQL语句库进行比较之前,还包括:
[0023]将所述解析出的各待执行SQL语句进行动态缓存后,针对每个待执行SQL语句,解析出该待执行SQL语句所携带的SQL命令的操作类型;并将携带有相同操作类型的待执行SQL语句作为一组SQL序列;以及
[0024]所述将解析出的待执行SQL语句与所述访问控制规则中的SQL语句库进行比较,具体包括:
[0025]针对每组SQL序列,按照设定的顺序,将该组SQL序列中的待执行SQL语句依次与所述访问控制规则中的SQL语句库进行比较。
[0026]较佳地,所述标识信息具体为IP地址;以及
[0027]所述从所述数据访问请求中解析出的属性信息还包括:所述数据请求源的端口信息、所述目标数据库服务器的端口信息、以及所述数据请求源与所述目标数据库服务器之间的传输层协议。[0028]根据本发明的另一个方面,还提供了一种数据库安全访问控制系统,包括:
[0029]数据访问请求解析模块,用于从数据请求源向目标数据库服务器发送的数据访问请求中,解析出待执行SQL语句,并解析出所述数据请求源的标识信息、所述目标数据库服务器的标识信息作为所述数据访问请求的属性信息;
[0030]访问控制规则查询模块,用于根据所述数据访问请求解析模块发送的数据访问请求的属性信息,从访问控制规则库中查找与所述属性信息相对应的访问控制规则;
[0031]SQL语句过滤模块,用于将所述数据访问请求解析模块解析出的待执行SQL语句与所述访问控制规则查询模块查找出的访问控制规则中的SQL语句库进行比较,并输出比较结果;
[0032]安全访问控制模块,用于根据所述SQL语句过滤模块输出的比较结果,执行与所述比较结果相对应的操作:若比较结果为:所述待执行SQL语句为所述SQL语句库中的正常SQL语句,则将所述数据访问请求向所述目标数据库服务器进行发送;若比较结果为:所述待执行SQL语句为所述SQL语句库中的非法SQL语句,则阻断所述数据请求源对所述目标数据库服务器的访问。
[0033]较佳地,所述安全访问控制模块还用于若接收的比较结果为:所述待执行SQL语句既不是所述SQL语句库中的正常SQL语句,也不是所述SQL语句库中的非法SQL语句,则向管理员发送判别SQL语句的提示信息;并接收到所述管理员输入的SQL语句判别指示信息后,根据所述SQL语句判别指示信息,执行相应操作:
[0034]若所述SQL语句判别指示信息具体为正常SQL语句的判别指示信息,则将所述待执行SQL语句作为正常SQL语句存储至所述SQL语句库中,并将所述数据访问请求向所述目标数据库服务器进行发送;
[0035]若所述SQL语句判别指示信息具体为非法SQL语句的判别指示信息,则将所述待执行SQL语句作为非法SQL语句存储至所述SQL语句库中,并阻断所述数据请求源对所述目标数据库服务器的访问。
[0036]较佳地,所述系统还包括:
[0037]访问控制规则设置模块,用于针对每个目标数据库服务器,在所述访问控制规则库中设置涉及该目标数据库服务器的访问控制规则:对于每个允许访问该目标数据库服务器的数据请求源,将该目标数据库服务器的标识信息与该数据请求源的标识信息作为属性信息后,将该目标数据库服务器针对该数据请求源所允许执行的SQL语句,作为对应该属性信息的访问控制规则中的SQL语句库中的正常SQL语句;将该目标数据库服务器针对该数据请求源不允许执行的SQL语句,作为对应该属性信息的访问控制规则中的SQL语句库中的非法SQL语句。
[0038]较佳地,所述数据访问请求解析模块解析出的待执行SQL语句是一个或多个;以及所述系统还包括:
[0039]SQL语句分组模块,用于将所述数据访问请求解析模块解析出的各待执行SQL语句进行动态缓存后,针对每个待执行SQL语句,解析出该待执行SQL语句所携带的SQL命令的操作类型;并将携带有相同操作类型的待执行SQL语句作为一组SQL序列;以及
[0040]所述SQL语句过滤模块具体用于针对所述SQL语句分组模块确定出的每组SQL序列,按照设定的顺序,将该组SQL序列中的待执行SQL语句依次与所述访问控制规则查询模块查找出的访问控制规则中的SQL语句库进行比较。
[0041]较佳地,所述标识信息具体为IP地址;以及
[0042]所述数据访问请求解析模块具体用于从数据请求源向目标数据库服务器发送的数据访问请求中,解析出待执行结构化查询语言SQL语句,并将进一步解析出的所述数据请求源的IP地址、所述数据请求源的端口信息、所述目标数据库服务器的IP地址、所述目标数据库服务器的端口信息、以及所述数据请求源与所述目标数据库服务器之间的传输层协议,均作为所述数据访问请求的属性信息。
[0043]本发明实施例的技术方案中,通过从数据请求源向目标数据库服务器发送的数据访问请求中,解析出待执行SQL语句,并解析出数据请求源的标识信息、目标数据库服务器的标识信息作为数据访问请求的属性信息;根据数据访问请求的属性信息,从访问控制规则库中查找出与属性信息相对应的访问控制规则后,将解析出的待执行SQL语句与访问控制规则中的SQL语句库进行比较,可以针对欺骗服务器执行非法SQL命令的SQL注入攻击进行有效控制,增强了安全访问控制的强度。
【专利附图】

【附图说明】
[0044]图1为本发明实施例的访问控制规则库的设置方法的流程示意图;
[0045]图2为本发明实施例的数据库安全访问控制方法的流程示意图;
[0046]图3为本发明实施例的数据库安全访问控制系统的内部结构图。
【具体实施方式】
[0047]为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举出优选实施例,对本发明进一步详细说明。然而,需要说明的是,说明书中列出的许多细节仅仅是为了使读者对本发明的一个或多个方面有一个透彻的理解,即便没有这些特定的细节也可以实现本发明的这些方面。
[0048]本申请使用的“模块”、“系统”等术语旨在包括与计算机相关的实体,例如但不限于硬件、固件、软硬件组合、软件或者执行中的软件。例如,模块可以是,但并不仅限于:处理器上运行的进程、处理器、对象、可执行程序、执行的线程、程序和/或计算机。举例来说,计算设备上运行的应用程序和此计算设备都可以是模块。一个或多个模块可以位于执行中的一个进程和/或线程内。
[0049]本发明的发明人发现,现有的数据库系统基本上都是使用SQL (Structured QueryLanguage,结构化查询语言)语言来构建的;而通过上述现有的数据库的安全访问控制手段,并没有对用户输入的存在安全隐患的语句进行有效隔离。这样,用户在通过上述现有的安全控制后,仍可以通过构建特殊的输入作为参数传入Web应用程序进行SQL注入攻击;而这些输入大都是SQL语法里的一些组合,通过执行SQL语句进而执行攻击者所要进行的操作。也就是说,数据库系统受到SQL注入攻击的主要原因在于没有对用户输入的数据访问请求中的SQL语句进行分析。
[0050]因此,本发明的发明人考虑到,可以针对目标访问数据库的数据访问请求中携带的入侵信息进行阻止或过滤,防止恶意SQL语句的渗透;具体地,可以对数据请求源发送的SQL语句进行实时解析,判断是否为非法SQL语句,并且对存在安全隐患的SQL语句进行有效隔离,防止出现SQL注入攻击。相比现有无法防止SQL注入攻击,本发明提供的技术方案,可以增强数据库系统的安全控制强度。
[0051 ] 事实上,对于不同的目标数据库服务器,每个目标数据库服务器具有与之对应的唯一的标识(比如IP地址);对于不同的数据请求源,每个数据请求源具有与之对应的标识(比如IP地址);且数据请求源与目标数据库服务器之间的访问还涉及预设的数据访问请求的传输层协议。因此,进一步地,本发明的发明人还考虑到,可以对数据请求源的IP地址、端口以及传输数据访问请求的传输层协议等多项内容进行同时访问控制,防止非正常访问端的恶意访问,以此增强数据库系统的安全控制强度。
[0052]下面结合附图详细说明本发明的技术方案。
[0053]本发明实施例中,在进行数据库的安全访问控制之前,需要预先设置访问控制规则库。具体地,可以针对数据库系统中的每个目标数据库服务器,在访问控制规则库中设置涉及该目标数据库服务器的访问控制规则。其中,设置该目标数据库服务器的访问控制规则的方法,其具体流程如图1所示,可以包括如下步骤:
[0054]SlOl:针对每个目标数据库服务器,统计出该目标数据库服务器的标识信息、以及每个允许访问该目标数据库服务器的数据请求源及其标识信息。
[0055]事实上,数据库系统中的每个目标数据库服务器都具有与之对应的唯一 IP地址。因此,目标数据库服务器的标识信息具体可以是该目标数据库服务器的IP地址。具体地,可以将每个目标数据库服务器的IP地址(本文中也可以称为目标IP地址)作为各自的标识信息;继而,针对每个标识信息,统计出允许访问与该标识信息对应的目标数据库服务器的若干数据请求源及其IP地址(本文中也可以称为源IP地址);并针对统计出的每个数据请求源,将该数据请求源的IP地址作为该数据请求源的标识信息。
[0056]更优地,还可以将其他用于区分不同目标数据库服务器的信息与目标IP地址一起作为目标数据库服务器的标识信息。例如,可以将目标数据库服务器的端口信息(本文中也可以称为目标端口信息)与目标IP地址一起作为该目标数据库服务器的标识信息。相应地,可以将其他用于区分不同数据请求源的信息与源IP地址一起作为数据请求源的标识信息,例如,可以将数据请求源的端口信息(本文中也可以称为源端口信息)与源IP地址一起作为该数据请求源的标识信息。
[0057]S102:对于每个允许访问该目标数据库服务器的数据请求源,将该目标数据库服务器的标识信息与该数据请求源的标识信息作为属性信息。
[0058]具体地,对于每个目标数据库服务器,在由步骤SlOl统计出的允许访问该目标数据库服务器的每个数据请求源后,可以将该数据请求源的标识信息、该目标数据库服务器的标识信息作为该数据请求源向该目标数据库服务器发送的数据访问请求的属性信息。例如,可以针对每个数据请求源,将该数据请求源的源IP地址、目标数据库服务器的目标IP地址作为该数据请求源向该目标数据库服务器发送的数据访问请求的属性信息。更优地,还可以将该数据请求源的源IP地址、源端口信息、目标数据库服务器的目标IP地址、目标端口信息作为该数据请求源向该目标数据库服务器发送的数据访问请求的属性信息。
[0059]实际应用中,数据请求源在向数据库服务器申请数据访问的过程中,其向该数据库服务器发送的数据访问请求需通过预设的传输层协议进行传输,防止数据请求源通过其他非正常传输层协议来传输数据访问请求引起非法访问。因此,作为一种更优的实施方式,在步骤S102之前,对于每个目标数据库服务器,针对统计出的允许访问该目标数据库服务器的每个数据请求源,还可以统计出该数据请求源与该目标数据库服务器之间允许传输数据访问请求的传输层协议。并将该数据请求源与该目标数据库服务器之间允许传输数据访问请求的传输层协议、源IP地址、源端口信息、目标IP地址、目标端口信息作为该数据请求源向该目标数据库服务器发送的数据访问请求的属性信息。其中,统计出的传输层协议具体可以是传输层协议号。实际应用中,数据请求源向目标数据库服务器发送的数据访问请求的属性信息具体可以包括:源IP地址、源端口信息、目标IP地址、目标端口信息、传输层协议号。
[0060]S103:根据该数据请求源向该目标数据库服务器发送的数据访问请求的属性信息,统计出该目标数据库服务器针对该数据请求源所允许执行的SQL语句、以及不允许执行的SQL语句。
[0061]具体地,对于每个目标数据库服务器,针对由步骤SlOl统计出的允许访问该目标数据库服务器的每个数据请求源,根据该数据请求源向该目标数据库服务器发送的数据访问请求的属性信息,从目标数据库服务器的数据库访问日志中确定出满足该属性信息情况下该目标数据库服务器针对该数据请求源所允许执行的SQL语句,以及该目标数据库服务器针对该数据请求源不允许执行的SQL语句。
[0062]S104:将上述允许执行的SQL语句作为对应该属性信息的访问控制规则中的SQL语句库中的正常SQL语句,并将上述不允许执行的SQL语句,作为对应该属性信息的访问控制规则中的SQL语句库中的非法SQL语句。
[0063]具体地,与该属性信息相对应的访问控制规则中的SQL语句库具体包括:正常SQL语句库和非法SQL语句库;而数据访问请求中所携带的SQL语句具体可以包括:该目标数据库服务器针对该数据请求源所允许执行的SQL语句、以及不允许执行的SQL语句。因此,可以将该目标数据库服务器针对该数据请求源所允许执行的SQL语句作为正常SQL语句存储至与该属性信息相对应的访问控制规则中的正常SQL语句库中;。同时,可以将该目标数据库服务器针对该数据请求源不允许执行的SQL语句作为非法SQL语句存储至与该属性信息相对应的访问控制规则中的非法SQL语句库中。更优地,还可以将本领域技术人员公认的非攻击型SQL语句作为正常SQL语句存储至正常SQL语句库中,将本领域技术人员公认的攻击型SQL语句作为非法SQL语句存储至非法SQL语句库中。
[0064]实际应用中,无论是正常SQL语句还是非法SQL语句,其所携带的SQL命令具体包括:操作类型和操作对象。其中,操作对象具体可以为数据库表、数据库表列、或数据库等。相应地,操作类型具体可以为:“SELECT” (即从数据库表中获取数据)、“UPDATE” (即更新数据库表中的数据)、“DELETE” (即从数据库表中删除数据)、“INSERT INTO” (即向数据库表中插入数据)、“CREATE DATABASE” (即创建新数据库)、“ALTER DATABASE” (即修改数据库)、“CREATE TABLE” (即创建数据库表)、“ALTER TABLE” (即变更数据库表)、或“DROPTABLE” (即删除数据库表)等等。
[0065]事实上,与属性信息相对应的访问控制规则实际上是对与该属性信息中的源IP地址对应的数据请求源所允许执行的操作类型和操作对象、以及不允许执行的操作类型和操作对象进行限定。例如,在满足该属性信息的条件下,与该属性信息中的源IP地址对应的数据请求源所允许执行的操作类型包括:“SELECT”、和“UPDATE”,而不允许执行的操作类型包括:“UPDATE”和“DELETE” ;且对于操作类型“SELECT”,其允许访问的操作对象为所有数据库表;而对于操作类型“UPDATE”,其允许访问的操作对象为指定的数据库表“tb_user_info”,其禁止访问的操作对象为除数据库表“tb_user_info”以外的所有操作对象。
[0066]基于上述预先设置的访问控制规则库,本发明实施例提供了一种数据库安全访问控制系统,该系统进行数据库安全访问控制的方法,具体流程如图2所示,可以包括如下步骤:
[0067]S201:接收到数据请求源向目标数据库服务器发送的数据访问请求后,从接收的数据访问请求中解析出数据请求源的标识信息、目标数据库服务器的标识信息、以及待执行SQL语句。
[0068]具体地,数据库安全访问控制系统在接收到数据请求源向目标数据库服务器发送的数据访问请求后,可以从中解析出数据请求源的标识信息和待访问的目标数据库服务器的标识信息、以及待执行SQL语句。其中,数据请求源的标识信息具体可以为源IP地址;目标数据库服务器的标识信息具体为目标IP地址。实际应用中,还可以从接收的数据访问请求中解析出数据请求源的源端口信息、目标数据库服务器的目标端口信息、以及数据请求源与目标数据库服务器之间允许传输数据访问请求的传输层协议。
[0069]S202:将解析出的数据请求源的标识信息、目标数据库服务器的标识信息作为接收的数据访问请求的属性信息。
[0070]更优地,数据库安全访问控制系统还可以将解析出的源端口信息、目标端口信息、以及数据请求源与目标数据库服务器之间允许传输数据访问请求的传输层协议与解析出的数据请求源的标识信息、目标数据库服务器的标识信息共同作为接收的数据访问请求的属性信息。
[0071]S203:根据数据访问请求的属性信息,从访问控制规则库中查找与数据访问请求的属性信息相对应的访问控制规则;若查找到,则执行步骤S204 ;否则,执行步骤S206。
[0072]具体地,数据库安全访问控制系统可以根据数据访问请求的属性信息,从预先设置的访问控制规则库中查找是否存在同时与属性信息中的源IP地址、目标IP地址等信息相匹配的访问控制规则,即与该属性信息相对应的访问控制规则。若查找到,则执行步骤S204 ;否则,执行步骤S206,阻断数据请求源对目标数据库服务器的访问。
[0073]实际应用中,在数据访问请求的属性信息包含了源IP地址、源端口信息、目标IP地址、目标端口信息、以及传输层协议时,可以从预先设置的访问控制规则库中,查找是否存在同时与源IP地址、源端口信息、目标IP地址、目标端口信息、以及传输层协议相匹配的访问控制规则,若存在,则执行步骤S204 ;否则,执行步骤S206,阻断数据请求源对目标数据库服务器的访问。
[0074]具体地,数据库安全访问控制系统可以首先根据属性信息中的目标IP地址和源IP地址,从预先设置的访问控制规则库中查找是否存在同时与目标IP地址、源IP地址相匹配的访问控制规则,若不存在,则执行步骤S206 ;否则,从查找出的与目标IP地址、源IP地址相匹配的若干访问控制规则中继续查找是否存在同时与源端口信息、目标端口信息相匹配的访问控制规则,若不存在,则执行步骤S206;否则,从查找出的与源端口信息、目标端口信息相匹配的若干访问控制规则中继续查找是否存在与传输协议相匹配的访问控制规贝1J,若存在,则执行步骤S204 ;否则,执行步骤S206,阻断数据请求源对目标数据库服务器的访问。这样,通过步骤S203筛选出与数据访问请求的属性信息相匹配的访问控制规则,限定了只有配置了访问控制规则中的发送规则才能通过上述多层安全访问控制,防止非法数据请求源的访问、和合法数据请求源的非法访问。
[0075]S204:将解析出的待执行SQL语句与查找出的访问控制规则中的SQL语句库进行比较,若待执行SQL语句为SQL语句库中的正常SQL语句,则执行步骤S205 ;否则,执行步骤 S206。
[0076]具体地,通过步骤S203查找出的与接收的数据访问请求的属性信息相对应的访问控制规则中,存储有与该属性信息相对应的SQL语句库;且与该属性信息相对应的SQL语句库包括:存储有若干个正常SQL语句的正常SQL语句库、以及存储有若干个非法SQL语句的非法SQL语句库。因此,可以将解析出的待执行SQL语句分别与查找出的访问控制规则中的正常SQL语句库中的正常SQL语句、以及非法SQL语句库中的非法SQL语句进行比较。实际应用中,可以将解析出的待执行SQL语句所携带的操作对象及其操作类型,依次与SQL语句库中的每个正常SQL语句所携带的操作对象及其操作类型、以及每个非法SQL语句所携带的操作对象及其操作类型进行比较。
[0077]若比较结果为:待执行SQL语句为正常SQL语句库中的正常SQL语句,则执行步骤
5205。
[0078]若比较结果为:待执行SQL语句为非法SQL语句库中的非法SQL语句,则执行步骤
5206,阻断数据请求源对目标数据库服务器的访问。
[0079]若比较结果为:待执行SQL语句既不是正常SQL语句库中的正常SQL语句,也不是非法SQL语句库中的非法SQL语句,则执行步骤S206,阻断数据请求源对目标数据库服务器的访问。
[0080]更优地,本发明实施例中,为了增强数据库安全访问控制的强度,还可以对访问控制规则中的SQL语句库进行补充和更新。具体地,在比较结果为:待执行SQL语句既不是正常SQL语句库中的正常SQL语句,也不是非法SQL语句库中的非法SQL语句时,可以进一步向管理员发送判别SQL语句的提示信息。这样,管理员可以根据提示信息来判断待执行SQL语句是否为目标数据库服务器针对该数据请求源所允许执行的SQL语句,若是,则管理员可以输入正常SQL语句的判别指示信息;否则,即判断出待执行SQL语句为目标数据库服务器针对该数据请求源不允许执行的SQL语句时,则管理员可以输入非法SQL语句的判别指示信息。其中,判别SQL语句的提示信息具体可以采用本领域技术人员常用的技术手段来发送,例如,可以以邮件的形式发送、或通过显示界面向管理员进行反馈。
[0081]继而,接收到管理员输入的SQL语句判别指示信息后,可以根据接收的SQL语句判别指示信息,执行相应操作。具体地,若SQL语句判别指示信息具体为正常SQL语句的判别指示信息,则可以将待执行SQL语句作为正常SQL语句存储至查找出的访问控制规则中的SQL语句库中,并执行步骤S205。若SQL语句判别指示信息具体为非法SQL语句的判别指示信息,则可以将待执行SQL语句作为非法SQL语句存储至SQL语句库中,并执行步骤S206。
[0082]实际应用中,数据请求源向目标数据库服务器发送的数据访问请求中解析出的待执行SQL语句可能是一个,也可能是多个。因此,为了提高安全访问控制的处理速度,作为一种更优的实施方式,本发明实施例中,可以在执行步骤S204,将解析出的待执行SQL语句与查找出的访问控制规则中的SQL语句库进行比较之前,将解析出的各待执行SQL语句进行动态缓存后,针对每个待执行SQL语句,解析出该待执行SQL语句所携带的SQL命令的操作类型;并将携带有相同操作类型的待执行SQL语句作为一组SQL序列。例如,可以针对相同操作类型的待执行SQL语句以堆栈的方式进行分组处理,得到修改分组、删除分组等。继而,对于每组SQL序列,可以按照设定的顺序,将该组SQL序列中的待执行SQL语句依次与所述访问控制规则中的SQL语句库进行比较。例如,针对该分组内的每个待执行SQL语句,以先进先出的策略,将该分组内的待执行SQL语句依次与查找出的访问控制规则中的SQL语句库进行比较,得到比较结果。
[0083]步骤S205:将数据访问请求向目标数据库服务器进行发送。
[0084]步骤S206:阻断数据请求源对目标数据库服务器的访问。
[0085]本发明实施例中,关于如何将数据访问请求向目标数据库服务器进行发送,以及如何阻断数据请求源对目标数据库服务器的访问均可以采用本领域技术人员常用的技术手段即可,在此不再赘述。
[0086]本发明实施例中,关于上述数据库安全访问控制系统,其内部结构如图3所示,具体可以包括:数据访问请求解析模块301、访问控制规则查询模块302、SQL语句过滤模块303、安全访问控制模块304。
[0087]其中,数据访问请求解析模块301用于从数据请求源向目标数据库服务器发送的数据访问请求中,解析出待执行SQL语句,并解析出数据请求源的标识信息、目标数据库服务器的标识信息作为该数据访问请求的属性信息。
[0088]其中,数据请求源的标识信息具体可以为数据请求源的IP地址;目标数据库服务器的标识信息具体可以为目标数据库服务器的IP地址。
[0089]具体地,数据访问请求解析模块从数据请求源向目标数据库服务器发送的数据访问请求中,解析出待执行结构化查询语言SQL语句,并将进一步解析出的数据请求源的IP地址、数据请求源的端口信息、目标数据库服务器的IP地址、目标数据库服务器的端口信息、以及数据请求源与所述目标数据库服务器之间的传输层协议,均作为数据访问请求的
属性信息。
[0090]访问控制规则查询模块302用于根据数据访问请求解析模块301发送的数据访问请求的属性信息,从访问控制规则库中查找与该属性信息相对应的访问控制规则。
[0091 ] SQL语句过滤模块303用于将数据访问请求解析模块301解析出的待执行SQL语句与访问控制规则查询模块302查找出的访问控制规则中的SQL语句库进行比较,并输出比较结果。
[0092]安全访问控制模块304用于根据SQL语句过滤模块303输出的比较结果,执行与该比较结果相对应的操作。
[0093]若比较结果为:待执行SQL语句为SQL语句库中的正常SQL语句,则将数据访问请求向目标数据库服务器进行发送。
[0094]若比较结果为:待执行SQL语句为SQL语句库中的非法SQL语句,则阻断所述数据请求源对所述目标数据库服务器的访问。
[0095]若比较结果为:待执行SQL语句既不是SQL语句库中的正常SQL语句,也不是SQL语句库中的非法SQL语句,则向管理员发送判别SQL语句的提示信息;并接收到所述管理员输入的SQL语句判别指示信息后,根据所述SQL语句判别指示信息,执行相应操作。[0096]具体地,若SQL语句判别指示信息具体为正常SQL语句的判别指示信息,则将待执行SQL语句作为正常SQL语句存储至SQL语句库中,并将数据访问请求向目标数据库服务器进行发送。若SQL语句判别指示信息具体为非法SQL语句的判别指示信息,则将待执行SQL语句作为非法SQL语句存储至SQL语句库中,并阻断数据请求源对目标数据库服务器的访问。
[0097]本发明实施例中,访问控制规则查询模块302中的访问控制规则库是预先设置的。因此,更优地,上述数据库安全访问控制系统还包括:访问控制规则设置模块305。
[0098]访问控制规则设置模块305用于针对每个目标数据库服务器,在访问控制规则库中设置涉及该目标数据库服务器的访问控制规则。具体地,对于每个允许访问该目标数据库服务器的数据请求源,将该目标数据库服务器的标识信息与该数据请求源的标识信息作为属性信息后,将该目标数据库服务器针对该数据请求源所允许执行的SQL语句,作为对应该属性信息的访问控制规则中的SQL语句库中的正常SQL语句;将该目标数据库服务器针对该数据请求源不允许执行的SQL语句,作为对应该属性信息的访问控制规则中的SQL语句库中的非法SQL语句。
[0099]实际应用中,数据访问请求解析模块301解析出的待执行SQL语句可能是一个,也可能是多个。因此,更优地,本发明实施例中,上述数据库安全访问控制系统还包括:SQL语句分组模块(未在图中标明)。
[0100]SQL语句分组模块用于将数据访问请求解析模块301解析出的各待执行SQL语句进行动态缓存后,针对每个待执行SQL语句,解析出该待执行SQL语句所携带的SQL命令的操作类型;并将携带有相同操作类型的待执行SQL语句作为一组SQL序列。继而,SQL语句过滤模块303可以针对SQL语句分组模块确定出的每组SQL序列,按照设定的顺序,将该组SQL序列中的待执行SQL语句依次与访问控制规则查询模块302查找出的访问控制规则中的SQL语句库进行比较。
[0101 ] 本发明实施中,关于数据库安全访问控制系统中的各模块具体是如何对数据请求源发送的数据访问请求进行安全控制,可以参照上述数据库安全访问控制方法的具体流程,在此不再详述。
[0102]本发明的技术方案中,通过从数据请求源向目标数据库服务器发送的数据访问请求中,解析出待执行SQL语句,并解析出数据请求源的标识信息、目标数据库服务器的标识信息作为数据访问请求的属性信息;根据数据访问请求的属性信息,从访问控制规则库中查找出与属性信息相对应的访问控制规则后,将解析出的待执行SQL语句与访问控制规则中的SQL语句库进行比较,可以针对欺骗服务器执行非法SQL命令的SQL注入攻击进行有效控制,增强了安全访问控制的强度。
[0103]本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读取存储介质中,如:R0M/RAM、磁碟、光盘等。
[0104]以上所述仅是本发明的优选实施方式,应当指出,对于本【技术领域】的普通技术人员来说,在不脱离本发明原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
【权利要求】
1.一种数据库安全访问控制方法,其特征在于,包括: 从数据请求源向目标数据库服务器发送的数据访问请求中,解析出待执行结构化查询语言SQL语句,并解析出所述数据请求源的标识信息、所述目标数据库服务器的标识信息作为所述数据访问请求的属性信息; 根据所述数据访问请求的属性信息,从访问控制规则库中查找出与所述属性信息相对应的访问控制规则后,将解析出的待执行SQL语句与查找出的访问控制规则中的SQL语句库进行比较; 若比较结果为:所述待执行SQL语句为所述SQL语句库中的正常SQL语句,则将所述数据访问请求向所述目标数据库服务器进行发送; 若比较结果为:所述待执行SQL语句为所述SQL语句库中的非法SQL语句,则阻断所述数据请求源对所述目标数据库服务器的访问。
2.如权利要求1所述的方法,其特征在于,在所述将所述待执行SQL语句与所述访问控制规则中的SQL语句库进行比较后,还包括: 若比较结果为:所述待执行SQL语句既不是所述SQL语句库中的正常SQL语句,也不是所述SQL语句库中的非法SQL语句,则: 向管理员发送判别SQL语句的提示信息;并 接收到所述管理员输 入的SQL语句判别指示信息后,根据所述SQL语句判别指示信息,执行相应操作: 若所述SQL语句判别指示信息具体为正常SQL语句的判别指示信息,则将所述待执行SQL语句作为正常SQL语句存储至所述SQL语句库中,并将所述数据访问请求向所述目标数据库服务器进行发送; 若所述SQL语句判别指示信息具体为非法SQL语句的判别指示信息,则将所述待执行SQL语句作为非法SQL语句存储至所述SQL语句库中,并阻断所述数据请求源对所述目标数据库服务器的访问。
3.如权利要求1所述的方法,其特征在于,所述访问控制规则库是预先设置的: 针对每个目标数据库服务器,以如下方法在所述访问控制规则库中设置涉及该目标数据库服务器的访问控制规则: 对于每个允许访问该目标数据库服务器的数据请求源,将该目标数据库服务器的标识信息与该数据请求源的标识信息作为属性信息后,将该目标数据库服务器针对该数据请求源所允许执行的SQL语句,作为对应该属性信息的访问控制规则中的SQL语句库中的正常SQL语句;将该目标数据库服务器针对该数据请求源不允许执行的SQL语句,作为对应该属性信息的访问控制规则中的SQL语句库中的非法SQL语句。
4.如权利要求1所述的方法,其特征在于,所述解析出的待执行SQL语句是一个或多个;以及 在所述将解析出的待执行SQL语句与所述访问控制规则中的SQL语句库进行比较之前,还包括: 将所述解析出的各待执行SQL语句进行动态缓存后,针对每个待执行SQL语句,解析出该待执行SQL语句所携带的SQL命令的操作类型;并将携带有相同操作类型的待执行SQL语句作为一组SQL序列;以及所述将解析出的待执行SQL语句与所述访问控制规则中的SQL语句库进行比较,具体包括: 针对每组SQL序列,按照设定的顺序,将该组SQL序列中的待执行SQL语句依次与所述访问控制规则中的SQL语句库进行比较。
5.如权利要求1-4任一所述的方法,其特征在于,所述标识信息具体为IP地址;以及 所述从所述数据访问请求中解析出的属性信息还包括:所述数据请求源的端口信息、 所述目标数据库服务器的端口信息、以及所述数据请求源与所述目标数据库服务器之间的传输层协议。
6.一种数据库安全访问控制系统,其特征在于,包括: 数据访问请求解析模块,用于从数据请求源向目标数据库服务器发送的数据访问请求中,解析出待执行SQL语句,并解析出所述数据请求源的标识信息、所述目标数据库服务器的标识信息作为所述数据访问请求的属性信息; 访问控制规则查询模块,用于根据所述数据访问请求解析模块发送的数据访问请求的属性信息,从访问控制规则库中查找与所述属性信息相对应的访问控制规则; SQL语句过滤模块,用于将所述数据访问请求解析模块解析出的待执行SQL语句与所述访问控制规则查询模块查找出的访问控制规则中的SQL语句库进行比较,并输出比较结果; 安全访问控制模块,用于根据所述SQL语句过滤模块输出的比较结果,执行与所述比较结果相对应的操作:若比较结果为:所述待执行SQL语句为所述SQL语句库中的正常SQL语句,则将所述数据访问请求向所述目标数据库服务器进行发送;若比较结果为:所述待执行SQL语句为所述SQL语句库中的非法SQL语句,则阻断所述数据请求源对所述目标数据库服务器的访问。
7.如权利要求6所述的系统,其特征在于, 所述安全访问控制模块还用于若接收的比较结果为:所述待执行SQL语句既不是所述SQL语句库中的正常SQL语句,也不是所述SQL语句库中的非法SQL语句,则向管理员发送判别SQL语句的提示信息;并接收到所述管理员输入的SQL语句判别指示信息后,根据所述SQL语句判别指示信息,执行相应操作: 若所述SQL语句判别指示信息具体为正常SQL语句的判别指示信息,则将所述待执行SQL语句作为正常SQL语句存储至所述SQL语句库中,并将所述数据访问请求向所述目标数据库服务器进行发送; 若所述SQL语句判别指示信息具体为非法SQL语句的判别指示信息,则将所述待执行SQL语句作为非法SQL语句存储至所述SQL语句库中,并阻断所述数据请求源对所述目标数据库服务器的访问。
8.如权利要求6所述的系统,其特征在于,还包括: 访问控制规则设置模块,用于针对每个目标数据库服务器,在所述访问控制规则库中设置涉及该目标数据库服务器的访问控制规则:对于每个允许访问该目标数据库服务器的数据请求源,将该目标数据库服务器的标识信息与该数据请求源的标识信息作为属性信息后,将该目标数据库服务器针对该数据请求源所允许执行的SQL语句,作为对应该属性信息的访问控制规则中的SQL语句库中的正常SQL语句;将该目标数据库服务器针对该数据请求源不允许执行的SQL语句,作为对应该属性信息的访问控制规则中的SQL语句库中的非法SQL语句。
9.如权利要求6所述的系统,其特征在于,所述数据访问请求解析模块解析出的待执行SQL语句是一个或多个;以及所述系统还包括: SQL语句分组模块,用于将所述数据访问请求解析模块解析出的各待执行SQL语句进行动态缓存后,针对每个待执行SQL语句,解析出该待执行SQL语句所携带的SQL命令的操作类型;并将携带有相同操作类型的待执行SQL语句作为一组SQL序列;以及 所述SQL语句过滤模块具体用于针对所述SQL语句分组模块确定出的每组SQL序列,按照设定的顺序,将该组SQL序列中的待执行SQL语句依次与所述访问控制规则查询模块查找出的访问控制规则中的SQL语句库进行比较。
10.如权利要求6-9任一所述的系统,其特征在于,所述标识信息具体为IP地址;以及 所述数据访问请求解析模块具体用于从数据请求源向目标数据库服务器发送的数据 访问请求中,解析出待执行结构化查询语言SQL语句,并将进一步解析出的所述数据请求源的IP地址、所述数据请求源的端口信息、所述目标数据库服务器的IP地址、所述目标数据库服务器的端口信息、以及所述数据请求源与所述目标数据库服务器之间的传输层协议,均作为所述数据访问请求的属性信息。
【文档编号】G06F17/30GK104008349SQ201410175511
【公开日】2014年8月27日 申请日期:2014年4月28日 优先权日:2014年4月28日
【发明者】张 浩, 彭磊, 栗君 申请人:国家电网公司, 北京国电通网络技术有限公司, 北京中电飞华通信股份有限公司

【专利交易】【专利代理】【商标和版权申请】【高新技术企业认定】Tel:18215660330

最新回复(0)