基于SQL模板的数据库访问控制方法及系统与流程

文档序号:13422364阅读:180来源:国知局
基于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模板的数据库访问控制系统,可包括:

第一获取模块,用于获取用户设置的具有安全风险的结构化查询语言sql语句;

第一模板模块,用于将所述具有安全风险的sql语句按照预置规则模板化,形成黑名单模板,并存储在黑名单模板库中,所述黑名单模板库中包括至少一个所述黑名单模板;

第二模板模块,用于将待检测的目标sql语句按照所述预置规则模板化,形成目标模板;

第一判断模块,用于判断所述目标模板是否存在于所述黑名单模板库中,若所述目标模板存在于所述黑名单模板库中,则判定所述目标sql语句为风险语句。

结合第三方面,在第三方面的第一种可能的实施方式中,所述第一模板模块,包括:

第一去除单元,用于去除所述具有安全风险的sql语句中的可变参数,保留剩余部分作为黑名单模板。

结合第三方面的第一种可能的实施方式,在第三方面的第二种可能的实施方式中,该系统还包括:

阻断模块,用于阻断所述目标sql语句的执行。

本发明实施例第四方面提供了一种基于sql模板的数据库访问控制系统,其特征在于,包括

第二获取模块,用于获取用户设置的标准sql语句;

第三模板模块,用于将所述标准sql语句按照预置规则模板化,形成白名单模板,并存储在白名单模板库中,所述白名单模板库中包括至少一个所述白名单模板;

第四模板模块,用于将待检测的目标sql语句按照所述预置规则模板化,形成目标模板;

第二判断模块,用于判断所述目标模板是否存在于所述白名单模板库中,若所述目标模板不存在于所述白名单模板库中,则判定所述目标sql语句为风险语句。

结合第四方面,在第四方面的第一种可能的实施方式中,所述第三模板模块,包括:

第二去除单元,用于去除所述标准sql语句中的可变参数,保留剩余部分作为白名单模板。

结合第四方面的第一种可能的实施方式,在第四方面的第二种可能的实施方式中,该系统还包括:

阻断模块,用于阻断所述目标sql语句的执行。

从以上技术方案可以看出,本发明实施例具有以下优点:

本发明实施例中,基于sql模板的数据库访问控制系统可以按照预置规则将用户设置的具有安全风险的结构化查询语言sql语句或标准sql语句模板化,形成对应的黑名单模板库及白名单模板库,然后将待检测的目标sql语句按照预置规则模板化,形成目标模板,若目标模板存在于黑名单模板库中或不存在于白名单模板库中,则判定目标sql语句为风险语句,相对于现有技术,无需解析每个sql语句中的关键字、表名、字段值、数据库类型信息、操作类型信息等,解析项目相对较少,提高了检测效率,其次,对于每一个sql语句只需一次解析模板化,无需重复解析,进一步的提高了检测效率。

附图说明

图1为本发明实施例中基于sql模板的数据库访问控制方法的一个实施例示意图;

图2为本发明实施例中基于sql模板的数据库访问控制方法的另一个实施例示意图;

图3为本发明实施例中基于sql模板的数据库访问控制系统的一个实施例示意图;

图4为本发明实施例中基于sql模板的数据库访问控制系统的另一个实施例示意图。

具体实施方式

本发明实施例提供了基于sql模板的数据库访问控制方法及系统,用于提高sql语句安全检测的效率。

为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。

本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

在实际运用中,由于业务系统发起的操作是有限的,也就是业务系统和数据库之间交互的sql命令是一个有限的集合,从而对应的sql模板集合也是有限的。有鉴于此,可以通过对业务的sql语句模板化,形成对于的模板库,如果待检测语句出现新的sql模板或待检测语句包含在黑名单模板库中,则判定sql语句存在风险。具体的,可以按照预置规则将用户设置的具有安全风险的结构化查询语言sql语句或标准sql语句模板化,形成对应的黑名单模板库及白名单模板库,然后将待检测的目标sql语句按照预置规则模板化,形成目标模板,若目标模板存在于黑名单模板库中或不存在于白名单模板库中,则判定目标sql语句为风险语句。本发明从一个新的维度去控制数据库访问,提出了一种新的风险访问识别、控制的方法更有效地实现对数据库防护,保护数据资产的安全,配置上具有易用性。

为了便于理解,下面对本发明实施例中的具体流程进行描述,请参阅图1,本发明实施例中一种基于sql模板的数据库访问控制方法的一个实施例可包括:

101、获取用户设置的具有安全风险的sql语句;

用户在实际审查sql语句过程中,是基于已识别出的具有安全风险的sql语句来识别待检测的sql语句。用户可以基于已识别的具有安全风险的sql语句,预先配置具有安全风险的所有sql语句为黑名单语句,以进一步实现对这一类的sql语句进行识别,基于sql模板的数据库访问控制系统可以获取到用户设置的具有安全风险的sql语句,用户设置的安全风险的sql语句,可以根据用户的需求进行设置,具体不做限定。

102、将具有安全风险的sql语句按照预置规则模板化,形成黑名单模板;

