一种防数据库SQL注入的方法及系统与流程

文档序号:18351546发布日期:2019-08-06 22:29阅读:565来源:国知局
一种防数据库SQL注入的方法及系统与流程

本发明涉及数据库安全领域,特别涉及一种防数据库sql注入的方法及系统。



背景技术:

所谓sql注入,就是通过把sql命令插入到web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的sql命令。具体来说,它是利用现有应用程序,将(恶意的)sql命令注入到后台数据库引擎执行的能力,它可以通过在web表单中输入(恶意)sql语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行sql语句。比如先前的很多影视网站泄露vip会员密码大多就是通过web表单递交查询字符暴出的,这类表单特别容易受到sql注入式攻击.

sql注入攻击指的是通过构建特殊的输入作为参数传入web应用程序,而这些输入大都是sql语法里的一些组合,通过执行sql语句进而执行攻击者所要的操作,其主要原因是程序没有细致地过滤用户输入的数据,致使非法数据侵入系统。

根据相关技术原理,sql注入可以分为平台层注入和代码层注入。前者由不安全的数据库配置或数据库平台的漏洞所致;后者主要是由于程序员对输入未进行细致地过滤,从而执行了非法的数据查询。基于此,sql注入的产生原因通常表现在以下几方面:不当的类型处理;不安全的数据库配置;不合理的查询集处理;不当的错误处理;转义字符处理不合适;多个提交处理不当。

当应用程序使用输入内容来构造动态sql语句以访问数据库时,会发生sql注入攻击。如果代码使用存储过程,而这些存储过程作为包含未筛选的用户输入的字符串来传递,也会发生sql注入。sql注入可能导致攻击者使用应用程序登陆在数据库中执行命令。相关的sql注入可以通过测试工具pangolin进行。如果应用程序使用特权过高的帐户连接到数据库,这种问题会变得很严重。在某些表单中,用户输入的内容直接用来构造动态sql命令,或者作为存储过程的输入参数,这些表单特别容易受到sql注入的攻击。而许多网站程序在编写时,没有对用户输入的合法性进行判断或者程序中本身的变量处理不当,使应用程序存在安全隐患。这样,用户就可以提交一段数据库查询的代码,根据程序返回的结果,获得一些敏感的信息或者控制整个服务器,于是sql注入就发生了。

现有的服务器一般通过对数据库进行加密来防止sql注入的攻击,但是,采用上述方法,在后台服务器维护时,需要先将后台服务器进行离线操作来保证服务器的安全性,这样会导致各个终端均无法访问数据库。



技术实现要素:

本发明的目的在于:提供了一种防数据库sql注入的方法及系统,解决了现有的服务器一般通过对数据库进行加密来防止sql注入的攻击,但是,采用上述方法,在后台服务器维护时,需要先将后台服务器进行离线操作来保证服务器的安全性,这样会导致各个终端均无法访问数据库的问题。

本发明采用的技术方案如下:

一种防数据库sql注入的方法,包括数据库客户端程序、部署在内部服务器上的加密数据库、部署在公开服务器上的公开数据库和至少一个连接内部服务器和公开服务器的堡垒机,还包括设置在堡垒机和内部服务器之间的加密网关,还包括以下步骤:

s1、将加密数据库内的数据分为两级,一级为内部数据,另一级为公开数据;

s2、当加密数据库内的数据通过加密网关时,加密网关分别对内部数据和公开数据进行非对称加密;对内部数据加密的公钥为公钥a,对公开数据加密的公钥为公钥b,内部数据的私钥为私钥a,公开数据的私钥为私钥b;

s3、将私钥a储存在usb-key中,将私钥b封装在数据库的客户端程序中;

s4、堡垒机通过加密网关下载加密数据库中的全部数据,将下载的全部数据转存到公开服务器上的公开数据库中;

s5、建立公开数据库和客户端程序的连接。

采用上述方法,客户端实际上连接的时公开服务器的公开数据库,当需要对服务器进行维护时,只需要断开内部服务器的网络连接即可,不会影响客户端的使用,同时,由于公开服务器实际上属于加密服务器的备份,而对加密数据库来说,不是所有的数据都可以公开,因此,需要对加密数据库中的数据进行分级加密,可以公开的数据可以在任何客户端上读取,而内部数据则需要使用usb-key进行读取。

所述加密网关与内部服务器物理连接。采用物理连接可靠性最高,避免了互联网数据传输被抓包或者无线传输数据被截取的问题。

所述加密网关采用rsa算法或sm9算法中的一种对数据进行加密。到目前为止,世界上还没有任何可靠的攻击rsa算法的方式。只要其钥匙的长度足够长,用rsa加密的信息实际上是不能被解破的。在商用密码体系中,sm9主要用于用户的身份认证,sm9的加密强度等同于3072位密钥的rsa加密算法。

