一种基于自定义安全jdbc驱动的数据库防护方法

文档序号:6601488
专利名称:一种基于自定义安全jdbc驱动的数据库防护方法
技术领域
本发明涉及信息安全技术领域的安全防护方法,特别是涉及一种基于自定义安全JDBC驱动的数据库防护方法。
背景技术
随着信息技术的飞速发展,数据库的广泛应用到包括党政军在内的各个领域。数 据库系统成为了业务应用信息首选持久化存储,是各个信息系统的数据核心,其安全性至
关重要。在国内涉密单位或者大型企业中,已广泛采取机房门禁、网络隔离、入侵检测、力口 密认证等多种方式进行整体防护。但是业界缺少针对数据库访问进行防护的安全增强产品。常规的数据库防火墙、IDS/IPS等防护方式,无法深入理解通信中数据库操作具体 内容,只能进行初级的的端口、协议、地址等网络层过滤,无法有效针对数据库的访问进行 针对性防护。

发明内容
发明目的针对现有技术的不足,本发明提出的是一种基于自定义安全JDBC (JavaData Base Connectivity)驱动的数据库防护方法。通过实现一个自定义安全JDBC驱动(下文简称为 安全JDBC驱动),搭配安全检查器与操作转换器,达到对用户所有JDBC调用的全过程控制 与审计,以及对执行SQL语句的基本注入特征分析,从而提升数据库访问的安全防护能力。 在整个的处理流程中,安全JDBC驱动与操作转换器之间的交互以及安全检查器对SQL请求 的检查与审计对于上层用户完全透明。技术方案本发明实现的技术方案如下安全JDBC驱动部署在应用服务器上代替标准JDBC驱动。除了完全实现JDBC 3. 0 标准接口的所有接口功能,安全JDBC驱动能够通过与安全检查器的联动实现对SQL语句的 安全检查与操作审计。检查合格的数据库请求,将会被转发至操作转换器。安全JDBC驱动 与操作转换器之间的通信采用自定义的通信协议,并且支持自定义的加密算法或SSL加密 算法。操作转换器通过对加密后的数据库请求进行解密,提取相应的执行命令,进行真实数 据库的执行。执行完成后,操作转换器负责将返回的结果集返回给安全JDBC驱动。应用程序通过本方法进行数据库操作时具体包括以下步骤1)系统启动时,应用程序将先访问安全检查器获得安全策略文件,将安全策略写 入内存,然后利用安全JDBC驱动与操作转换器建立持久TCP连接;2)应用程序进行数据库操作时,直接调用自定义JDBC接口 ;3)安全JDBC驱动进行接口级安全过滤。调用安全检查器接口进行,对SQL操作语句进行注入特征安全检查;4)操作若检查失败,不满足策略要求,则会在JDBC驱动中抛出相应的JAVA异常;5)操作若检查通过,满足策略要求,安全JDBC驱动则会将具体操作传递至操作转 换器进行转换与执行;6)操作转换器将数据库上的执行结果进行返回,最后返回至应用程序。基于自定 义安全JDBC驱动的数据库防护方法实现如下功能
1)完全实现JDBC标准的所有必需接口。2)设计并实现一套自定义传输格式,传输JDBC中的各种命令和数据。3)设计并实现一套自定义加密算法。4)设计并实现安全策略格式,并将策略应用在JDBC的操作接口中。本发明的进一步方案可以是所述安全JDBC驱动不针对某一特定数据库,因此为了保证最大程度的通用性,安 全JDBC驱动实现了标准JDBC 3.0接口的所有通用功能。安全JDBC驱动包含三类接口 一 类是提供给上层应用系统调用的标准JDBC接口 ;一类是进行缓冲区管理、安全检查等内部 支持接口 ;一类是与操作转换器之间进行数据通信的消息处理接口,如图2。本发明的进一步方案可以是所述JDBC驱动与操作转换器之间的通信采用自定义通信协议,传输协议是构建 在TCP/IP协议基础之上的应用层协议。消息协议的设计囊括安全JDBC驱动与操作转换器 之间的所有通信要求并具有充分的可扩展性。协议报文总体分为如下几类加密(认证)协 商协议;版本协商协议;连接协议;登录认证协议;客户端安全策略协议;数据库操作协议; 配置管理协议;错误协议。所有通讯均支持可选自定义加密或者SSL加密,防止网络窃听。本发明的进一步方案可以是所述安全JDBC驱动同操作转换器之间的交互总体上分为两个过程握手过程和 数据库访问过程。握手过程是系统启动阶段安全JDBC驱动和操作转换器之间建立TCP连 接,并确认对方的身份以及协商对称密钥的过程。数据库访问过程是指在握手过程以后上 次应用程序调用安全JDBC接口,通过操作转换器进行数据库访问。本发明的进一步方案可以是所述安全检查器中的安全策略可以灵活配置,包含但不限于用于防SQL注入的 正则表达式规则;用于防应用程序恶意操作的限制单个Connection打开statement数量的 规则;用于防传输exe等类型大字段的二进制匹配规则等。有益效果本发明达到对用户所有JDBC调用的全过程控制与审计,以及对执行SQL语句的基 本注入特征分析,从而提升数据库访问的安全防护能力。在整个的处理流程中,安全JDBC 驱动与操作转换器之间的交互以及安全检查器对SQL请求的检查与审计对于上层用户完 全透明。


