一种SQL注入防御的方法和系统与制造工艺

文档序号:11056992阅读:374来源:国知局
一种SQL注入防御的方法和系统与制造工艺
本发明涉及计算机网络信息安全防护领域,特别涉及一种改进的SQL注入防御的方法和系统。

背景技术:
随着Web应用以及浏览器/服务器(B/S)模式应用的普及,Web应用程序的安全性问题也日益受到关注。SQL注入攻击是最为常见的Web应用程序攻击技术,SQL注入攻击所带来的安全破坏也是不可弥补的。所谓SQL注入式攻击,就是攻击者把SQL命令插入到Web表单的输入域或页面请求的查询字符串,欺骗服务器执行恶意的SQL命令。在某些表单中,用户输入的内容直接用来构造或者影响动态SQL命令,或作为存储过程的输入参数,这类表单特别容易受到SQL注入式攻击。SQL注入可以分为平台层注入和代码层注入。前者由不安全的数据库配置或数据库平台的漏洞所致;后者主要是由于程序员对输入未进行细致地过滤,从而执行了非法的数据查询。基于此,SQL注入的产生原因通常表现在以下几方面:不当的类型处理;不安全的数据库配置;不合理的查询集处理;不当的错误处理;转义字符处理不合适;和多个提交处理不当。目前,现有常见的SQL注入防御技术是关键词方法,即检测用户提交的SQL语句中的关键字。这种方法虽然简单,但是有两个大的问题。一个是关键字漏判的问题,根据SQL语句的灵活性,有经验的攻击者很容易绕过服务器侧预设的关键字进行攻击,降低了SQL注入检测的准确性。二是误判关键字的问题。关键词方法的误报率很高,尤其是一些外文的网站,用户提交大段的英文后,很容易匹配上预设的关键字。另外一种改进的SQL注入防御技术称为知识库方法。即在安全环境下学习合法的SQL语句,建立合法SQL语句知识库,当服务器检测到用户提交的SQL语句与知识库中合法SQL语句不匹配时,则判定存在SQL注入企图。这种方法基于已知的安全SQL,但受限于SQL的完整性,其缺点在于不仅需要“充分”的SQL供系统学习已知的SQL语法树,而如何定义“充分”是很难的。如果需要大量的学习达到所谓“充分”的标准,则学习成本和执行效率都会受到严重的影响。另外,知识库方法不能穷举所有的SQL语法树,因此也就不能避免误报。目前只能通过需要不断更新合法SQL语句知识库来减少误报的发生,非常繁琐,效率很低。因此,需要一种能有效的SQL注入防御技术能够解决上述问题,快速高效地识别SQL注入。

技术实现要素:
本发明的目的在于提供一种针对数据库的SQL注入防御的方法,所述方法包括如下步骤:(a)接收来自应用系统发出的访问数据库的SQL语句;(b)对SQL语句进行注入判断和检查,若发现SQL注入,则对该SQL注入进行拦截,记录错误,并向所述应用系统返回异常消息;若发现并非为SQL注入,则查询出该SQL语句所需要访问的相应数据库操作的接口规范,拼接出符合该数据库操作接口规范的SQL语句;(c)将步骤(b)拼接出的规范的SQL语句发送到相应的数据库进行数据库操作;和(d)将查询后的结果返回给应用系统。优选地,所述应用系统是客户端/服务器或浏览器/服务器模式。优选地,所述应用系统是客户端/服务器或浏览器/服务器模式。优选地,为所述应用系统提供的数据库操作类型包括选择、插入、更新和删除。优选地,所述数据库操作的接口规范包括数据库操作接口所接受的数据库、表、合法语法格式。优选地,所述对SQL语句进行注入判断和检查基于如下规范:(a)当前数据库操作接口允许操作的数据库、表;(b)当前数据库操作接口的子句中的语法规则;以及(c)当前数据库操作接口的子句中的语义规则。优选地,所述规范(b)中的语法规则是将SQL子句转化成转码字符的序列从而构造语法转码表。优选地,对所述转换码后的字符进行逐字符的扫描以判断是否为SQL注入。优选地,判断所扫描的字符是否是数字、单引号、双引号、关键字符或空格中的任意一者。优选地,所述步骤(b)的拼接是针对选择、插入、更新和删除四种数据库操作分别进行的拼接。根据本发明的方法设置数据库代理服务器,用运维手段切断除了数据库代理服务器以外的任何应用系统对数据库的访问权限,提高了数据库访问的安全性,防止了SQL注入。应当理解,前述大体的描述和后续详尽的描述均为示例性说明和解释,并不应当用作对本发明所要求保护内容的限制。附图说明参考随附的附图,本发明更多的目的、功能和优点将通过本发明实施方式的如下描述得以阐明,其中:图1示意性地示出了根据本发明的SQL注入防御系统的系统框图;图2示出了根据本发明的SQL注入防御方法流程图;图3示出了SQL注入检查及子句检查的算法流程图。图4示出了拼接规范SQL语句的算法流程图。具体实施方式通过参考示范性实施例,本发明的目的和功能以及用于实现这些目的和功能的方法将得以阐明。然而,本发明并不受限于以下所公开的示范性实施例;可以通过不同形式来对其加以实现。说明书的实质仅仅是帮助相关领域技术人员综合理解本发明的具体细节。在下文中,将参考附图描述本发明的实施例。在附图中,相同的附图标记代表相同或类似的部件,或者相同或类似的步骤。根据本发明的SQL注入防御的方法和系统,在SQL语句访问数据库之前,设置了提供数据库查询的数据库代理服务器,该数据库代理服务器通过客户端/服务器(C/S)、浏览器/服务器(B/S)等模式为需要以SQL语句对数据库进行访问的应用系统提供了指定的数据库操作接口。根据本发明,通过运维手段切断除了数据库代理服务器以外的任何应用系统对数据库的访问权限,使得所有的应用系统的数据库查询都只通过该数据库代理服务器。根据本发明的数据库代理...
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1