一种基于类不平衡的SQL注入攻击检测方法和装置与流程

文档序号:36529758发布日期:2023-12-29 21:27阅读:22来源:国知局
一种基于类不平衡的的制作方法

本发明涉及sql注入攻击检测,具体涉及一种基于类不平衡的sql注入攻击检测方法和装置。


背景技术:

1、sql注入攻击是一种常见的网络安全威胁,它利用应用程序对用户输入数据的不当处理,将恶意的sql代码注入到数据库查询中。一旦成功注入,攻击者可以执行任意的数据库操作,甚至获取敏感信息。近年来,研究人员开始探索深度学习在sql注入攻击检测方面的应用。通过训练模型来识别恶意请求,并进行实时监测和防护。例如,在序列模型方面,使用循环神经网络(rnn)或长短时记忆网络(lstm)等序列模型来对输入的请求序列进行建模和分析。通过训练这些模型,它们可以学习到sql注入攻击特征的表示,并识别恶意请求;在神经网络方面,利用卷积神经网络(cnn)对输入进行特征提取和分类。这种方法可以捕捉到请求中的局部模式和结构信息,并判断是否存在sql注入攻击;在混合模型方面,结合多个深度学习模型,如将cnn与rnn相结合,以获得更全面、准确的特征提取和分析能力,这样可以提高对sql注入攻击的检测性能。

2、目前,尽管深度学习在sql注入攻击检测中显示出一定的潜力,但仍然存在一些挑战和限制。例如,正常请求和恶意请求之间的数据不平衡是一个常见的问题。由于sql注入攻击相对较少,恶意样本数量较小,这可能导致模型过于偏向正常请求而无法准确检测到所有攻击。


技术实现思路

1、本发明的目的是解决sql注入攻击检测方法在数据集存在类不平衡问题时出现的检测精度降低的问题,以满足sql注入攻击检测实际应用场景需要;具体地,本发明公开了一种基于类不平衡的sql注入攻击检测方法和装置,面对类不平衡数据集,通过优化损失函数和混合精度训练实现对sql注入攻击的有效检测,同时克服现有的检测方法误报率高、检测精度低等问题。

2、为实现上述技术目的,本发明采取的技术方案为:

3、一种基于类不平衡的sql注入攻击检测方法,所述sql注入攻击检测方法包括以下步骤:

4、s1,根据采集的正常sql样本和sql注入攻击样本构建原始数据集,对原始数据集进行重构并划分为训练集、验证集和测试集;

5、s2,对重构后的数据集中的sql样本进行基于固定映射规则的编码,得到数据集中每条sql样本对应的sql文本向量;

6、s3,基于lstm构建sql注入攻击检测模型,采用得到的sql文本向量对sql注入攻击检测模型进行训练;

7、s4,通过训练得到的sql注入攻击检测模型,对测试集中未知的sql样本进行检测。

8、进一步地,步骤s1中,正常sql样本和sql注入攻击样本的采集过程包括以下子步骤:

9、s11,通过公开数据集收集正常的sql样本和sql注入攻击样本,正常的sql样本的数量大于sql注入攻击样本的数量;

10、s12,利用基于gan的sql语句生成模块对sql注入攻击样本进行学习并生成新的sql注入攻击样本;所述基于gan的sql语句生成模块包括知识嵌入模块和生成判别模块;知识嵌入模块用于将sql语句语法规则以及异常sql语句的关键词作为先验知识嵌入判别器;生成判别模块用于学习异常sql语句特征并生成新的异常sql语句。

11、进一步地,步骤s12中,所述生成判别模块学习异常sql语句特征并生成新的异常sql语句的过程包括以下子步骤:

12、从sql注入攻击样本pdata(x)中采样{x1,x2,...,xm},其中,xi表示编码后的第i条sql文本向量;从包含先验知识的知识嵌入样本pprior(z)中采样{z1,z2,...,zm},其中,zi表示知识嵌入样本中的第i条sql文本向量,m表示编码后的sql文本向量的数量;

13、通过生成器获得生成样本其中,表示新生成的第i条sql文本向量;

14、通过梯度下降更新θd来最大化

15、

16、其中,θd为判别器的参数,为生成器输出与样本间的损失,d(xi)和分别为生成器输入的样本和对应生成的样本,η为学习率,表示对中的θd求导;

17、通过梯度下降更新θg来最小化

18、

19、其中,θg为生成器的参数,表示对中的θg求导。

20、进一步地,步骤s1中,对原始数据集进行重构的过程包括以下子步骤:

