一种防御SQL注入攻击的数据库代理装置制造方法及图纸

技术编号:16129347 阅读:59 留言:0更新日期:2017-09-01 21:07
本发明专利技术提供一种防御SQL注入攻击的数据库代理装置,包括语句接收模块、标签处理模块、语句分组模块、注入攻击检测模块和语句执行模块;语句接收模块接收各应用服务器转发的SQL语句;标签处理模块检测各语句中的标签是否合法,如是,则去掉该语句中的标签,否则丢弃;语句分组模块将去掉标签的语句中相同内容的分成一组;注入攻击检测模块检测每组中的语句是否达到2n+1条或n+1条,若达到2n+1条,则将该组中的语句输出,若达到n+1条而未达到2n+1条,则将该组中的语句输出的同时报警,若未达到n+1条,则将该组中的语句丢弃并报警;语句执行模块将接收到的语句发送给数据库服务器。本发明专利技术可防御未知攻击行为,实现数据库的高安全性、高可靠性。

A database proxy device that protects against SQL injection attacks

The database agent device of the invention provides a defense of SQL injection attacks, including a statement label receiving module, processing module, grouping statements module, injection attack detection module and statement execution module; SQL statement receiving module receives the application server forwarding processing module to detect the label; statement label is legitimate, if yes, then remove the statement label, or discarded; divided into a group of the same content statement grouping module will remove labels in the statement; injection attack detection module in each sentence is up to 2n+1 or n+1, to achieve the 2n+1, will be in the group to achieve the n+1 output statement, but did not reach the 2n+1, it will alarm in the group statement output at the same time, if not reach n+1, the set of statements in the discarded and alarm module will receive the statement execution; The resulting statement is sent to the database server. The invention can defend the unknown attack behavior and realize the high safety and high reliability of the database.