所述客户端程序调取私钥b时需要进行登录校验。保证了客户端用户的合法性。

所述步骤s1中将加密数据库内的数据分为两级的方法是,在储存数据时,对内部数据和公开数据使用不同数字签名。

所述步骤s2中当加密数据库内的数据通过加密网关时,加密网关分别对内部数据和公开数据进行非对称加密的方法是,当数据通过加密网关时,加密网关读取数据的数字签证,判断该数字签证属于内部数据还是公开数据,当数字签证属于内部数据时,使用公钥a进行加密,当数字签证属于公开数据时,使用公钥b进行加密。

一种防数据库sql注入的系统,该系统包括按照上述方法工作的至少一台堡垒机、加密网关、至少两台服务器和至少一台部署了数据库客户端程序的终端。

综上所述,由于采用了上述技术方案,本发明的有益效果是:

1.本发明一种防数据库sql注入的方法及系统,解决了现有的服务器一般通过对数据库进行加密来防止sql注入的攻击,但是,采用上述方法,在后台服务器维护时,需要先将后台服务器进行离线操作来保证服务器的安全性,这样会导致各个终端均无法访问数据库的问题。

2.本发明一种防数据库sql注入的方法及系统,分级加密,保证了公开服务器上数据的完整性的同时,避免了内部数据的公开。

附图说明

本发明将通过例子并参照附图的方式说明,其中:

图1是本发明的系统示意图。

具体实施方式

本说明书中公开的所有特征,或公开的所有方法或过程中的步骤,除了互相排斥的特征和/或步骤以外,均可以以任何方式组合。

实施例1

如图1所示,一种防数据库sql注入的方法,包括数据库客户端程序、部署在内部服务器上的加密数据库、部署在公开服务器上的公开数据库和至少一个连接内部服务器和公开服务器的堡垒机,还包括设置在堡垒机和内部服务器之间的加密网关,还包括以下步骤:

s1、将加密数据库内的数据分为两级,一级为内部数据,另一级为公开数据;

s2、当加密数据库内的数据通过加密网关时,加密网关分别对内部数据和公开数据进行非对称加密;对内部数据加密的公钥为公钥a,对公开数据加密的公钥为公钥b,内部数据的私钥为私钥a,公开数据的私钥为私钥b;

s3、将私钥a储存在usb-key中,将私钥b封装在数据库的客户端程序中;

s4、堡垒机通过加密网关下载加密数据库中的全部数据,将下载的全部数据转存到公开服务器上的公开数据库中;

s5、建立公开数据库和客户端程序的连接。

采用上述方法,客户端实际上连接的是公开服务器的公开数据库,当需要对服务器进行维护时,只需要断开内部服务器的网络连接即可,不会影响客户端的使用,同时,由于公开服务器实际上属于加密服务器的备份,而对加密数据库来说,不是所有的数据都可以公开,因此,需要对加密数据库中的数据进行分级加密,可以公开的数据可以在任何客户端上读取,儿内部数据则需要使用usb-key进行读取。

实施例2

本实施例与实施例1的区别仅在于,所述加密网关与内部服务器物理连接。采用物理连接可靠性最高,避免了互联网数据传输被抓包或者无线传输数据被截取的问题。

所述加密网关采用rsa算法或sm9算法中的一种对数据进行加密。到目前为止,世界上还没有任何可靠的攻击rsa算法的方式。只要其钥匙的长度足够长,用rsa加密的信息实际上是不能被解破的。在商用密码体系中,sm9主要用于用户的身份认证,sm9的加密强度等同于3072位密钥的rsa加密算法。

所述客户端程序调取私钥b时需要进行登录校验。保证了客户端用户的合法性。

所述步骤s1中将加密数据库内的数据分为两级的方法是,在储存数据时,对内部数据和公开数据使用不同数字签名。

所述步骤s2中当加密数据库内的数据通过加密网关时,加密网关分别对内部数据和公开数据进行非对称加密的方法是,当数据通过加密网关时,加密网关读取数据的数字签证,判断该数字签证属于内部数据还是公开数据,当数字签证属于内部数据时,使用公钥a进行加密,当数字签证属于公开数据时,使用公钥b进行加密。

实施例3

一种防数据库sql注入的系统,该系统包括按照上述方法工作的至少一台堡垒机、加密网关、至少两台服务器和至少一台部署了数据库客户端程序的终端。

以上所述,仅为本发明的优选实施方式,但本发明的保护范围并不局限于此,任何熟悉本领域的技术人员在本发明所揭露的技术范围内,可不经过创造性劳动想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求书所限定的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1