论文摘要
SQL注入攻击作为Web应用程序面临的一类最常见的攻击方式,对于其检测技术的研究已经受到越来越多的关注。为了解决现有基于应用的SQL注入检测技术容易产生误报且忽视对存储过程中SQL注入攻击进行检测的问题,研究了基于应用程序特征语义的检测方法和基于构造路径的存储过程SQL注入检测方法。通过对应用程序应用语义所具备的特点进行分析,设计并实现了基于应用程序特征语义的检测方法。通过对特征语义的分析,提出特征模式的概念和划分方法;给出了语义模式的定义及提取过程;设计了语义模式双重简化算法以消除语意模式集中和语义模式内部存在的冗余。在充分考虑了语义模式的特点和现有不同SQL注入攻击行为特征的基础上,设计并实现了依次对语义模式所代表的应用语义、详细语义及语句条件语义进行检测的三层检测算法。通过对存储过程中引起SQL注入攻击的原因进行分析,设计并实现了基于构造路径的存储过程SQL注入检测方法。通过对执行流程的分析,给出了路径树的定义及其构造过程;设计并实现了基于路径树的构造路径提取算法。设计了基于构造路径的双层检测过程。检测过程中,替换构造路径中的输入参数为用户输入值,得到最后执行的语句,依次对语句所代表的特征向量的结构和详细语义信息进行检测。设计实现了由数据库服务器、安全增强平台、Web服务器、客户端以及攻击模拟程序构成的实验平台。实验结果表明,在攻击模拟程序覆盖已有攻击类型的情况下,所设计的检测方法可以达到90%以上的检测率,且产生的误报率均低于5%;在模拟的客户端数小于500的情况下,增加两种检测功能后,对安全增强平台的性能所造成的影响比较小。