论文部分内容阅读
Web2.0时代,Web应用程序已经渗透到每一个网民的生活中,但其伴随的安全问题也越来越多,如果Web应用产生安全漏洞,就会直接威胁到用户的隐私数据、财产安全等重要方面。在众多Web安全漏洞中,SQL注入(Structured Query Language Injection)漏洞攻击是最受攻击者青睐的攻击手段之一,同时也是威胁程度最高的漏洞之一。因此,如何实时、准确地检测到SQL注入攻击,这对于Web安全领域的研究与发展有着非常重要的意义。针对这一问题,本文分别基于机器学习中的朴素贝叶斯(Naive Bayes)分类模型及深度学习中的长短时记忆循环神经网络模型(Long Short-Term Memory-Recurrent Neural Network,LSTM-RNN)对 SQL注入进行检测并分类,分类的结果分为SQL注入与Non-SQL注入类别。本文的主要工作如下:对机器学习的基本方法进行研究,改进了对输入样本的预处理与词法分析过程,并提出一种基于特征向量长度的去噪声方法。对于用户可能输入的字符序列,将特殊字符分离法与空格分离法相结合来提取特征,并对提取的特征在标记(Token)化过程进行原子化处理,使其最小的字符单元也具备特定意义的Token。经特征提取与词法分析后,生成特定顺序Token的特征向量,并过滤掉那些特征向量长度小于去噪阈值的样本,然后用Naive Bayes模型进行机器学习训练对其评估与分类。实验结果表明,改进后的检测方案对于数据集预先给定了样本类别的情况下具有较好的分类效果,可以对SQL注入实行有效的检测。对循环神经网络及长短时记忆单元深入研究,在基于Keras框架与TensorFlow的基础上,提出了一种基于LSTM-RNN模型的SQL注入检测方案。在预处理阶段,对给定的数据集样本通过Word2vec生成词向量模型;在训练阶段,通过将生成的词向量模型与LSTM-RNN作为输入,训练得到LSTM-RNN分类器;在测试阶段,通过将词向量模型与LSTM-RNN分类器作为输入,并通过Softmax分类器得到测试样本的分类结果。最后通过实验证明了模型检测的稳定性与较高的准确率。