用于检测SQL注入的方法和装置制造方法及图纸

技术编号:24590505 阅读:29 留言:0更新日期:2020-06-21 02:34
本公开的实施例公开了用于检测SQL注入的方法和装置,涉及网络安全技术领域。该方法的一具体实施方式包括:获取待检测的SQL语句;将SQL语句中的关键信息转换成相应的词法单词,并将词法单词转换成向量;基于词法单词构建抽象语法树,其中,抽象语法树的每个结点与一个向量对应;按照结点的优先级由高到低的顺序从抽象语法树中选择预定第一数目的目标结点,并基于目标结点对应的向量构造特征向量矩阵;将特征向量矩阵输入预先训练的SQL注入检测模型,输出SQL语句的类别。该实施方式提高了SQL注入的检测准确率并缩短了检测时间。

Methods and devices for detecting SQL injection

【技术实现步骤摘要】
用于检测SQL注入的方法和装置
本公开的实施例涉及网络安全
,具体涉及用于检测SQL注入的方法和装置。
技术介绍
SQL(structuredquerylanguage,结构化查询语言)是一种用于操作数据库的语言。SQL注入是指把恶意SQL命令插入到SQL语句中,并在万维网(worldwideweb,Web)中的表单提交处、或者输入域名处、或者页面请求处输入插入恶意SQL命令的SQL语句,从而达到欺骗服务器执行恶意SQL命令,以窃取、篡改或者恶意删除数据库中的数据。SQL注入检测主要是检测包含有恶意SQL命令的SQL语句。传统SQL注入检测主要依赖于匹配模型库。在一种检测方法中,匹配模型库包括合法SQL语句的抽象语法树,合法SQL语句即不包含恶意SQL命令的SQL语句;在另一种检测方法中,匹配模型库包括非法SQL语句的抽象语法树,非法SQL语句即包含恶意SQL命令的SQL语句。对一个SQL语句进行检测时,首先获取该SQL语句的抽象语法树,再对比该抽象语法树与匹配模型库中的抽象语法树,进而得出该SQL语句的检测结果。传统SQL注入检测方法有以下缺点:1、传统防御方式在规则缺失的情况下,导致SQL注入检测失败;2、攻击者在攻击过程中,通过构造bypass(绕过)方法,使得传统防御方式规则集中已有规则失效;3、在传统防御方式中,随着规则集中规则不断增多,导致SQL注入检测系统的开发和维护变得困难。
技术实现思路
本公开的实施例提出了用于检测SQL注入的方法和装置。第一方面,本公开的实施例提供了一种用于检测SQL注入的方法,包括:获取待检测的SQL语句;将SQL语句中的关键信息转换成相应的词法单词,并将词法单词转换成向量;基于词法单词构建抽象语法树,其中,抽象语法树的每个结点与一个向量对应;按照结点的优先级由高到低的顺序从抽象语法树中选择预定第一数目的目标结点,并基于目标结点对应的向量构造特征向量矩阵;将特征向量矩阵输入预先训练的SQL注入检测模型,输出SQL语句的类别。在一些实施例中,该方法还包括:获取SQL语句的注释信息;将注释信息转换成注释向量;基于目标结点对应的向量和注释向量重新构造特征向量矩阵。在一些实施例中,注释信息包括至少一个注释块,该方法还包括:将每注释块转换成一个注释向量,得到注释向量集;从注释向量集中随机选择预定第二数目的注释向量;按照结点的优先级由高到低的顺序从抽象语法树中选择预定第三数目的目标结点,其中,第二数目与第三数目之和等于第一数目;基于所选择的预定第三数目的目标结点对应的向量和所选择的预定第二数目的注释向量重新构造特征向量矩阵。在一些实施例中,该方法还包括:获取训练样本集,其中,训练样本包括样本SQL语句和用于表征样本SQL语句是否是SQL注入的标注信息;对训练样本集中每个训练样本构建一个样本语法树,其中,样本语法树的每个结点与一个向量对应;对于每个样本语法树,按照结点的优先级由高到低的顺序从该样本语法树中选择预定第一数目的目标样本结点,并基于目标样本结点对应的向量构造特征向量矩阵;将各样本语法树构造的特征向量矩阵组成向量空间;将向量空间和标注信息分别作为SQL注入检测模型的输入和期望输出,利用机器学习方法训练SQL注入检测模型。在一些实施例中,该方法还包括:获取训练样本集,其中,训练样本包括样本SQL语句、注释信息和用于表征样本SQL语句是否是SQL注入的标注信息;对训练样本集中每个训练样本构建一个样本语法树,其中,样本语法树的每个结点与一个向量对应;将训练样本集中的样本注释信息转换成样本注释向量集;从样本注释向量集中随机选择预定第二数目的样本注释向量;对于每个样本语法树,按照结点的优先级由高到低的顺序从该样本语法树中选择预定第三数目的目标样本结点,基于所选择的预定第三数目的目标样本结点对应的向量和所选择的预定第二数目的样本注释向量重新构造特征向量矩阵,其中,第二数目与第三数目之和等于第一数目;将各样本语法树构造的特征向量矩阵组成向量空间;将向量空间和标注信息分别作为SQL注入检测模型的输入和期望输出,利用机器学习方法训练SQL注入检测模型。在一些实施例中,结点的优先级按以下顺序递减:与预设的高风险普通注入的关键信息相关的结点;与预设的高风险绕过注入的关键信息相关的结点;包含特殊字符的关键信息相关的结点;其余叶子结点;其余非叶子结点。第二方面,本公开的实施例提供了一种用于检测SQL注入的装置,包括:获取单元,被配置成获取待检测的SQL语句;转换单元,被配置成将SQL语句中的关键信息转换成相应的词法单词,并将词法单词转换成向量;构建单元,被配置成基于词法单词构建抽象语法树,其中,抽象语法树的每个结点与一个向量对应;选择单元,被配置成按照结点的优先级由高到低的顺序从抽象语法树中选择预定第一数目的目标结点,并基于目标结点对应的向量构造特征向量矩阵;检测单元,被配置成将特征向量矩阵输入预先训练的SQL注入检测模型,输出SQL语句的类别。在一些实施例中,选择单元进一步被配置成:获取SQL语句的注释信息;将注释信息转换成注释向量;基于目标结点对应的向量和注释向量重新构造特征向量矩阵。在一些实施例中,注释信息包括至少一个注释块,选择单元进一步被配置成:将每注释块转换成一个注释向量,得到注释向量集;从注释向量集中随机选择预定第二数目的注释向量;按照结点的优先级由高到低的顺序从抽象语法树中选择预定第三数目的目标结点,其中,第二数目与第三数目之和等于第一数目;基于所选择的预定第三数目的目标结点对应的向量和所选择的预定第二数目的注释向量重新构造特征向量矩阵。在一些实施例中,该装置还包括第一训练单元,被配置成:获取训练样本集,其中,训练样本包括样本SQL语句和用于表征样本SQL语句是否是SQL注入的标注信息;对训练样本集中每个训练样本构建一个样本语法树,其中,样本语法树的每个结点与一个向量对应;对于每个样本语法树,按照结点的优先级由高到低的顺序从该样本语法树中选择预定第一数目的目标样本结点,并基于目标样本结点对应的向量构造特征向量矩阵;将各样本语法树构造的特征向量矩阵组成向量空间;将向量空间和标注信息分别作为SQL注入检测模型的输入和期望输出,利用机器学习装置训练SQL注入检测模型。在一些实施例中,该装置还包括第二训练单元,被配置成:获取训练样本集,其中,训练样本包括样本SQL语句、注释信息和用于表征样本SQL语句是否是SQL注入的标注信息;对训练样本集中每个训练样本构建一个样本语法树,其中,样本语法树的每个结点与一个向量对应;将训练样本集中的样本注释信息转换成样本注释向量集;从样本注释向量集中随机选择预定第二数目的样本注释向量;对于每个样本语法树,按照结点的优先级由高到低的顺序从该样本语法树中选择预定第三数目的目标样本结点,基于所选择的预定第三数目的目标样本结点对应的向量和所选择的预定第二数目的样本注释向量重新构造特征向量矩阵,其中,第二数目与第三数目之和等于第一数目;将各样本语法树构造的特征本文档来自技高网...

