欢迎光临小豌豆知识网!
当前位置:首页 > 电学技术 > 电通讯技术> 基于HMM模型的SQL注入攻击检测方法独创技术11059字

基于HMM模型的SQL注入攻击检测方法

2021-03-12 17:22:35

基于HMM模型的SQL注入攻击检测方法

  技术领域

  本发明涉及Web安全技术领域,特别是一种基于HMM模型的SQL注入攻击检测方法。

  背景技术

  SQL注入攻击是一种常用的Web攻击手段,其通常是以网站数据库为目标,利用Web应用程序对特殊字符串不完全过滤的缺陷,通过精心构造字符串达到非法访问网站数据库获取机密或者在网站数据库执行命令的目的。SQL注入攻击和正常用户的访问都是一样利用HTTP协议进行访问的,普通的防火墙无法对其进行拦截,攻击发生时网络流量和用户行为都没有明显的变化,攻击不易察觉,所以如何有效的进行SQL注入攻击的检测是很有必要的。已有的常用手段是采用正则匹配的传统方式根据关键字来识别SQL注入攻击。流程通常是将表单提交的信息同语法规则库进行匹配,从而根据SQL语法识别出SQL注入攻击。这种传统的方式匹配识别的精准度往往取决于语法库涵盖的范围,且无法解决未知问题,识别率低,不够智能,频繁的更新规则库也给系统的维护带来了诸多不便。

  发明内容

  为解决现有技术中存在的问题,本发明的目的是提供一种基于HMM模型的SQL注入攻击检测方法,本发明采用HMM隐马尔可夫模型检测SQL注入攻击,有效检测出SQL注入攻击,保证Web安全。

  为实现上述目的,本发明采用的技术方案是:一种基于HMM模型的SQL注入攻击检测方法,包括:

  步骤一、对SQL语句进行解析,包括词法、语法分析,得到SQL的语法树,然后遍历SQL语法树进行裁剪,使之变为规范语法树,得到SQL语句的主干结构;

  步骤二、接着对SQL规范语法树进行特征提取,并对特征向量进行范化,最后对SQL语句进行分词,分词后统计每个词的频率,根据需要选择全部或者部分词作为哈希表键值,并依次对该哈希表进行编号,从而得到该哈希表对字符串的编码;

  步骤三、将处理好的SQL语句输入到HMM模型中进行训练,学习SQL语法规则,HMM模型训练后得出一个阈值,等待新的用户输入新的SQL语句时,将用户输入的新数据放入HMM模型中并对其计算相似度打出分值,用打出的分值和训练的阈值进行比对,如果分值小于阈值则证明用户输入的是合法SQL语句;如果分值大于阈值则说明用户输入的是非法SQL语句,判定为SQL注入攻击。

  作为一种优选的实施方式,所述步骤二具体如下:

  根据规范语法树提取模式特征,令f(k)为第k条SQL语句的特征向量:

  f(k)={fk1,fk2,…,fKL}(1<=k<=K)

  其中,K为SQL注入攻击的训练样本总数,L为提取的特征个数,fk1为第k条SQL语句的第l个特征向量,根据分词原则,对以上特征进行范化:

  S(k)={sk1,sk2,…,skL}

  其中,Sk1为第k条SQL语句的特征向量的第l个向量对应的范化符号;

  利用HASH算法对s(k)进行HASH计算,即

  H(k)=HASH(s(k))

  其中,H(k)为第k条SQL语句的序列化词集编码。

  作为另一种优选的实施方式,所述步骤三具体包括以下步骤:

  (1)设所有可能的状态集合为Q,Q={q1,q2,…,qN},其中,N是可能的状态数,t时刻的状态值为qt;

  (2)设所有可能的观测的集合为V,V={v1,v2,…,vM},其中,M是可能的观测数,t时刻的观测值为vt;令I是长度为T的状态序列,I={i1,i2,…,iT},则对应的观测序列为O={o1,o2,…,oT};

  (3)设初始状态概率向量为π,π=(πi),其中,πi=P(i1=qi),i=1,2,…,N,πi是时刻t=1处于状态qi的概率;

  (4)设状态转移概率矩阵为A,A=[aij]N×N,其中,aij=P(it+1=qj|it=qi),i=1,2,…,N;j=1,2,…,N,aij是在时刻t处于状态qi的条件下在时刻t+1转移到状态qj的概率;

  (5)设观测概率转移矩阵为B,B=[bj(k)]M×M,其中,bj(k)=P(ot=vk|it=qj),k=1,2,…,M;j=1,2,…,N,bj(k)是在时刻t处于状态qj的条件下生成观测vk的概率;

  隐马尔可夫模型由初始状态概率向量π、状态转移概率矩阵A和观测概率转移矩阵B决定,π和A决定了隐藏的马尔可夫链,B决定了如何从状态生成观测,因此隐马尔可夫模型λ可以用三元符号表示,即λ=(A,B,π);

  将H(k)作为输入,输入到HMM模型中即可计算出预测概率和阈值Y和分值S;如果S<Y则证明输入是正常的,如果S>Y则证明输入是异常的,即可检测出SQL注入攻击。

  作为另一种优选的实施方式,还包括以下步骤:

  根据观测集合V,V={v1,v2,…,vM},自动化更新阈值,随着HMM模型不断的学习和数据量的增加,HMM模型可以不断学习新的阈值,从而使比对结果更加精确。

  本发明解决问题的方法技术本质是利用HMM模型的高效,准确,且可以对未知的情况做出预测的特性,设计出一种可以将处理过后的SQL语句放入模型种检测,从而根据学习的阈值检测出SQL注入攻击。与现有的根据规则库匹配检测SQL注入攻击的方法相比,基于HMM模型的新型SQL注入攻击检测方法独有的技术特征是:1.对SQL语句进行解析,得到SQL语句主干结构,通过裁剪得到规范语法树;2.根据分词原则提取规范语法树关键特征,并对特征向量进行范化;3.计算HASH值;4.输入HMM模型进行训练,学习SQL语法,并得出阈值,通过阈值即可判断结果。特征1、2、3实现提取有效特征为实现高效识别打下基础,特征4利用HMM模型实现对未知语句的可预测性,并且有效提高识别准确率和识别效率。

  本发明的有益效果是:

  本发明针对现有根据规则库匹配传统检测SQL注入攻击的方法的无法解决未知问题,不够智能,需要频繁更新规则库的问题,发明设计了一种基于HMM隐马尔可夫模型的新型SQL注入攻击检测方法,解决了现有技术识别率低,无法解决未知问题,不够智能方便的问题,提高了SQL注入攻击检测的准确率。

  附图说明

  图1为本发明实施例的流程框图。

  具体实施方式

  下面结合附图对本发明的实施例进行详细说明。

  实施例

  如图1所示,一种基于HMM模型的SQL注入攻击检测方法,包括:

  步骤一、对SQL语句进行解析,包括词法、语法分析,得到SQL的语法树,然后遍历SQL语法树进行裁剪,使之变为规范语法树,得到SQL语句的主干结构;裁剪过程主要是将SQL语句中用户输入的部分,如数字以及字符串等用特征的字符进行替换,同时删除一些无用的节点,这一步处理能够提取出SQL语句中的关键部分,从而忽略对结果影响不大的数据,提高检测效率;

  步骤二、接着对SQL规范语法树进行特征提取,并对特征向量进行范化,在提取过程中,为减少向量空间,需要把数字和字符等进行范化,最后对SQL语句进行分词,分词后统计每个词的频率,根据需要选择全部或者部分词作为哈希表键值,并依次对该哈希表进行编号,从而得到该哈希表对字符串的编码;此步旨在为HMM模型提供标准化的输入,让HMM模型训练出可靠的阈值,得出可靠结果,提高SQL注入攻击检测的准确率。

  该步骤具体如下:

  根据规范语法树提取模式特征,令f(k)为第k条SQL语句的特征向量:

  f(k)={fk1,fk2,…,fKL}(1<=k<=K)

  其中,K为SQL注入攻击的训练样本总数,L为提取的特征个数,fk1为第k条SQL语句的第l个特征向量,根据分词原则,对以上特征进行范化:

  S(k)={sk1,sk2,…,skL}

  其中,Sk1为第k条SQL语句的特征向量的第l个向量对应的范化符号;

  利用HASH算法对s(k)进行HASH计算,即

  H(k)=HASH(s(k))

  其中,H(k)为第k条SQL语句的序列化词集编码。

  步骤三、将处理好的SQL语句输入到HMM模型中进行训练,学习SQL语法规则,HMM模型训练后得出一个阈值,等待新的用户输入新的SQL语句时,将用户输入的新数据放入HMM模型中并对其计算相似度打出分值,用打出的分值和训练的阈值进行比对,如果分值小于阈值则证明用户输入的是合法SQL语句;如果分值大于阈值则说明用户输入的是非法SQL语句,判定为SQL注入攻击,这一步采用HMM算法模型进行训练和预测,对比其他算法效率更高,准确率也有所提高,从而综合提高了SQL注入攻击的识别率。

  该步骤具体包括以下步骤:

  (1)设所有可能的状态集合为Q,Q={q1,q2,…,qN},其中,N是可能的状态数,t时刻的状态值为qt;

  (2)设所有可能的观测的集合为V,V={v1,v2,…,vM},其中,M是可能的观测数,t时刻的观测值为vt;令I是长度为T的状态序列,I={i1,i2,…,iT},则对应的观测序列为O={o1,o2,…,oT};

  (3)设初始状态概率向量为π,π=(πi),其中,πi=P(i1=qi),i=1,2,…,N,πi是时刻t=1处于状态qi的概率;

  (4)设状态转移概率矩阵为A,A=[aij]N×N,其中,aij=P(it+1=qj|it=qi),i=1,2,…,N;j=1,2,…,N,aij是在时刻t处于状态qi的条件下在时刻t+1转移到状态qj的概率;

  (5)设观测概率转移矩阵为B,B=[bj(k)]M×M,其中,bj(k)=P(ot=vk|it=qj),k=1,2,…,M;j=1,2,…,N,bj(k)是在时刻t处于状态qj的条件下生成观测vk的概率;

  隐马尔可夫模型由初始状态概率向量π、状态转移概率矩阵A和观测概率转移矩阵B决定,π和A决定了隐藏的马尔可夫链,B决定了如何从状态生成观测,因此隐马尔可夫模型λ可以用三元符号表示,即λ=(A,B,π);

  将H(k)作为输入,输入到HMM模型中即可计算出预测概率和阈值Y和分值S;如果S<Y则证明输入是正常的,如果S>Y则证明输入是异常的,即可检测出SQL注入攻击;

  (6)根据观测集合V,V={v1,v2,…,vM},自动化更新阈值,随着HMM模型不断的学习和数据量的增加,HMM模型可以不断学习新的阈值,从而使比对结果更加精确。

  以上所述实施例仅表达了本发明的具体实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。

《基于HMM模型的SQL注入攻击检测方法.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式(或pdf格式)