一种SQL注入检测方法与流程

文档序号:35577517发布日期:2023-09-24 20:03阅读:47来源:国知局
一种SQL注入检测方法与流程

本申请涉及数据库系统安全,特别是涉及一种sql注入检测方法。


背景技术:

1、sql注入被认为是最危险的漏洞之一,攻击者可以通过注入恶意的sql代码来绕过应用程序的身份验证,获取敏感信息,修改数据库内容或者执行其他恶意操作。传统的防御方法使用静态方法检测先前已知的sql注入攻击,主要依靠预先定义的规则来识别已知的sql注入攻击。具体来说,静态方法会检查sql查询语句中是否包含特定的关键字、符号或者语法结构,这些关键字、符号或语法结构通常与sql注入攻击相关,如果匹配到这些模式,系统就会标记查询为潜在的sql注入攻击,但传统方式需要手动调整规则来适应不同的攻击模式,也难以处理复杂的攻击模式,面临着无法捕捉未知或新型攻击的局限性。


技术实现思路

1、本发明针对现有技术中存在的上述不足,提供一种sql注入检测方法.

2、本发明实施例提供一种sql注入检测方法,包括:

3、收集用于训练和测试的sql查询数据集,sql查询数据集包括sql注入类别的查询语句和非sql注入类别的查询语句;

4、针对sql查询数据集通过使用卡方检验进行特征提取,选择与sql注入攻击检测相关的特征向量;

5、对概率神经网络pnn模型进行训练,与sql注入攻击检测相关的特征向量为pnn模型的输入,输出sql查询语句类别。

6、在一些实施例中,通过使用卡方检验进行特征提取,选择与sql注入攻击检测相关的特征向量,包括:

7、卡方检验公式如式(1),其中代表观察频数,代表期望频数,为卡方统计量,n为列联表中每个单元格的索引;

8、 (1)

9、选择卡方值大于预设阈值的特征,确定为与sql注入攻击检测相关的特征向量。

10、在一些实施例中,pnn模型有四种类型的层,输入层、模式层、求和层和输出层,对pnn模型进行训练,包括:

11、输入层获取输入的数据,将输入分发给神经元;

12、模式层将每个输入数据对应神经元,根据高斯核函数计算输入与样本的相似度,生成模式输出;

13、高斯核函数如式(2):(2)

14、其中,表示输入数据与第个训练样本的核函数输出,它的值在0到1之间,值越大表示相似度越高,表示输入数据维度,即卡方检验得到的与sql注入攻击检测相关的特征向量中的特征数,是平滑因子,通过粒子群算法训练公式(2)中的平滑因子,表示输入数据,表示类别中第个训练样本,表示输入数据和样本数据之间的欧式距离;

15、求和层对属于同一类别的概率输出求和,近似估计类别的条件概率密度,求和层公式如式(3),通过对类别的集合求和得到类别的条件概率密度,表示输入数据属于类别的概率:(3)

16、输出层基于贝叶斯准则,选择后验概率最大的类别作为最终输出,输出层公式如式(4):(4)

17、其中,为新样本分配到的类别,为类别的个数,应用在sql注入检测中为sql注入语句和非sql注入语句两类,代表样本属于sql注入语句还是非注入语句。

18、在一些实施例中,通过粒子群算法训练公式(2)中的平滑因子,包括:

19、定义搜索空间为一维,随机生成粒子的初始位置和速度,初始化粒子群,对于第m个粒子,其初始位置和速度分别为、;

20、对每个值pnn建模,通过k交叉验证来计算分类准确率得到适应度值;

21、记录每个值对应的最高适应度值作为个体最优解和记录所有值中最高适应度值作为全局最优解;

22、通过不断更新粒子的位置和速度来优化适应度函数,速度和位置更新公式如下式(5)、式(6):

23、(5)

24、(6)

25、其中,、、、分别是粒子当前位置和速度和下次迭代位置和速度,是惯性权重,用来控制粒子的惯性,使其保持之前的速度方向,通常的取值范围为[0,1],和是个体学习因子和社会学习因子,和的取值范围是[0,1],和是[0,1]范围内的随机数,用来引入随机性,增加算法的探索性;

26、迭代优化并返回对应的值作为最优解。

27、在一些实施例中,训练平滑因子时训练集进一步划分为k个子集,对pnn模型进行k折交叉验证,计算分类准确率以衡量pnn模型在当前下的性能;

28、其中,在每次交叉验证中,使用训练集训练pnn模型,并在训练集中的验证集上进行验证。

29、在一些实施例中,对概率神经网络pnn模型进行训练,与sql注入攻击检测相关的特征向量为pnn模型的输入,输出sql-查询语句类型之后,还包括:

30、通过分类器的混淆矩阵以sql查询数据集中的测试集作为输入对pnn模型进行评估。

31、在一些实施例中,分类器的混淆矩阵显示为2x2网格中的单元格,通过分类器的混淆矩阵以sql查询数据集中的测试集作为输入对pnn模型进行评估,包括:

32、通过分类器的混淆矩阵确定测试集中真实值为正预测值为正的第一分类结果的语句数量、测试集中真实值为正预测值为负的第二分类结果的语句数量、测试集中真实值为负预测值为正的第三分类结果的语句数量、测试集中真实值为负预测值为负的第四分类结果的语句数量,其中,真实值为正表示实际存在sql注入,真实值为负表示实际不存在sql注入,预测值为正表示预测存在sql注入,预测值为负表示预测不存在sql注入;

33、通过下述四种评价方法,根据、、、计算分类准确率、精密度、召回率和f-measure,如下式所示:

34、(7)

35、(8)

36、(9)

37、(10)。

38、在一些实施例中,通过使用卡方检验进行特征提取之前,还包括:

39、对所述sql查询数据集中的训练集进行数据预处理。

40、在一些实施例中,对所述sql查询数据集进行数据预处理,包括:

41、对训练集中的数据进行标准化,去除噪声和重复数据;

42、对训练集中的查询语句进行分词处理,将查询拆分为token,并对token进行编码,将其转换为模型可理解的数值形式。

43、在一些实施例中,对训练集中的查询语句进行分词处理,将查询拆分为token,包括:

44、将查询语句拆分为关键字token、标识符token、运算符token、常量token,将查询语句转换为词法单元序列。

45、本发明实施例中,通过深度学习的自动特征提取和学习大量样本数据中的模式,具有强大的泛化能力和自适应性,能够有效地识别未知和新颖的sql注入攻击。并且通过使用卡方检验进行特征提取,我们能够选择出与sql注入攻击检测相关性较高的特征,提高模型的准确性和性能。



技术特征:

1.一种sql注入检测方法,其特征在于,包括:

2.根据权利要求1所述的sql注入检测方法,其特征在于,通过使用卡方检验进行特征提取,选择与sql注入攻击检测相关的特征向量,包括:

3.根据权利要求2所述的sql注入检测方法,其特征在于,pnn模型有四种类型的层,输入层、模式层、求和层和输出层,对pnn模型进行训练,包括:

4.根据权利要求3所述的sql注入检测方法,其特征在于,通过粒子群算法训练公式(2)中的平滑因子,包括:

5.根据权利要求4所述的sql注入检测方法,其特征在于,训练平滑因子时训练集进一步划分为k个子集,对pnn模型进行k折交叉验证,计算分类准确率以衡量pnn模型在当前下的性能;

6.根据权利要求1所述的sql注入检测方法,其特征在于,对概率神经网络pnn模型进行训练,与sql注入攻击检测相关的特征向量为pnn模型的输入,输出sql查询语句类别之后,还包括:

7.根据权利要求6所述的sql注入检测方法,其特征在于,分类器的混淆矩阵显示为2x2网格中的单元格,通过分类器的混淆矩阵以sql查询数据集中的测试集作为输入对pnn模型进行评估,包括:

8.根据权利要求1所述的sql注入检测方法,其特征在于,通过使用卡方检验进行特征提取之前,还包括:

9.根据权利要求8所述的sql注入检测方法,其特征在于,对所述sql查询数据集进行数据预处理,包括:

10.根据权利要求9所述的sql注入检测方法,其特征在于,对训练集中的查询语句进行分词处理,将查询拆分为token,包括:


技术总结
本发明公开了一种SQL注入检测方法,包括:收集用于训练和测试的SQL查询数据集,SQL查询数据集包括‑SQL注入类别的查询语句和非SQL注入类别的查询语句;针对SQL查询数据集通过使用卡方检验进行特征提取,选择与SQL注入攻击检测相关的特征向量;对概率神经网络PNN模型进行训练,与SQL注入攻击检测相关的特征向量为PNN模型的输入,输出SQL查询语句类别。本发明中,通过深度学习的自动特征提取和学习大量样本数据中的模式,具有强大的泛化能力和自适应性,能够有效地识别未知和新颖的SQL注入攻击。并且通过使用卡方检验进行特征提取,我们能够选择出与SQL注入攻击检测相关性较高的特征,提高模型的准确性和性能。

技术研发人员:刘雨蒙,赵怡婧,李思登,苏毅,王潮,徐帆江
受保护的技术使用者:北京遥感设备研究所
技术研发日:
技术公布日:2024/1/15
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1