21、对数据集中冗余的sql样本进行剔除;

22、对数据集中的sql语句进行微调,将关键词小写化、数字泛化为0、网站账号信息替换为http://u。

23、进一步地,步骤s2中,对重构后的数据集中的sql样本进行基于固定映射规则的编码的过程包括以下子步骤:

24、s21,将sql样本拆分为令牌,具体地,将sql样本中的中文拆分为单个汉字或词语,将英文拆分为单个字母或单词,除中文和英文之外的特殊字符逐个拆分;

25、s22,根据固定的映射规则将拆分的每个令牌映射到对应的id,得到文本向量;

26、s23,对不足模型允许处理的长度的文本向量进行填充,对超过模型允许处理的长度的文本向量进行截断,使得每个输入的文本向量都具有相同的长度。

27、进一步地,步骤s3中,所述sql注入攻击检测模型包括依次连接的lstm模型、注意力层和全连接层;其中,lstm模型单元下一时刻的输入x′t+1由原本下一时刻的输入xt+1以及当前时刻的输入xt与隐藏状态ht交互融合得到,具体表达为:

28、x′t+1=xt+1+σ([ht,xt]);

29、编码后的sql文本向量输入到lstm模型,通过lstm模型学习序列中更多的关键信息;

30、所述lstm模型输出的数据进一步输入到注意力层,对lstm模型中不同时刻输出的向量权重进行计算,以提取并突出异常文本向量的特征;

31、所述全连接层用于输出分类类别。

32、进一步地,所述sql注入攻击检测模型的损失函数为:

33、

34、其中,n为样本数,pi和yi分别表示预测值和实际值,α为平滑系数,γ为平滑系数。

35、进一步地,步骤s3中,采用得到的sql文本向量对sql注入攻击检测模型进行训练的过程包括以下步骤:

36、s31,将sql注入攻击检测模型训练过程中产生的权重参数、激活参数、梯度参数、中间变量数据采用fp16进行存储,同时将权重参数复制一份存储为fp32用于训练时更新;

37、s32,采用动态损失缩放算法,在不引起溢出的情况下使用最高损失缩放因子进行损失缩放;包括以下步骤:

38、在训练初始阶段,采用预先设置的最大缩放因子,在训练迭代中不断检查数据是否溢出;如果没有溢出,继续迭代;如果溢出,减小缩放因子,直到不产生溢出;在训练后期,损失趋于收敛稳定时,在不引起溢出的情况下增大缩放因子以防止数据下溢;

39、在训练过程中,使用fp16进行矩阵乘法运算,使用fp32进行矩阵乘法运算中的累加运算,再将fp32的值转换为fp16进行存储。

40、进一步地,步骤s4中,通过比较sql注入攻击检测模型输出的值范围,判断待检测的sql样本是否包含sql注入攻击。

41、本发明还公开了一种基于类不平衡的sql注入攻击检测装置,所述sql注入攻击检测装置包括:

42、数据集重构模块,用于根据采集的正常sql样本和sql注入攻击样本构建原始数据集,对原始数据集进行重构并划分为训练集、验证集和测试集;

43、sql文本向量生成模块,对重构后的数据集中的sql样本进行基于固定映射规则的编码,得到数据集中每条sql样本对应的sql文本向量;

44、sql注入攻击检测模型训练模块,用于基于lstm构建得到sql注入攻击检测模型,并采用得到的sql文本向量对sql注入攻击检测模型进行训练;

45、sql注入攻击检测模型,用于对测试集中未知的sql样本进行检测。

46、与现有技术相比,本发明的有益效果如下:

47、第一,本发明的基于类不平衡的sql注入攻击检测方法和装置,具有较好的特征提取能力和检测泛化能力,对传统sql注入攻击具有优异的检测性能,对新型sql注入攻击也有一定的检测能力。

48、第二,本发明的基于类不平衡的sql注入攻击检测方法和装置,通过知识嵌入的gan实现对sql语句异常样本的生成,该方案无需预训练词嵌入模型和语法规则解析;

49、第三,本发明的基于类不平衡的sql注入攻击检测方法和装置,通过优化lstm模型,实现lstm模型对sql文本向量分类应用场景的应用;

50、第四,本发明的基于类不平衡的sql注入攻击检测方法和装置,通过优化损失函数,缓解了分类问题中的类别不平衡问题;

51、第五,本发明的基于类不平衡的sql注入攻击检测方法和装置,通过引入混合精度训练,极大地提高了模型地训练效率。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1