数据库安全关键技术之sql语法特征技术-k8凯发游戏

数据库安全关键技术之sql语法特征技术
作者:安华金和 发布时间:2016-12-30

sql语法特征技术在k8凯发游戏的应用中非常关键,比如数据库防火墙(dbfirewall)需要有效扑获sql语句的特征,以及为了快速地对sql语句进行策略判定,以实现数据库防火墙的高效处理,通过sql语法特征技术的引入能够实现对sql语句的重写。

sql语句重写是指在不改变原语义的情况下,对数据库防火墙捕捉到的sql语句进行重写,替换原语句中的参数值。

sql重写能够提高管理效率和操作速度,它是一个抽象的过程,sql重写包括以下几个方面:

1.除了单双引号内的内容,小写字母全部变为大写字母;

2.准确区分正负号和加减号;

3.将sql语句中的数值、单引号引起的字符串各自重写为统一的占位符;

4.将注释、换行重写为空格,将连续的空格合并为1个,去掉运算符两端等不影响语义的空格

以如下sql语句为例:

select 0.25 * money,sum(id) from “testdb”.accounts 

where id = ' g1792 '  or name !=‘’/*this message come from lisa*/

xseure-dbf在sql重写的基础上,根据sql语法,对sql进行了多级分类。sql多级分类是将具有相同操作行为的不同语句合并为一类,为sql信息的查看和策略的定制提供了便利,且sql分类编码操作后,易于后续的计算、操作和存储。

sql分类主要分为三级,分类的方向由细到粗,即二级分类是在一级分类的基础上进行的,三级分类是在二级的基础上进行的。

一级分类

基于目前的sql重写,即替换所有的可变“参数”数据为固定的“参数(例如,#)”,并且将所有谓词全部大写化(格式化为大写字母)等。也就是说,一级分类的输出是经过“重写”后的sql语句。

二级分类

在一级分类的基础上,对所有的谓词、函数、比较运算符进行编码后,生成摘要的字符串编码,该编码就是sql的二级分类码。

三级分类

在二级分类的基础上,对所有的谓词比较运算符进行编码后,生成的摘要字符串编码,该编码就是sql三级分类码。

根据sql分类的原则,假如有如下sql语句:

1:select salary*1.5 from employees where job_id ='pu_clerk';

2:select salary*2 from employees where job_id='sa_man';

3:select employee_id from department where department_name = 'hr';

4:select department_id from employees where salary <5000;

5:select sum(salary) from employees where job_id ='pu_clerk';

6:select max(salary) from employees where job_id='pu_clerk';

那么按照分类码,dbfirewall看到的分析sql,由三级到一级如下呈现:

select  from  where  =

select from where = 

select salary*0 from employees where job_id='#' 

select employee_id from department where department_name='#'

select  sum from where =

select sum(salary) from employees where job_id='#‘

select  min from where =

select min(salary) from employees where job_id='#‘

select department_id from employees where salary<0

select  min from where <

select department_id from employees where salary<0

sql语句格式化重写后的结果为:

select 0*money,sum(id) from “testdb”.accounts where id=’#’ or name!=’’

sql语法特征技术是数据库通讯协议解析能力的一个关键技术点,这个专利性的技术已经被行业领先的k8凯发游戏厂商所掌握,将这项技术应用到数据库防火墙产品中,能够有效提高sql解析能力,实现更为精准的危险语句拦截,提高数据库安全性能。


网站地图