一种SQL注入攻击防御研究

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一种SQL注入攻击防御研究
摘要本文提出一种基于语法树比较的SQL注入攻击防范方法。

静态分析源代码中的SQL语句构造出相应的语法树,当程序执行时,利用动态分析再构造动态产生的SQL语句的语法树,对这两种情况下产生的语法树采用广度优先算法进行遍历,如果树结构相同,认为用户输入合法,否则判定为存在注入攻击。

关键字SQL ;语法树;广度优先
1 防范模型
防御模型阻止SQL注入攻击的工作流程如下:
步骤1:预分析首先静态扫描源代码,找出程序中所有包含客户端输入数据的SQL语句。

步骤2:代码分析程序分析步骤1传递的SQL语句,并解析出语句的语法树。

步骤3:当代码分析程序解析出语法树后,将得到的语法树结构利用XML 标记保存在XML文档中。

步骤4:其中保存静态SQL语句语法树的XML文档在Web应用程序部署或测试时就生成完毕,这里暂且把这种XML文档称为“静态XML文档”。

步骤5:当Web应用程序运行时,代码分析程序会生成保存有动态SQL语句语法树结构的“动态XML文档”。

步骤6:使用XML DOM API将“静态XML文档”和“动态XML文档”分别解析成一棵树。

步骤7:对步骤6解析出的两棵树使用广度优先遍历算法进行比较。

步骤8:如果两棵树具有相同的结构,则认为不存在注入攻击,如果结构不同则表明可能存在SQL注入攻击。

步骤9:将步骤8比较的结果返回给Web应用程序,如果判定为存在SQL 注入攻击,将禁止执行SQL语句。

上面介绍了整个防御模型的工作流程,对于其中的一些关键步骤下面进一步详细说明。

2 预分析
预分析主要做三个方面工作:1)找出Web应用程序中含有用户输入数据的SQL语句位置;2)在找到的位置处插入传递SQL语句给代码分析程序的功能代码;3)生成“静态XML文档”。

3 代码分析程序
代码分析程序是由Antlr工具生成的,能够对SQL语句进行词法分析和语法分析,分析的结果利用XML标记保存在XML文档中。

Antlr工具构造代码分析程序的过程是:首先编写以g为后缀名的文法文件,然后将此文法文件作为输入执行Antlr工具,Antlr工具会输出几个.java文件,这些文件即是代码分析程序的源程序。

4生成XML文档
代码分析程序解析出语句的语法树后,需要将其结构保存起来,这样才可下一步对其结构进行分析。

以SELECT语句为例,实现的核心代码如下。

5 解析XML文档成树结构
为了比较XML文档中保存的树结构,需要分析XML标记,并将其转换成真正的树数据结构。

XML DOM API转换XML文档中的数据成树结构的方法是:1)所有标记中的值是叶子节点,如果标记中没有值则标记也是叶子节点;2)所有非空值的标记是非叶子节点。

6语法树比较算法
“语法树比较”指的是比较“静态XML文档”和“动态XML文档”解析成的两棵树的结构,采用广度优先搜索算法对这两棵进行遍历,如果两棵树相对应的两个节点孩子数不同,则判定动态生成的SQL语句中可能含有SQL注入攻击。

同时将比较结果的布尔值返回给Web应用程序,当结果为false则阻止SQL语句的执行。

算法的输入是保存静态时SQL语句语法树结构的“静态XML文档”和保存动态时SQL语句语法树结构的“动态XML文档”,输出是布尔值真或假。

7实验分析
由于此种防御方法需要在源程序中加入一段代码来解析SQL语句,这必定将增加Web应用程序的时间开销,影响页面对客户端的响应速度。

为了评估这种影响程度如何,选择5款存在SQL注入漏洞的流行Web应用程序作为测试对象。

测试的软硬件环境是:
实验采用的方法是使用SQL渗透测试工具pangolin对这5款WEB应用程序进行SQL注入攻击,并记录没有设置防御时的页面响应时间和设置了防御时的页面响应时间。

由于防御系统的存在pangolin在对这5款程序扫描时均显示不存在注入漏洞,无法注入。

在系统对页面响应时间的影响方面(表1),防御系统只增加了1s左右的客户端等待时间,这在用户完全可以接受的范围之内。

参考文献
[1]崔勇,吴建平,徐恪,等.互联网络服务质量路由算法研究综述[J].软件学报,2002,13(4):10-21.
[2]徐岩柏.计算机软件中安全漏洞检测方法研究:[博士学位论文].北京:北京邮电大学,2006.
[3]孙兵.利用LEX和YACC实现对SQL查询语句的语法分析[J].南京工业职业技术学院学报,2004,4(3):16-19.。

相关文档
最新文档