图1是本发明流程示意图;图2是自定义安全JDBC接口组成图3是握手过程示意图;图4是数据库操作过程。
具体实施例方式以下结合附图对本发明作进一步说明。本方法的安全JDBC驱动部署在应用服务器上,将连接字符串指向安全监视器与操作转换器。在操作转换器上配置后台数据库的信息。可以将操作转换器按照堡垒机的方 式部署在应用服务器与数据库服务器之间,以获得更好的效果。为增强应用系统的安全性, 本发明的方法对数据库访问的方式进行了改变,监视并控制数据库访问接口。本发明方法 可阻止对数据库系统SQL注入、上传恶意文件、恶意消耗数据库资源等威胁,增强应用系统 的整体安全防护能力。安全JDBC驱动同操作转换器之间的交互总体上分为两个过程握手过程和数据 库访问过程。握手过程是系统启动阶段安全JDBC驱动和操作转换器之间建立TCP连接,并 确认对方的身份以及协商对称密钥的过程。数据库访问过程是指在握手过程以后上次应用 程序调用安全JDBC接口,通过操作转换器进行数据库访问。在两种交互的过程中,为了保 护数据传输安全,相互之间交互的报文都将进行加密。本发明的报文加密设计主要采用了非对称加密算法、对称加密算法、随机数生成 算法、DH密钥交换算法。非对称加密算法用于握手过程中的数据加密。对称加密算法用于 数据库访问过程的数据加密。DH密钥交换算法以及随机数生成算法用于生成对称密钥。握 手过程使用DH密钥交换算法产生数据库访问过程加密使用的对称密钥。一个典型的交互示例用户单击应用系统某查询页面,应用程序生成查询语句,并 调用安全JDBC驱动。安全JDBC驱动负责对用户的操作请求进行安全检查与审计,然后将其 转换为自定义的消息传给操作转换器,操作转换器在解析消息后生成对应的标准JDBC请 求,通过本地的数据库厂商提供的JDBC和真正的数据库服务器进行交互,执行成功以后将 结果集返回给应用服务器。具体流程如下1.握手过程1)安全JDBC驱动与操作转换器通过三次握手建立TCP连接;2)双方进行加密协商,协商一个用于加密以后传输报文的对称密钥;3)双方进行版本协商,确定交互双方的版本;4)进行用户身份认证,通过对用户名和密码的校验,检查相应的用户是否具备访 问操作转换器的权限。2.数据库操纵过程1)上层应用系统产生数据库访问请求,调用安全JDBC接口 ;2)进行接口过滤,阻挡一些自定义的非法JDBC调用,如针对特定系统表的操作, 删除特定表的操作等。当非法JDBC调用发生时,发出警报并终止请求;3)调用安全检查器接口,进行SQL语句的安全检查,检查不通过则抛出“检测到可 疑SQL语句”的SQLExc印tion,同时记录相关日志信息;4)检查合格后,提取SQL请求相关信息,比如原始SQL语句,操作类型等组装为自 定义消息报文;
5)利用握手过程中协商的对称密钥对报文进行加密;6)调用通信接口,发送报文;7)操作转换器接收报文,并进行解密,提取数据库操作命令以及相关信息;
8)调用后台标准JDBC驱动,进行真实数据库访问,并获取结果集;9)将返回结果集组装为自定义报文,通过通信接口进行发送。
权利要求
一种基于自定义安全JDBC驱动的数据库防护方法,其特征在于,包括以下步骤1)系统启动时,应用程序将先访问安全检查器获得安全策略文件,将安全策略写入内存,然后利用安全JDBC驱动与操作转换器建立持久TCP连接;2)应用程序进行数据库操作时,直接调用自定义JDBC接口;3)安全JDBC驱动进行接口级安全过滤,调用安全检查器接口进行,对SQL操作语句进行注入特征安全检查;4)操作若检查失败,不满足策略要求,则会在JDBC驱动中抛出相应的JAVA异常;5)操作若检查通过,满足策略要求,安全JDBC驱动则会将具体操作传递至操作转换器进行转换与执行;6)操作转换器将数据库上的执行结果进行返回,最后返回至应用程序。
2.根据权利要求1所述的一种基于自定义安全JDBC驱动的数据库防护方法,其特征在 于,所述安全JDBC驱动实现了标准JDBC 3. 0接口的所有通用功能。
3.根据权利要求1所述的一种基于自定义安全JDBC驱动的数据库防护方法,其特征在 于,所述的安全JDBC驱动与操作转换器建立持久TCP连接的应用层协议是自定义的。
4.根据权利要求1所述的一种基于自定义安全JDBC驱动的数据库防护方法,其特征在 于,所述的安全JDBC驱动与操作转换器建立持久TCP连接包括握手过程和数据库访问过 程;握手过程是启动阶段安全JDBC驱动和操作转换器之间建立TCP连接,并确认对方的身 份以及协商对称密钥的过程;数据库访问过程是指在握手过程以后上次应用程序调用安全 JDBC接口,通过操作转换器进行数据库访问。
全文摘要
本发明公开了一种基于自定义安全JDBC驱动的数据库防护方法,包括以下步骤系统启动时,应用程序将先访问安全检查器获得安全策略文件,将安全策略写入内存,然后利用安全JDBC驱动与操作转换器建立持久TCP连接;应用程序进行数据库操作时,直接调用自定义JDBC接口;安全JDBC驱动进行接口级安全过滤,调用安全检查器接口进行,对SQL操作语句进行注入特征安全检查;操作若检查失败,不满足策略要求,则会在JDBC驱动中抛出相应的JAVA异常;操作若检查通过,满足策略要求,安全JDBC驱动则会将具体操作传递至操作转换器进行转换与执行;操作转换器将数据库上的执行结果进行返回,最后返回至应用程序。
文档编号G06F17/30GK101833620SQ201010159269
公开日2010年9月15日 申请日期2010年4月28日 优先权日2010年4月28日
发明者张涛, 戴造建, 林为民, 石聪聪, 秦浩, 秦超, 陈浩 申请人:国网电力科学研究院
再多了解一些
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1