基于签名的SQL防篡改保护方法转让专利

申请号 : CN201510232967.7

文献号 : CN104821949B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 楼方鑫

申请人 : 杭州平民软件有限公司

摘要 :

本发明公开了一种基于签名的SQL防篡改保护方法,应用程序先向数据库或防火墙先发送SQL的签名,等数据库或防火墙收到SQL的签名后,再发送SQL指令。数据库或防火墙在执行SQL之前会进行签名检查,如果不符合,则拒绝SQL的执行,并报告数据库或防火墙受到攻击。本发明方法增加了黑客修改SQL数据包的难度,在第一次发送签名时,因为还未发送SQL语句,所以无法提前修改答名;当发送SQL时,签名已经无法修改;由于无法从签名信息反向得到完整的原信息,使用篡改SQL数据包变得无效。本发明与现有通用的加密机制无冲突,通过事先发送签名的方法进一步提高了SQL篡改的技术难度,从而达到SQL防篡改的目标。

权利要求 :

1.一种基于签名的SQL防篡改保护方法,其特征在于,包括以下步骤:(1)应用程序向数据库或防火墙发送签名信息;所述签名指对一串信息进行处理后得到一个特征串或数字,根据得到的特征串或数字不能反推出完整的信息,同样的信息经处理后得到同样的特征串或数字;

(2)当数据库或防火墙收到SQL的签名后,应用程序向数据库或防火墙发送SQL指令;

(3)数据库或防火墙收到SQL指令后,进行签名检查,如果签名匹配则执行SQL,如果不匹配则拒绝执行SQL,并报告数据库或防火墙受到攻击。

说明书 :

基于签名的SQL防篡改保护方法

技术领域

[0001] 本发明属于网络安全技术领域,尤其涉及一种基于签名的SQL防篡改保护方法。

背景技术

[0002] 在应用程序和数据库之间用SQL进行交互时,因为应用程序和数据库之间属于不同的软件系统,并且使用网络协议进行通信。使用开源软件时,黑客也会知道网络协议,从而可以截获通信的数据包,比如包含SQL指令的数据包,并对数据包进行修改,数据库端只要SQL是合法的,都可以执行,无法识别到数据包是否与应用程序发过来的原始数据包相一致,导致数据被非常篡改,给企业带来损失。
[0003] 在正常情况下,应用程序和数据库/防火墙之间的通信结构如图1所示(箭头代表SQL指令包的流向,虚线代表SQL指令包的来源和目的地)。当黑客植入程序后,应用程序和数据库/防火墙之间的通信结构如图2所示(箭头代表SQL指令包的流向,虚线代表SQL指令包的来源和目的地)。
[0004] 目前的解决方案是通过加密的方法,采用加密后的,应用程序和数据库/防火墙之间的通信结构如图3所示(实线箭头代表SQL指令包的流向,虚线代表SQL指令包的来源和目的地)。在现有加密方案下,黑客植入程序后,应用程序和数据库/防火墙之间的通信结构如图4所示(箭头代表SQL指令包的流向,虚线代表SQL指令包的来源和目的地)。只要后门程序知道了加解密的算法,可以看到一样可以进行透明的SQL篡改,虽然增加了难度,但仍旧有极大的风险。

发明内容

[0005] 本发明的目的在于针对现有技术的不足,提供一种基于签名的SQL防篡改保护方法。
[0006] 本发明的目的是通过以下技术方案来实现的:一种基于签名的SQL防篡改保护方法,包括以下步骤:
[0007] (1)应用程序向数据库或防火墙发送签名信息;所述签名指通过特定的算法,对一串信息进行处理后得到一个特征串或数字,根据得到的特征串或数字不能反推出完整的信息,同样的信息经处理后得到同样的特征串或数字;
[0008] (2)当数据库或防火墙收到SQL的签名后,应用程序向数据库或防火墙发送SQL指令;
[0009] (3)数据库或防火墙收到SQL指令后,进行签名检查,如果签名匹配则执行SQL,如果不匹配则拒绝执行SQL,并报告数据库或防火墙受到攻击。
[0010] 本发明的有益效果是:本发明方法增加了黑客修改SQL数据包的难度,在第一次发送签名时,因为还未发送SQL语句,所以无法提前修改答名;当发送SQL时,签名已经无法修改;由于无法从签名信息反向得到完整的原信息,使用篡改SQL数据包变得无效。本发明方法在现有方案之上多了一层保护机制,并不是去完全替换现有的加密机制。即使不用现有的加密方案,也极大地增加了SQL篡改的难度,提高了数据库的安全级别。本发明与现有通用的加密机制无冲突,通过事先发送签名的方法进一步提高了SQL篡改的技术难度,从而达到SQL防篡改的目标。