【技术保护点】
1.一种用于检测SQL注入的方法,包括:/n获取待检测的SQL语句;/n将所述SQL语句中的关键信息转换成相应的词法单词,并将所述词法单词转换成向量;/n基于所述词法单词构建抽象语法树,其中,所述抽象语法树的每个结点与一个向量对应;/n按照结点的优先级由高到低的顺序从所述抽象语法树中选择预定第一数目的目标结点,并基于所述目标结点对应的向量构造特征向量矩阵;/n将所述特征向量矩阵输入预先训练的SQL注入检测模型,输出所述SQL语句的类别。/n

【技术特征摘要】
1.一种用于检测SQL注入的方法,包括:
获取待检测的SQL语句;
将所述SQL语句中的关键信息转换成相应的词法单词,并将所述词法单词转换成向量;
基于所述词法单词构建抽象语法树,其中,所述抽象语法树的每个结点与一个向量对应;
按照结点的优先级由高到低的顺序从所述抽象语法树中选择预定第一数目的目标结点,并基于所述目标结点对应的向量构造特征向量矩阵;
将所述特征向量矩阵输入预先训练的SQL注入检测模型,输出所述SQL语句的类别。


2.根据权利要求1所述的方法,所述方法还包括:
获取所述SQL语句的注释信息;
将所述注释信息转换成注释向量;
基于所述目标结点对应的向量和所述注释向量重新构造特征向量矩阵。


