论文部分内容阅读
互联网技术的飞速发展,使得以数据库为中心的Web应用系统越来越广泛。然而随之而来的安全问题也越来越频繁,SQL注入攻击是Web应用系统面临的严重安全威胁之一,其检测问题的研究具有重要的现实意义。本文研究了常见的SQL注入攻击漏洞检测方法,并归纳分析了各类检测方法的优缺点。针对目前常见的检测方式具有较高的误报率和漏报率,以及漏洞检测的实时性较差的特点,提出了一种基于动态污点分析的SQL注入攻击检测方法。结合动态污点分析的原理,设计了一种内嵌在应用程序中的动态污点分析模型以追踪污点数据在应用程序中的实时传播过程,并且利用SQL词法及语法分析技术,将SQL字符串解析成SQL语法树,利用污点分析检测构建的语法树,根据污点状态触发注入攻击报警机制。SQL注入攻击发生的根本原因是动态构造的SQL执行语句中被恶意攻击者注入了具有SQL语义的特殊字符或语句。基于上述原因,本文的SQL检测方法设计思路是:首先,在动态污点分析的影子内存标记阶段,通过封装基本字符和字符串类型,将变量中的每个字符用一个对应的标识符标记其污点状态;其次,基于高级程序语言分析了具有污点传播功能的操作类型,并根据不同类型定义了相应的污点传播规则及实现方式,使得污点数据在应用程序执行过程中的传播状态能被实时准确记录;最后,结合SQL语句解析原理,将动态构造的SQL语句进行语句模式提取,通过分析提象的语法树结构中是否含有污点数据,来判断SQL注入攻击是否发生,并根据污点数据所在的语句块判定攻击形式。本文进行了实验验证,实验证明基于动态污点分析的SQL注入攻击检测模型具有较低的误报率和漏报率。