一种基于SQL签名的数据库保护方法及系统与流程

文档序号:29950957发布日期:2022-05-07 18:21阅读:125来源:国知局
一种基于SQL签名的数据库保护方法及系统与流程
一种基于sql签名的数据库保护方法及系统
技术领域
1.本发明涉及数据库安全技术领域,特别是涉及一种基于sql签名的数据库保护方法及系统。


背景技术:

2.sql是结构化查询语言(structured query language)的简称,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。在数据库安全领域,sql注入攻击是对数据库进行攻击的最常用手段之一。sql注入,是指通过把sql命令插入到web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的sql命令。
3.目前针对数据库攻击的主要防御方式是根据数据库攻击特征匹配的检测技术;例如拼接型的sql注入攻击,利用注入点在原始的sql语句的中间或后面“插入”、“拼接”上攻击性的sql payload,从而达到非法提取数据等目的,当发现非法payload特征时,如永真注入('or'1'='1')等,即拦截阻断。这种防护方式只能识别已知的恶意命令,对未知的恶意命令无能为力,必须依靠其收集到的恶意命令的特征库。
4.以上通过黑名单方式判断是否存在攻击行为,缺乏对未知攻击的识别能力,无法穷举所有的攻击特征,而且防御往往滞后于攻击;随着技术的演进,攻击的多样化,特征规则也越加复杂难以维护。
5.需要说明的是,在上述背景技术部分公开的信息仅用于对本技术的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。


技术实现要素:

6.本发明的主要目的在于克服上述背景技术的缺陷,提供一种基于sql签名的数据库保护方法及系统。
7.为实现上述目的,本发明采用以下技术方案:
8.一种基于sql签名的数据库保护方法,包括如下步骤:
9.s1、通过在应用服务和数据库服务间建立数据库安全代理网关,利用数据库安全代理网关接收来自应用的数据库访问请求,提取sql语句;
10.s2、分析提取到的sql语句,构造sql语句的ast语法树,解释语义特征,提取sql指纹生成sql签名,以构建合法签名库;
11.s3、利用构建的签名库对所述数据库访问请求的所述sql签名进行比对,以阻断不在所述合法签名库中的非法请求。
12.进一步地:
13.步骤s2中,使用词法分析对sql语句进行分解,得到一个个独立的关键字,并且组织成为关键字链表形式,根据数据库的sql语法,对词法分析后的关键字链表进行语法结构分析,构造出sql语句的ast语法树,并按照所述ast语法树分析该sql语句的语义特征,提取
sql指纹。
14.步骤s2中,所述sql指纹包括命令类型、库表名、输出参数字段名、输入参数字段名、输入字段值、操作符、函数名、子查询中的一种或多种。
15.所述命令类型包括查询、插入、更新、删除。
16.步骤s2中,使用一致性hash算法将提取的sql指纹生成sql签名,其中输入字段值使用统一符号代替。
17.步骤s2中,判断所述数据库安全代理网关是否在学习模式下;若所述数据库安全代理网关在学习模式下,则将所述sql签名存储到所述合法签名库中;若所述数据库安全代理网关不在学习模式下,即在检测模式下,则步骤s3中,利用所述合法签名库对所述sql签名进行比对,判断所述sql签名是否在所述合法签名库,对于不在所述合法签名库中的数据库访问请求进行阻断。
18.步骤s3中,对于不在所述合法签名库中的数据库访问请求,还进行告警。
19.所述数据安全代理网关兼容的关系型数据库包括mysql、oracle、sybase。
20.一种计算机可读存储介质,所述计算机可读存储介质存储的计算机程序由处理器运行时,实现所述的基于sql签名的数据库保护方法。
21.一种基于sql签名的数据库保护系统,包括处理器和计算机可读存储介质,所述计算机可读存储介质存储的计算机程序由所述处理器运行时,实现所述的基于sql签名的数据库保护方法。
22.本发明具有如下有益效果:
23.本发明基于sql签名的数据库保护方法实现了一种以保护为原则的主动防御方法,不依赖攻击特征;该方法通过签名技术建立sql白名单,只有在合法签名库的sql才能被执行,有效提高已知与未知的攻击行为的识别能力。与传统技术相比,本发明基于白名单方式的主动防御方法,是一种以保护为原则不依赖攻击特征的数据库防护方法,根据语法分析能够准确判断sql语句的语义特征提取sql指纹,使用签名技术保证规则的完整性和不可否认性。通过白名单的方式实施防御策略,一方面消除利用漏洞通过改变语法结构进行攻击注入的问题,精准识别应用服务的正常访问行为,从而达到防御已知与未知攻击特征的攻击行为;另一方面,由于应用服务的更新会带来一些新的安全问题,可根据新增业务添加白名单,使得安全运维人员更易于实现可持续的迭代升级策略规则。
附图说明
24.图1为本发明一种实施例的基于sql签名的数据库保护方法整体流程图。
25.图2为本发明一种实施例的正常访问的sql语法解释树示意图。
26.图3为本发明一种实施例的非法访问的sql语法解释树示意图。
具体实施方式
27.以下对本发明的实施方式做详细说明。应该强调的是,下述说明仅仅是示例性的,而不是为了限制本发明的范围及其应用。
28.需要说明的是,当元件被称为“固定于”或“设置于”另一个元件,它可以直接在另一个元件上或者间接在该另一个元件上。当一个元件被称为是“连接于”另一个元件,它可
以是直接连接到另一个元件或间接连接至该另一个元件上。另外,连接既可以是用于固定作用也可以是用于耦合或连通作用。
29.需要理解的是,术语“长度”、“宽度”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明实施例和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。
30.此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多该特征。在本发明实施例的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
31.参阅图1,本发明实施例提供一种基于sql签名的数据库保护方法,包括如下步骤:
32.s1、通过在应用服务和数据库服务间建立数据库安全代理网关,利用数据库安全代理网关接收来自应用的数据库访问请求,提取sql语句;
33.s2、分析提取到的sql语句,构造sql语句的ast语法树,解释语义特征,提取sql指纹生成sql签名,以构建合法签名库,即构建白名单的sql签名库;
34.s3、利用构建的签名库对所述数据库访问请求的所述sql签名进行比对,以阻断不在所述合法签名库中的非法请求,实现sql注入的精准防护。
35.本发明实施例提供的基于sql签名的数据库保护方法是一种以保护为原则不依赖攻击特征的数据库防护方法,根据语法分析能够准确判断sql语句的语义特征提取sql指纹,使用签名技术保证规则的完整性和不可否认性。本发明不存在改动语句就能绕过检测的风险,通过在应用服务和数据库服务间建立数据库安全代理网关,利用数据库网关采集sql语句,使用sql的词法分析与语法分析构造ast语法树,解释语义特征,提取sql指纹生成签名,构建合法签名库,并利用签名库对sql请求的签名进行比对,从而有效地阻断不在签名库中的非法请求,实现sql注入的精准防护。由于本发明通过白名单的方式实施防御策略,一方面不存在利用漏洞通过改变语法结构进行攻击注入的问题,精准识别应用服务的正常访问行为,从而达到防御已知与未知攻击特征的攻击行为;另一方面,由于应用服务的更新会带来一些新的安全问题,可根据新增业务添加白名单,使得安全运维人员更易于实现可持续的迭代升级策略规则。
36.在一些实施例中,所述方法包括以下步骤:
37.步骤1:在应用服务与数据库服务之间配置数据库安全代理网关。
38.步骤2:利用数据库代理网关接收来自应用的数据库访问请求,提取sql语句。
39.步骤3:使用词法分析对sql语句进行分解,得到一个个独立的关键字,并且组织成为关键字链表形式。
40.步骤4:根据特定数据库的sql语法,对词法分析后的关键字链表进行语法结构分析,构造出sql语句的ast语法树。
41.步骤5:按照sql语法树分析该sql语句的语义特征,提取相关指纹,包括命令类型、库表名、输出参数字段名、输入参数字段名、输入字段值、操作符、函数名、子查询等。
42.步骤6:使用一致性hash算法将提取的sql指纹生成签名,其中输入字段值使用统一符号代替。
43.步骤7:若数据库安全代理网关在学习模式下,则将sql签名存储到合法签名库中。
44.步骤8:若数据库安全代理网关在检测模式下,利用合法签名库对sql请求的签名进行比对,不在签名库中的请求将被阻断与告警。
45.以下进一步描述本发明具体实施例。
46.如图1所示,一种基于sql签名的数据库保护方法,包括以下步骤:
47.步骤1:在应用服务与数据库服务之间配置数据库安全代理网关。
48.所述步骤1中实现的数据安全代理网关兼容且不限于mysql、oracle、sybase等关系型数据库。网关具备接收与转发应用发送过来的sql语句,支持学习模式与检测模式,学习模式构建白名单的sql签名库,检测模式允许将在白名单内的sql请求转发到真实的数据库服务,对不在白名单内的sql请求进行阻断。例如正常情况下应用访问数据库的语句为“select name from user where id=

1'”,但因为应用服务要接收来自客户端用户输入的变量或url传递的参数,并且这个变量或参数是组成sql语句的一部分,攻击者利用这个sql注入漏洞,将
“‘
1'or

1'=

1'”作为参数拼接,把数据库执行语句修改成“select name from user where id=

1'or

1'=

1'”,修改后的sql签名不在合法签名库将被阻断,实现一种数据库保护作用。
49.步骤2:利用数据库安全代理网关接收来自应用的数据库访问请求,提取sql语句。此方式实现能够获取完整的数据库执行语句,不存在攻击者对payload各种编码绕过问题。
50.步骤3:sql语句的词法分析指的是将sql语句切分成一个个的关键字,过虑注释内容。例如对sql语句“select/*test*/name from user where id=

1'”进行词法分析,得到的结果是{"select","name","from","user","where","id","=","1"}。
51.步骤4:根据特定数据库的sql语法,对词法分析后的关键字链表进行语法结构分析,构造出sql语句的ast语法树,语法解释树如图2所示。
52.步骤5:按照sql语法树分析该sql语句的语义特征,判断每个关键字的类型,提取相关指纹,包括命令类型、库表名、输出参数字段名、输入参数字段名、输入字段值、操作符、内置函数名及参数、子查询等。
53.所述的命令类型包括查询、插入、更新、删除。
54.步骤6:使用一致性hash算法将提取的sql指纹生成签名,保证sql白名单数据的完整性和不可否认性。其中输入字段值使用统一符号代替,例如“select name from user where id=

1'”转换为“select name from user where id=

?'”。
55.步骤7:若数据库安全代理网关在学习模式下,则将sql签名存储到合法签名库中,签名库建立在一个可信环境中。该模式下不能够执行任何非法命令,且所有命令不被拦截进行透明传输。
56.另外,安全运维人员可在应用服务更新时,根据新增的业务规则构建签名添加到签名库中,保证安全策略的可持续性。
57.步骤8:若数据库安全代理网关在检测模式下,利用合法签名库对sql请求的签名进行比对,不在签名库中的请求将被阻断与告警。举例如图二与图3所示,正常的sql指纹“select name from user where id=

?'”,生成签名后保存在签名库中。非法访问的sql指纹“select name from user where id=

?'or?=?”,由于在结构上多出了“or?=?”,生成的签名将不一至被拦截与告警。
58.综上所述,本发明实施例基于sql签名的数据库保护方法提供一种以保护为原则的主动防御方法,不依赖攻击特征;该方法通过签名技术建立sql白名单,只有在合法签名库的sql才能被执行,有效提高已知与未知的攻击行为的识别能力。与传统技术相比,本发明基于白名单方式的主动防御方法,是一种以保护为原则不依赖攻击特征的数据库防护方法,根据语法分析能够准确判断sql语句的语义特征提取sql指纹,使用签名技术保证规则的完整性和不可否认性。通过白名单的方式实施防御策略,一方面不存在利用漏洞通过改变语法结构进行攻击注入的问题,精准识别应用服务的正常访问行为,从而达到防御已知与未知攻击特征的攻击行为;另一方面,由于应用服务的更新会带来一些新的安全问题,可根据新增业务添加白名单,使得安全运维人员更易于实现可持续的迭代升级策略规则。
59.本发明的背景部分可以包含关于本发明的问题或环境的背景信息,而不一定是描述现有技术。因此,在背景技术部分中包含的内容并不是申请人对现有技术的承认。
60.以上内容是结合具体/优选的实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,其还可以对这些已描述的实施方式做出若干替代或变型,而这些替代或变型方式都应当视为属于本发明的保护范围。在本说明书的描述中,参考术语“一种实施例”、“一些实施例”、“优选实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。尽管已经详细描述了本发明的实施例及其优点,但应当理解,在不脱离专利申请的保护范围的情况下,可以在本文中进行各种改变、替换和变更。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1