3.根据权利要求2所述的方法,所述注释信息包括至少一个注释块,所述方法还包括:
将每注释块转换成一个注释向量,得到注释向量集;
从所述注释向量集中随机选择预定第二数目的注释向量;
按照结点的优先级由高到低的顺序从所述抽象语法树中选择预定第三数目的目标结点,其中,所述第二数目与所述第三数目之和等于所述第一数目;
基于所选择的预定第三数目的目标结点对应的向量和所选择的预定第二数目的注释向量重新构造特征向量矩阵。


4.根据权利要求1所述的方法,其中,所述方法还包括:
获取训练样本集,其中,训练样本包括样本SQL语句和用于表征样本SQL语句是否是SQL注入的标注信息;
对所述训练样本集中每个训练样本构建一个样本语法树,其中,样本语法树的每个结点与一个向量对应;
对于每个样本语法树,按照结点的优先级由高到低的顺序从该样本语法树中选择所述预定第一数目的目标样本结点,并基于所述目标样本结点对应的向量构造特征向量矩阵;
将各样本语法树构造的特征向量矩阵组成向量空间;
将所述向量空间和标注信息分别作为SQL注入检测模型的输入和期望输出,利用机器学习方法训练所述SQL注入检测模型。


5.根据权利要求2所述的方法,其中,所述方法还包括:
获取训练样本集,其中,训练样本包括样本SQL语句、注释信息和用于表征样本SQL语句是否是SQL注入的标注信息;
对所述训练样本集中每个训练样本构建一个样本语法树,其中,样本语法树的每个结点与一个向量对应;
将所述训练样本集中的样本注释信息转换成样本注释向量集;
从所述样本注释向量集中随机选择预定第二数目的样本注释向量;
对于每个样本语法树,按照结点的优先级由高到低的顺序从该样本语法树中选择所述预定第三数目的目标样本结点,基于所选择的预定第三数目的目标样本结点对应的向量和所选择的预定第二数目的样本注释向量重新构造特征向量矩阵,其中,所述第二数目与所述第三数目之和等于所述第一数目;
将各样本语法树构造的特征向量矩阵组成向量空间;
将所述向量空间和标注信息分别作为SQL注入检测模型的输入和期望输出,利用机器学习方法训练所述SQL注入检测模型。


6.根据权利要求1-5之一所述的方法,结点的优先级按以下顺序递减:
与预设的高风险普通注入的关键信息相关的结点;
与预设的高风险绕过注入的关键信息相关的结点;
包含特殊字符的关键信息相关的结点;
其余叶子结点;
其余非叶子结点。


7.一种用于检测SQL注入的装置,包括:
获取单元,被配置成获取待检测的SQL语句;
转换单元,被配置成将所述SQL语句中的关键信息转换成相应的词法单词,并将所述词法单词转换成向量;
构建单元,被配置成基于所述词法单词构建抽象语法树,其中,所述抽象语...

【专利技术属性】
技术研发人员:赵耀东
申请(专利权)人:北京百度网讯科技有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1