基于sql模板的数据库访问控制系统在获取到用户设置的具有安全风险的sql语句之后,可以按照预置的规则将具有安全风险的sql语句模板化,模板化之后的所有黑名单模板存储在黑名单模板库中,以供安全检测过程中对比调用。

具体的模板化过程可以为:去除具有安全风险的sql语句中的可变参数,保留剩余部分作为黑名单模板。sql语句中往往会包含变量,变量的取值对应的为可变参数,例如,语句:“select*fromusernamewherename=’user1’”中的’user1’为可变参数,可以提取语句中的可变参数,用一个统一的参数替换可变参数或直接空缺,具体此处不做限定,若采用’$’统一替换所有语句中的可变参数,则提取出的对应的模板为:“select*fromusernamewherename=’$’”。将此模板设置为黑名单模板后,然后检测所有请求中sql语句,如select*fromusernamewherename=’user2’等,name字段的值无论user1、user2、user3…,均可判定为风险语句。

可以理解的是,黑名单模板库的建设是一个可持续化的过程,用户可以根据实际的需求可持续化的更新黑名单模板库中的黑名单模板,具体的黑名单模板库中的黑名单模板也可以根据用户的业务种类及所属的业务领域的不同而合理设置,具体此处不做限定。

103、将待检测的目标sql语句按照预置规则模板化,形成目标模板;

在设置了对应的黑名单模板库之后,基于sql模板的数据库访问控制系统可以将待检测的目标sql语句按照预置规则模板化,形成目标模板,以进行进一步的检测,具体的模板化过程与步骤102中的类似,此处不再赘述。

104、判断目标模板是否存在于黑名单模板库中,若目标模板存在于黑名单模板库中,则判定目标sql语句为风险语句。

判断目标模板是否存在于黑名单模板库中,若目标模板存在于黑名单模板库中,则判定目标sql语句为风险语句,进一步的,还可以根据用户的设置执行对应的安全策略,例如,基于sql模板的数据库访问控制系统可以阻断目标sql语句的执行,也可以向用户发出安全风险提示,具体的此处不做限定。

本发明实施例中,基于sql模板的数据库访问控制系统可以按照预置规则将用户设置的具有安全风险的结构化查询语言sql语句模板化,形成对应的黑名单模板库,然后将待检测的目标sql语句按照预置规则模板化,形成目标模板,若目标模板存在于黑名单模板库中,则判定目标sql语句为风险语句,相对于现有技术,无需解析每个sql语句中的关键字、表名、字段值、数据库类型信息、操作类型信息等,解析项目相对较少,提高了检测效率,其次,对于每一个sql语句只需一次解析模板化,无需重复解析,进一步的提高了检测效率。

上述实施例从设置sql语句黑名单的角度出发,提供了一种基于sql模板的数据库访问控制方法,在实际运用中,由于业务系统发起的操作是有限的,也就是业务系统和数据库之间交互的sql命令是一个有限的集合,从而对应的sql模板集合也是有限的。从设置sql语句白名单的角度出发,也可以实现基于sql模板的数据库访问控制,具体的,请参阅图2,本发明实施例中,基于sql模板的数据库访问控制方法的另一个实施可包括:

201、获取用户设置的标准sql语句;

在实际运用中,由于业务系统发起的操作是有限的,也就是说,业务系统和数据库之间交互的sql命令是一个有限的集合,即需要的sql命令也可以是有限的,为了保障数据的安全,可以将业务系统可能发起的业务操作对应的sql语句命令基线化,即,对于同一个业务系统发起的同一种类型的业务操作,可以设置预定的一种或多种sql语句操作命令作为标准sql语句,数据库在执行该种类型的业务操作时,不接受种类型的业务操作对应的预定的sql语句操作命令之外的任何sql命令,以此来降低数据库访问的风险性,具体的基线化的标准sql语句由用户进行设定,基于sql模板的数据库访问控制系统可以获取用户设置的标准sql语句。

202、将标准sql语句按照预置规则模板化,形成白名单模板,并存储在白名单模板库中;

基于sql模板的数据库访问控制系统在获取到用户设置的标准sql语句之后,可以按照预置的规则将具有安全风险的sql语句模板化,形成白名单模板,模板化之后的所有白名单模板存储在白名单模板库中,以供安全检测过程中对比调用。

具体的模板化过程可以为:去除标准sql语句中的可变参数,保留剩余部分作为白名单模板。sql语句中往往会包含变量,变量的取值对应的为可变参数,例如,语句:“select*fromusernamewherename=’user1’”中的’user1’为可变参数,可以提取语句中的可变参数,用一个统一的参数替换可变参数或直接空缺,具体此处不做限定,可以采用’$’统一替换所有语句中的可变参数,则提取出的对应的模板为:“select*fromusernamewherename=’$’”。将此模板设置为白名单模板,然后检测所有请求中sql语句,如select*fromusernamewherename=’user2’等,name字段的值无论user1、user2、user3…,均可判定为正常语句。

