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解析能力,实现更为精准的危险语句拦截,提高数据库安全性能。
试用申请