【技术实现步骤摘要】
一种防御SQL注入攻击的数据库代理装置
本专利技术涉及网络安全领域,更具体地说,涉及一种防御SQL注入攻击的数据库代理装置。
技术介绍
在当今网络环境下,数据库作为重要的存储工具,经常存储着大量有价值的数据,这些数据包含用户信息、企业数据、金融财政、商业机密、知识产权、客户订单信息等内容,其重要程度不言而喻。因此,数据库往往会成为网络黑客的主要攻击对象。网络黑客利用各种途径、各种攻击工具、各种欺骗手段来获取其想得到的信息,因此,保证数据库安全变得非常重要。最常见的数据库安全威胁是SQL注入攻击,SQL注入攻击指的是通过构建特殊的输入语句传入Web应用服务器,而这些输入大都是SQL语法里的一些组合,通过使Web应用程序执行SQL语句进而执行攻击者所要的操作。这是由于系统应用未对客户端输入语句进行合法性检查,攻击者可以通过提交一段数据库查询代码,根据应用程序返回的结果,获得某些想得知的数据。针对SQL注入攻击,传统解决方案绝大多数是在系统被攻击之后的“亡羊补牢”式防护,但在系统出现新的注入攻击点时,仍然束手无策。具体来说,传统防御技术都是基于黑名单对客户端输入语句进行合法性检查,当发现客户端的输入语句在黑名单内,则对其进行拦截,进而实现基于已知注入漏洞的SQL注入防御。该方案存在以下两方面的严重问题:1)对于未知注入漏洞无能为力;2)黑名单过多会产生高误报问题,进而影响正常用户使用。针对数据库SQL注入攻击威胁,中国专利申请《SQL注入攻击检测方法及其装置》公开了一种SQL注入攻击检测方案,该方案也是基于恶意人员进行SQL注入攻击的已知行为特征,虽然在一定程度上克服了传统SQL检测机制的缺陷,缓解了传统SQL注入攻击检测方法中存在高误报率的问题,但其对未知攻击行为的防御能力仍然无能为力。此外,美国专利《SQLinjectionattackdetectionsystemsupportingmultipledatabasetypes》公开了一种支持多类型数据库的SQL注入攻击检测系统,其包含多个不同语法规则的SQL注入攻击检测模块,对用户提交的参数进行过滤检查,因此该方案也是一种基于已知攻击行为特征的防御手段,对含有未知特征的SQL注入攻击无效。
技术实现思路
针对上述现有技术中存在的不足,本专利技术的目的在于提供一种防御SQL注入攻击的数据库代理装置,以防御未知攻击行为,从而实现数据库的高安全性、高可靠性。为了实现上述目的,本专利技术采用如下技术方案:一种防御SQL注入攻击的数据库代理装置,包括依次连接在2n+1个应用服务器和一数据库服务器之间的一语句接收模块、一标签处理模块、一语句分组模块、一注入攻击检测模块和一语句执行模块,其中:所述语句接收模块包括2n+1个与所述应用服务器一一对应连接的监听端口,各监听端口设置为接收对应应用服务器转发的SQL语句;所述标签处理模块设置为检测各监听端口接收的SQL语句是否包含与相应监听端口对应的标签而不包含与其它监听端口对应的标签,若是,则将该SQL语句中的标签去掉后发送至所述语句分组模块,否则,将该SQL语句丢弃;所述语句分组模块设置为接收去掉标签的SQL语句,并将接收到的相同SQL语句分成一组;所述注入攻击检测模块设置为检测每组中的SQL语句是否达到2n+1条或n+1条,若达到2n+1条,则将该组中的SQL语句输出至语句执行模块,若达到n+1条而未达到2n+1条,则将该组中的SQL语句输出至语句执行模块,同时发出异常报警信号,若未达到n+1条,则将该组中的SQL语句丢弃并发出异常报警信号;所述语句执行模块设置为将接收到的SQL语句发送至所述数据库服务器。进一步地,所述语句分组模块在分组时,若同一组中的SQL语句不足2n+1条,则等待后续SQL语句的到来,直至等待时间超过预设的有效时间阈值。进一步地,所述应用服务器和所述监听端口的数量为三个。综上所述,本专利技术的主要特点在于对应用服务器输出的SQL语句进行标签合法性检测,有效防御恶意用户或黑客的攻击行为。与现有技术相比,本专利技术极大地提高了数据库的安全性,有效地防御了针对数据库的SQL注入攻击,而且即使在攻击者得到了系统全部标签,也不能攻击成功。附图说明图1为本专利技术防御SQL注入攻击的数据库代理装置的结构框图;图2为本专利技术中语句接收模块所接收内容的一个实施例;图3为本专利技术中标签处理模块处理后的结果;图4为图3中的处理结果经过分组模块分组后的结果;图5为图4中的分组结果经过注入攻击检测模块处理后的检测结果;图6为图5中的检测结果经过执行模块处理后输入数据库服务器的示意图。具体实施方式下面结合具体实施例对本专利技术进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本专利技术,但不以任何形式限制本专利技术。应当指出的是,对本领域的普通技术人员来说,在不脱离本专利技术构思的前提下,还可以做出若干变形和改进。这些都属于本专利技术的保护范围。本专利技术提供的防御SQL注入攻击的数据库代理装置如图1所示,包括依次连接在2n+1个(图中示出为3个)应用服务器和一数据库服务器之间的一语句接收模块、一标签处理模块、一语句分组模块、一注入攻击检测模块和一语句执行模块。在本专利技术中,语句接收模块包括2n+1个(图中示出为3个)监听端口,这些监听端口分别与应用服务器一一对应连接,用于接收对应应用服务器转发的针对数据库服务器中内容进行增、删、改等操作的SQL语句。标签处理模块与各监听端口分别连接,用于处理各监听端口所接收的SQL语句,即,通过检查各监听端口所接收的SQL语句中的关键字是否含有与该监听端口对应的标签字符串来判断此SQL语句的合法性,若不含有,则将该语句进行丢弃处理;若含有,则进一步判断各监听端口所接收的SQL语句中的关键字是否含有与其它监听端口对应的标签字符串,若不含有,则判定为合法SQL语句,对其进行去标签化处理后发送到语句分组模块,若含有其它标签则将该语句进行丢弃处理。语句分组模块连接在标签处理模块之后,用于对接收到的合法SQL语句进行分组并将分组结果输出至注入攻击检测模块。具体分组原则是:将内容相同的语句分成一组,当同一组中的SQL语句不足2n+1条时,等待后续SQL语句的到来(等待是因为网络可能延迟,同一个请求对应的语句可能不在同一时间内到达),直至等待的时间超过预设的有效时间阈值。注入攻击检测模块连接在语句分组模块之后,其用于检测语句分组模块所分各组中的SQL语句是否达到2n+1条或者n+1条(即检测各监听端口接收到的语句完全一致或者大多数一致)。若一组中的语句达到2n+1条(即各监听端口接收到的语句完全一致),认为该组中的SQL语句是正常语句,则将对应的SQL语句输出至语句执行模块;若一组中的语句仅达到n+1条但未达到2n+1条(即各监听端口接收到的语句大多数一致),认为该组中的SQL语句可能被攻击,则将对应的SQL语句输出至语句执行模块,同时向外围安全监控中心发出异常报警信号;若一组中的语句未达到n+1条(即各监听端口接收到的语句大多数不一致),认为该组中的SQL语句是攻击语句,则将对应的SQL语句进行丢弃处理,同时向外围安全监控中心发出异常报警信号。语句执行模块连接在注入攻击检测模块之后,是本专利技术代理装置的最后一个模块,其后与数据库服务器相本文档来自技高网
...
一种防御SQL注入攻击的数据库代理装置