可以理解的是,白名单模板库的建设是一个可持续化的过程,用户可以根据实际的需求可持续化的更新白名单模板库中的白名单模板,具体的白名单模板库中的白名单模板也可以根据用户的业务种类及所属的业务领域的不同而合理设置,具体此处不做限定。

进一步的,在用户每次更新白名单模板库时,基于sql模板的数据库访问控制系统可以对更新前后的白名单模板库进行标识,以区分更新前后的白名单模板库,并根据用户的选择来设置安全检测过程中所采用的白名单模板库。

203、将待检测的目标sql语句按照预置规则模板化,形成目标模板;

在设置了对应的白名单模板库之后,基于sql模板的数据库访问控制系统可以将待检测的目标sql语句按照预置规则模板化,形成目标模板,以进行进一步的检测,具体的模板化过程与步骤202中的类似,此处不再赘述。

204、判断目标模板是否存在于白名单模板库中,若目标模板不存在于白名单模板库中,则判定目标sql语句为风险语句。

对于同一个业务系统发起的同一种类型的业务操作,可以设置预定的一种或多种sql语句操作命令作为标准sql语句,在执行该种类型的业务操作时,不接受种类型的业务操作对应的预定的sql语句操作命令之外的任何sql命令,以此来降低数据库访问的风险性,同时将业务系统的所有类型的业务操作的标准sql语句对应的白名单模板保存在白名单模板库中。

在获取到目标模板之后,基于sql模板的数据库访问控制可以判断目标模板是否存在于白名单模板库中,若目标模板不存在于白名单模板库中,则判定目标sql语句为风险语句。进一步的,还可以根据用户的设置执行对应的安全策略,例如,基于sql模板的数据库访问控制系统可以阻断目标sql语句的执行,也可以向用户发出安全风险提示,具体的此处不做限定。

本发明实施例中,基于sql模板的数据库访问控制系统可以按照预置规则将用户设置的标准sql语句模板化,形成对应的白名单模板库,然后将待检测的目标sql语句按照预置规则模板化,形成目标模板,若目标模板不存在于白名单模板库中,则判定目标sql语句为风险语句,相对于现有技术,无需解析每个sql语句中的关键字、表名、字段值、数据库类型信息、操作类型信息等,解析项目相对较少,提高了检测效率,其次,对于每一个sql语句只需一次解析模板化,无需重复解析,进一步的提高了检测效率。

上述实施例对本发明实施例中的基于sql模板的数据库访问控制方法进行了描述,下面将对本发明实施例中基于sql模板的数据库访问控制系统进行描述,请参阅图3,本发明实施例中基于sql模板的数据库访问控制系统的一个实施例可包括:

第一获取模块301,用于获取用户设置的具有安全风险的结构化查询语言sql语句;

第一模板模块302,用于将所述具有安全风险的sql语句按照预置规则模板化,形成黑名单模板,并存储在黑名单模板库中,所述黑名单模板库中包括至少一个所述黑名单模板;

第二模板模块303,用于将待检测的目标sql语句按照所述预置规则模板化,形成目标模板;

第一判断模块304,用于判断所述目标模板是否存在于所述黑名单模板库中,若所述目标模板存在于所述黑名单模板库中,则判定所述目标sql语句为风险语句。

可选的,本实施例中的第一模板模块302,还可以进一步包括:

第一去除单元3021,用于去除所述具有安全风险的sql语句中的可变参数,保留剩余部分作为黑名单模板。

可选的,本实施例中的基于sql模板的数据库访问控制系统还可以包括:

阻断模块305,用于阻断所述目标sql语句的执行。

在判定目标sql语句为风险语句之后,进一步的,还可以根据用户的设置执行对应的安全策略,例如,基于sql模板的数据库访问控制系统可以阻断目标sql语句的执行,也可以向用户发出安全风险提示,具体的此处不做限定。

本发明实施例中的基于sql模板的数据库访问控制系统的具体功能与上述图1所示的实施例中描述的内容类似,具体此处不再赘述。

请参阅图4,本发明实施例中基于sql模板的数据库访问控制系统的另一个实施例可包括:

第二获取模块401,用于获取用户设置的标准sql语句;

第三模板模块402,用于将所述标准sql语句按照预置规则模板化,形成白名单模板,并存储在白名单模板库中,所述白名单模板库中包括至少一个所述白名单模板;

第四模板模块403,用于将待检测的目标sql语句按照所述预置规则模板化,形成目标模板;

第二判断模块404,用于判断所述目标模板是否存在于所述白名单模板库中,若所述目标模板不存在于所述白名单模板库中,则判定所述目标sql语句为风险语句。

可选的,本实施例中的第三模板模块402还可以进一步包括:

第二去除单元4021,用于去除所述标准sql语句中的可变参数,保留剩余部分作为白名单模板。

可选的,本实施例中的基于sql模板的数据库访问控制系统还可以包括:

阻断模块405,用于阻断目标sql语句的执行。

在判定目标sql语句为风险语句之后,进一步的,还可以根据用户的设置执行对应的安全策略,例如,基于sql模板的数据库访问控制系统可以阻断目标sql语句的执行,也可以向用户发出安全风险提示,具体的此处不做限定。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1