论文部分内容阅读
随着互联网的飞速发展,Web安全也变得愈发重要,注入类漏洞在OWASP(Open Web Application Security Project)发布的最严重的前10名Web安全漏洞中排名第一,SQL注入攻击是目前Web面临的主要安全威胁。SQL注入利用Web应用程序,把恶意的SQL注入语句传递到后台数据库,使之不能按照设计者的意图去执行SQL语句。在Web应用程序中添加一道检测和阻截SQL注入攻击的防御系统是Web安全的重要保障,虽然国内外已提出多种SQL注入检测方法,但大部分检测方法只考虑了个别条件下的SQL注入攻击检测,无法检测多种SQL注入攻击。因此,针对SQL注入隐蔽性非常高、种类繁多、普通网络防火墙难以预防的特点,本研究将提出一种基于N-Gram的SQL注入检测方法,主要工作如下:1.基于N-Gram提出一种特征提取方案,结合自然语言处理中N-Gram模型假设某个词出现的概率只与该词前面N-1个词相关的特点,把SQL语句中连续的N个词看作一个整体进行特征提取,使原本由单个单词构成的特征子序列变为了由若干个单词构成。接着从所有特征子序列中根据出现频次和信息增益挑选出对分类影响最大的一些特征子序列,根据这些特征子序列将SQL语句转换成固定维数的特征向量。2.基于抽象语法树提出一种特征提取方案,在对SQL语句进行N-Gram特征提取的同时,把该语句转换成抽象语法树,然后将该树的所有深度为2的子树所对应的文字序列作为特征子序列。最后把这些特征子序列与N-Gram特征子序列一起进行特征选择,确定特征向量。3.基于卡方检验和神经网络提出一种SQL注入检测方案,在前两部分将语料库中的SQL语句转换成特征向量的基础上,先计算安全SQL语句的平均特征向量,然后计算各SQL语句与平均特征向量距离确定距离的阈值,接着根据待测SQL语句与平均特征向量的距离与阈值进行对比以判断待测SQL语句的安全性。此外,本文提出以特征子序列的顺序和信息增益为依据改变不同特征子序列权重的方法改进距离,改变原有的距离计算公式。最后,本文通过BP神经网络将上述两种改进距离和原卡方距离作为输入,与安全SQL语句的平均特征向量的距离为输出,把三种距离合而为一。实验结果表明,与直接使用单词构成的特征向量相比,本文所提方法能有效提高检测率、降低误报率。