【技术保护点】
一种防御SQL注入攻击的数据库代理装置,其特征在于,包括依次连接在2n+1个应用服务器和一数据库服务器之间的一语句接收模块、一标签处理模块、一语句分组模块、一注入攻击检测模块和一语句执行模块,其中:所述语句接收模块包括2n+1个与所述应用服务器一一对应连接的监听端口,各监听端口设置为接收对应应用服务器转发的SQL语句;所述标签处理模块设置为检测各监听端口接收的SQL语句是否包含与相应监听端口对应的标签而不包含与其它监听端口对应的标签,若是,则将该SQL语句中的标签去掉后发送至所述语句分组模块,否则,将该SQL语句丢弃;所述语句分组模块设置为接收去掉标签的SQL语句,并将接收到的相同SQL语句分成一组;所述注入攻击检测模块设置为检测每组中的SQL语句是否达到2n+1条或n+1条,若达到2n+1条,则将该组中的SQL语句输出至语句执行模块,若达到n+1条而未达到2n+1条,则将该组中的SQL语句输出至语句执行模块,同时发出异常报警信号,若未达到n+1条,则将该组中的SQL语句丢弃并发出异常报警信号;所述语句执行模块设置为将接收到的SQL语句发送至所述数据库服务器。

【技术特征摘要】
1.一种防御SQL注入攻击的数据库代理装置,其特征在于,包括依次连接在2n+1个应用服务器和一数据库服务器之间的一语句接收模块、一标签处理模块、一语句分组模块、一注入攻击检测模块和一语句执行模块,其中:所述语句接收模块包括2n+1个与所述应用服务器一一对应连接的监听端口,各监听端口设置为接收对应应用服务器转发的SQL语句;所述标签处理模块设置为检测各监听端口接收的SQL语句是否包含与相应监听端口对应的标签而不包含与其它监听端口对应的标签,若是,则将该SQL语句中的标签去掉后发送至所述语句分组模块,否则,将该SQL语句丢弃;所述语句分组模块设置为接收去掉标签的SQL语句,并将接收到的相同SQL语句分成一组;所述注入攻击检测模块设置为检测每组...

【专利技术属性】
技术研发人员:张铮罗兴国邬江兴苏昆仑马柏林庞建民谢光炜
申请(专利权)人:上海红神信息技术有限公司
类型:发明
国别省市:上海,31

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1