附图说明

[0011] 图1为传统应用程序和数据库/防火墙之间的通信结构;
[0012] 图2为黑客植入程序后应用程序和数据库/防火墙之间的通信结构;
[0013] 图3为采用加密后的应用程序和数据库/防火墙之间的通信结构;
[0014] 图4为现有加密方案下,黑客植入程序后应用程序和数据库/防火墙之间的通信结构;
[0015] 图5为本发明发送签名信息的通信结构;
[0016] 图6为本发明发送SQL指令的通信结构;
[0017] 图7为应用程序与数据库/防火墙之间的交互流程,(a)为现有的交互步骤,(b)为采用本发明后的交互步骤。

具体实施方式

[0018] 下面结合附图和具体实施例对本发明作进一步详细说明。本发明方法可以使用任何计算机语言实现,且对于软件与硬件没有特殊要求。
[0019] 本发明一种基于签名的SQL防篡改保护方法,包括以下步骤:
[0020] (1)应用程序向数据库或防火墙发送签名信息,如图5所示(箭头代表签名信息的流向,虚线代表签名信息的来源和目的地)。在发送签名信息时,重要的SQL信息还在应用程序的内存中,黑客后门程序无法知道原始的SQL信息,只能对签名信息望而止步。所述应用程序指接受用户操作和指示的程序,比如一个网站,一个工业上用于数据采集的程序,泛指需要向数据库发送数据的程序或系统。所述签名指通过特定的算法,对一串信息进行处理后得到一个特征串,也可以是一个数字,根据这个数据不能反推出完整的信息,同样的信息经处理后一定会得到同样的特征串或数字,哈希算法、CRC校验码算法、SHA算法等都可以作为签名算法,也可以自行设计一段不可逆的算法。所述数据库用来永久或监时存放业务、系统数据的软件系统及其数据,包括但不仅限于Oracle、DB2、Sybase、MySQL、SQL Server、Cache等现有软件系统。所述防火墙指设立在应用程序和数据库之间的软件或硬件,对应用程序与数据库之间的通信内容进行安全检查,如通过检查则转发,否则回绝。
[0021] (2)当数据库或防火墙收到SQL的签名后,应用程序向数据库或防火墙发送SQL指令,如图6所示(箭头代表SQL指令包的流向,虚线代表SQL指令包的来源和目的地)。已经传送过的签名信息,无法再次修改。黑客的后门程序即使知道SQL包的格式,并作出修改,但由于无法与签名匹配,会在下一步得到丢弃,篡改过的SQL语句不会被真正执行。所述SQL为应用程序和数据库通信的语言,比较接近于英语,用比较容易理解的方式操作数据库的数据。
[0022] (3)数据库或防火墙收到SQL指令后,进行签名检查,如果签名匹配则执行SQL,如果不匹配则拒绝执行SQL,并报告数据库或防火墙受到攻击。
[0023] 采用本发明后应用程序与数据库/防火墙之间的交互流程发生了如下变化。如图7所示,(a)为现有的交互步骤,(b)为采用本发明后的交互步骤。当使用基于签名的SQL防篡改保护方法时,应用程序会向数据库或防火墙先发送SQL的签名,等数据库或防火墙收到SQL的签名后,再发送SQL指令。数据库或防火墙在执行SQL之间会进行签名检查,如果不符合,则拒绝SQL的执行,并报告数据库或防火墙受到攻击。