一种Web应用防火墙SQL注入防御正则规则提取方法和装置

未命名 08-17 阅读:80 评论:0

一种web应用防火墙sql注入防御正则规则提取方法和装置
技术领域
1.本发明属于网络安全技术领域,具体涉及一种web应用防火墙sql注入防御正则规则提取方法和装置。


背景技术:

2.随着网络技术的不断发展,各种web应用也越来越多。同样的,针对各种web应用的攻击也越来越多,例如sql注入、跨站脚本攻击、远程代码执行等。web应用防火墙是一种针对应用层攻击的检测系统,它为各种web应用提供http/https请求检测,保证web应用程序的安全性。传统的web应用防火墙作为保障web应用的重要防线,能够在一定程度上保护web应用。传统的web应用防火墙通过正则规则或者指纹库匹配方法,对用户的输入进行分类过滤,从而防御黑客攻击。但是,随着攻击种类及攻击方式的不断变化,攻击者往往都需要在一定程度上探测被攻击web应用防火墙内部的规则,如sql注入规则。同时,随着深度学习技术的应用,深度学习技术也被应用于web应用防火墙。
3.攻击者在对web应用发起攻击,如sql注入攻击时,通常需要探测防火墙的sql防御规则,从而绕过防火墙。但是现在仍没有一种可以自动探测并提取web应用防火墙中sql注入防御规则的方法。从而更好的帮助攻击者构建攻击代码,增加攻击者的攻击成功率。同时,这种方法也可以用于检测web应用防火墙sql注入防御规则本身的安全性,保证web应用防火墙的安全性。此外,由于深度学习模型的难以解释性,而web应用防火墙有时需要具有一定的可解释性,也需要一种能够从黑盒web应用防火墙提取sql防御规则的方法,解释web应用防火墙的检测逻辑。而且,深度学习模型对于输入的处理过程需要进行大量计算,整体处理速率相比于正则规则较低。因此,web应用防火墙的拥有者也有将基于深度学习的web应用防火墙的内部逻辑替代为正则规则的需求,从而增加web应用防火墙的速度。
4.因此,本发明设计了一种web应用防火墙sql注入防御正则规则提取方法。与传统的针对web应用防火墙的绕过攻击不同,针对web应用防火墙中sql注入防御规则的提取方法,主要针对其内部对sql注入的分类逻辑进行提取,并转化为正则规则。并使提取到的正则规则与被攻击web应用防火墙正则规则对数据的分类相似。


技术实现要素:

5.本发明的目的在于针对现有技术的不足,提供了一种web应用防火墙sql注入防御正则规则提取方法和装置。
6.本发明的目的是通过以下技术方案来实现的:一种web应用防火墙sql注入防御正则规则提取方法,包括以下步骤:
7.(1)对用户输入的sql注入数据进行随机排序,形成一个查询数据集d1;对被提取的web应用防火墙发起查询,简化被提取的web应用防火墙的返回,得到数据集d2;
8.(2)对数据集d2进行分词处理得到数据集d3,统计数据集d3中出现次数最多的n个决策词,并统计每个决策词的出现频率,得到数据集d4;利用数据集d2、数据集d4及cart算
法构造决策树t;
9.(3)将决策树t转化为一组正则规则。
10.进一步地,所述步骤(1)包括以下子步骤:
11.(1.1)收集用户输入的sql注入数据,包括p个sql注入样本和p个正常的sql查询样本,利用随机序列生成算法,为每个样本分配序列号,进行随机排序,形成一个查询数据集d1:d1={x1,x2,

,xh,

,x
2p
},其中,xh为任意一个样本,h=1,2,

,h,

,2p;
12.(1.2)利用查询数据集d1中任意一个样本xh,对被提取的web应用防火墙发起查询,简化被提取的web应用防火墙的返回为lh,当lh=0表示允许通过,当lh=1表示禁止通过;
13.对查询数据集d1中每一个样本重复上述步骤,得到每一个样本对应的返回,并得到数据集d2:d2={l1,l2,

,lh,

,l
2p
}。
14.进一步地,所述步骤(2)包括以下子步骤:
15.(2.1)利用空格以及除了下划线外的单字符英文标点作为分词符,对查询数据集d1中任意一个样本xh进行分词处理,得到词列表yh;分词时,保留除空格外的分词符,并将每个分词符作为一个单独的词保留;分词后,将每一个样本当作一个由词组成的列表保存,列表中每个元素是分词后得到的词,顺序与其在原样本中出现顺序相同;
16.对查询数据集d1中每一个样本重复上述步骤,得到数据集d3:d3={y1,y2,

,yh,

,y
2p
};
17.(2.2)统计数据集d3中出现次数最多的n个决策词,并按照出现次数由高到低排序,记为:token1、token2、

、tokeni、

、tokenn;
18.(2.3)统计数据集d3中任意一个词列表yh中token1、token2、

、tokeni、

、tokenn出现的数量,分别记作:num
token1,h
、num
token2,h


、num
tokeni,h


、num
tokenn,h
,得到数组zh={num
token1,h
,num
token2,h
,

,num
tokeni,h
,

,num
tokenn,h
},其中,num
tokeni,h
表示第i个决策词在词列表yh中出现的数量;对数据集d3中每一个词列表重复上述步骤,得到数据集d4:d4={z1,z2,

,zh,

,z
2p
};
19.(2.4)利用数据集d2、数据集d4及cart算法构造决策树t。
20.进一步地,所述步骤(3)包括以下子步骤:
21.(3.1)利用回溯算法提取决策树t中,得到k个从根节点到叶节点的决策路径:决策路径dec1、决策路径dec2、

、决策路径deck;
22.(3.2)对决策路径dec1进行处理,得到新的决策路径dec1


23.(3.3)将新的决策路径dec1

转化为正则规则regex;
24.(3.4)重复步骤(3.2)-步骤(3.3),将决策树t中决策路径dec1、决策路径dec2、

、决策路径deck分别转化为对应的正则规则,得到一组正则规则。
25.进一步地,所述步骤(3.2)包括以下子步骤:
26.(3.2.1)对决策路径dec1进行处理:所述决策路径dec1由m个决策和叶节点e1组成,所述叶节点e1表示决策路径dec1的输出;其中,任意一个决策的形式为:minj≤numj或numj<maxj,numj为随机一个num
tokeni,h
,minj为决策路径dec1中第j个的决策的阈值最小值,maxj为决策路径dec1中第j个的决策的阈值最大值,j=1,2,

,j,

,m;
27.(3.2.2)对于决策路径dec1中的m个决策,筛选出所有包含决策词tokeni的决策,
若决策路径dec1中不包含决策词tokeni的决策,对下一个决策词重复上述步骤;若决策路径dec1中包含决策词tokeni的决策,则构建新的决策:
28.当所有包含决策词tokeni的决策的形式均为minj≤numj时,选取最大的minj记为mini,并对mini进行向上取整得到(mini)

,得到一个新的决策qi:(mini)

≤num
tokeni
并加入到决策路径dec1中,同时删去其他包含决策词tokeni的决策;
29.当所有包含决策词tokeni的决策的形式均为numj<maxj时,选取最小的maxj记为maxi;若maxi为整数,得到(maxi)

=max
i-1;若maxi为非整数,对进行向下取整得到(maxi)

;从而得到一个新的决策qi:num
tokeni
≤(maxi)

并加入到决策路径dec1中,同时删去其他包含决策词tokeni的决策;
30.当所有包含决策词tokeni的决策的形式为minj≤numj或numj<maxj时,选取最大的minj记为mini并选取最小的maxj记为maxi,对mini进行向上取整得到(mini)

;若maxi为整数,得到(maxi)

=max
i-1;若maxi为非整数,对进行向下取整得到(maxi)

;从而得到一个新的决策qi:(mini)

≤num
tokeni
≤(maxi)

并加入到决策路径dec1中,同时删去其他包含决策词tokeni的决策。
31.进一步地,所述步骤(3.3)包括以下子步骤:
32.(3.3.1)对于决策路径dec1

中任意一个决策qi,当决策qi的形式为(mini)

≤num
tokeni
≤(maxi)

时,将决策qi转化为正则表达式:^((((?!(\btokeni\b)).)*)(\btokeni\b)){(mini)

,(maxi)

}(((?!(\btokeni\b)).)*)$;
33.当决策qi的形式为num
tokeni
≤(maxi)

并且(maxi)

=0时,将决策qi转化为正则表达式:^(((?!(\btokeni\b)).)*)$;
34.当决策qi的形式为num
tokeni
≤(maxi)

并且(maxi)

>0时,将决策qi转化为正则表达式:^((((?!(\btokeni\b)).)*)(\btokeni\b)){0,(maxi)

}(((?!(\btokeni\b)).)*)$;
35.当决策qi的形式为(mini)

≤num
tokeni
时,将决策qi转化为正则表达式:^((((?!(\btokeni\b)).)*)(\btokeni\b)){(mini)

,}(((?!(\btokeni\b)).)*)$;
36.(3.3.2)对决策路径dec1

中m2个决策重复步骤(c3.1),将决策路径dec1

中m2个决策均转化为对应的正则表达式,得到正则规则regex,所述正则规则regex包含m2个正则表达式;并将叶节点e1作为正则规则regex的输出。
37.本发明还提供一种web应用防火墙sql注入防御正则规则提取装置,包括:web应用防火墙查询模块、web应用防火墙逻辑提取模块和正则规则生成模块;
38.所述web应用防火墙查询模块,用于对用户输入的sql注入数据进行随机排序,形成一个查询数据集d1;对被提取的web应用防火墙发起查询,简化被提取的web应用防火墙的返回,得到数据集d2;
39.所述web应用防火墙逻辑提取模块,用于对数据集d2进行分词处理得到数据集d3,统计数据集d3中出现次数最多的n个决策词,并统计每个决策词的出现频率,得到数据集d4;利用数据集d2、数据集d4及cart算法构造决策树t;
40.所述正则规则生成模块,用于将决策树t转化为一组正则规则。
41.本发明还提供一种web应用防火墙sql注入防御正则规则提取装置,包括一个或多个处理器,用于实现上述web应用防火墙sql注入防御正则规则提取方法。
42.本发明还提供一种计算机可读存储介质,其上存储有程序,该程序被处理器执行
时,用于实现上述web应用防火墙sql注入防御正则规则提取方法。
43.本发明的有益效果是:
44.(1)本发明深入分析web应用防火墙sql注入防御功能的内部原理,采用数据查询方法分析提取web应用防火墙sql注入防御功能的内部逻辑,并将其转化为正则规则,满足其可解释性,并且使提取到的规则与被提取的web应用防火墙的sql注入防御功能,在优选地sql注入数据集中,对正常样本及sql注入样本的分类结果高度相似;
45.(2)本发明采用决策树提取web应用防火墙中sql注入防御规则,并将其转化为正则规则,保障了正则规则生成过程中的可解释性和与被提取的web应用防火墙sql注入防御功能的相似性;
46.(3)本发明能够从基于深度学习模型的web应用防火墙中,提取到用于防御sql注入的正则规则;深度学习模型中包含数以万计的参数,对输入需要进行数以万计的计算;而正则规则是一种字符匹配算法,计算量相比于深度学习模型较少;因此本发明能够在一定程度上提高基于深度学习模型的web应用防火墙对输入的分类处理速度,减少基于深度学习模型的web应用防火墙对web应用的性能的影响。
附图说明
47.图1为实施例1中步骤(1)的流程示意图;
48.图2为实施例1中步骤(2)的流程示意图;
49.图3为实施例1中步骤(3)的流程示意图;
50.图4为实施例2中一种web应用防火墙sql注入防御正则规则提取装置的示意图;
51.图5为实施例3中一种web应用防火墙sql注入防御正则规则提取装置的结构示意图。
具体实施方式
52.为了使本发明的目的、技术方案及优点更加明白清楚,结合附图和实施例,对本发明进一步的详细说明,应当理解,此处所描述的具体实施例仅仅用以解释本发明,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,均在本发明保护范围。
53.实施例1
54.本发明提供了一种web应用防火墙sql注入防御正则规则提取方法,包括以下步骤:
55.(1)对用户输入的sql注入数据进行随机排序,形成一个查询数据集d1;对被提取的web应用防火墙发起查询,简化被提取的web应用防火墙的返回,得到数据集d2;如图1所示。
56.所述步骤(1)包括以下子步骤:
57.(1.1)收集用户输入的sql注入数据,包括p个sql注入样本和p个正常的sql查询样本,利用随机序列生成算法,为每个样本分配序列号,进行随机排序,形成一个查询数据集d1:d1={x1,x2,

,xh,

,x
2p
},其中,xh为任意一个样本,h=1,2,

,h,

,2p;
58.(1.2)确定被提取的web应用防火墙;利用查询数据集d1中任意一个样本xh,对被
提取的web应用防火墙发起查询,简化被提取的web应用防火墙的返回为lh,当lh=0表示允许通过,当lh=1表示禁止通过;
59.对查询数据集d1中每一个样本重复上述步骤,得到每一个样本对应的返回,并得到数据集d2:d2={l1,l2,

,lh,

,l
2p
}。
60.(2)对数据集d2进行分词处理得到数据集d3,统计数据集d3中出现次数最多的n个决策词,并统计每个决策词的出现频率,得到数据集d4;利用数据集d2、数据集d4及cart算法构造决策树t;如图2所示。
61.所述步骤(2)包括以下子步骤:
62.(2.1)利用空格以及除了下划线外的单字符英文标点作为分词符,对查询数据集d1中任意一个样本xh进行分词处理,得到词列表yh;分词时,保留除空格外的分词符,并将每个分词符作为一个单独的词保留;分词后,将每一个样本当作一个由词组成的列表保存,列表中每个元素是分词后得到的词,顺序与其在原样本中出现顺序相同;
63.对查询数据集d1中每一个样本重复上述步骤,得到数据集d3:d3={y1,y2,

,yh,

,y
2p
};
64.(2.2)统计数据集d3中出现次数最多的n个决策词,并按照出现次数由高到低排序,记为:token1、token2、

、tokeni、

、tokenn;
65.(2.3)统计数据集d3中任意一个词列表yh中token1、token2、

、tokeni、

、tokenn出现的数量,分别记作:num
token1,h
、num
token2,h


、num
tokeni,h


、num
tokenn,h
,得到数组zh={num
token1,h
,num
token2,h
,

,num
tokeni,h
,

,num
tokenn,h
},其中,num
tokeni,h
表示第i个决策词在词列表yh中出现的数量;对数据集d3中每一个词列表重复上述步骤,得到数据集d4:d4={z1,z2,

,zh,

,z
2p
};
66.(2.4)利用数据集d2、数据集d4及cart算法构造决策树t。
67.(3)将决策树t转化为一组正则规则;如图3所示。
68.所述步骤(3)包括以下子步骤:
69.(3.1)利用回溯算法提取决策树t中,得到k个从根节点到叶节点的决策路径:决策路径dec1、决策路径dec2、

、决策路径deck。
70.(3.2)对决策路径dec1进行处理,得到新的决策路径dec1


71.所述步骤(3.2)包括以下子步骤:
72.(3.2.1)对决策路径dec1进行处理:所述决策路径dec1由m个决策和叶节点e1组成,所述叶节点e1表示决策路径dec1的输出;其中,任意一个决策的形式为:minj≤numj或numj<maxj,numj为随机一个num
tokeni,h
,minj为决策路径dec1中第j个的决策的阈值最小值,maxj为决策路径dec1中第j个的决策的阈值最大值,j=1,2,

,j,

,m;
73.(3.2.2)对于决策路径dec1中的m个决策,筛选出所有包含决策词tokeni的决策,若决策路径dec1中不包含决策词tokeni的决策,对下一个决策词重复上述步骤;若决策路径dec1中包含决策词tokeni的决策,则构建新的决策:
74.当所有包含决策词tokeni的决策的形式均为minj≤numj时,选取最大的minj记为mini,并对mini进行向上取整得到(mini)

,得到一个新的决策qi:(mini)

≤num
tokeni
并加入到决策路径dec1中,同时删去其他包含决策词tokeni的决策;
75.当所有包含决策词tokeni的决策的形式均为numj<maxj时,选取最小的maxj记为
maxi;若maxi为整数,得到(maxi)

=max
i-1;若maxi为非整数,对进行向下取整得到(maxi)

;从而得到一个新的决策qi:num
tokeni
≤(maxi)

并加入到决策路径dec1中,同时删去其他包含决策词tokeni的决策;
76.当所有包含决策词tokeni的决策的形式为minj≤numj或numj<maxj时,选取最大的minj记为mini并选取最小的maxj记为maxi,对mini进行向上取整得到(mini)

;若maxi为整数,得到(maxi)

=max
i-1;若maxi为非整数,对进行向下取整得到(maxi)

;从而得到一个新的决策qi:(mini)

≤num
tokeni
≤(maxi)

并加入到决策路径dec1中,同时删去其他包含决策词tokeni的决策。
77.(3.3)将新的决策路径dec1

转化为正则规则regex;
78.所述步骤(3.3)包括以下子步骤:
79.(3.3.1)对于决策路径dec1

中任意一个决策qi,当决策qi的形式为(mini)

≤num
tokeni
≤(maxi)

时,将决策qi转化为正则表达式:^((((?!(\btokeni\b)).)*)(\btokeni\b)){(mini)

,(maxi)

}(((?!(\btokeni\b)).)*)$;
80.当决策qi的形式为num
tokeni
≤(maxi)

并且(maxi)

=0时,将决策qi转化为正则表达式:^(((?!(\btokeni\b)).)*)$;
81.当决策qi的形式为num
tokeni
≤(maxi)

并且(maxi)

>0时,将决策qi转化为正则表达式:^((((?!(\btokeni\b)).)*)(\btokeni\b)){0,(maxi)

}(((?!(\btokeni\b)).)*)$;
82.当决策qi的形式为(mini)

≤num
tokeni
时,将决策qi转化为正则表达式:^((((?!(\btokeni\b)).)*)(\btokeni\b)){(mini)

,}(((?!(\btokeni\b)).)*)$;
83.(3.3.2)对决策路径dec1

中m2个决策重复步骤(c3.1),将决策路径dec1

中m2个决策均转化为对应的正则表达式,得到正则规则regex,所述正则规则regex包含m2个正则表达式;并将叶节点e1作为正则规则regex的输出。
84.(3.4)重复步骤(3.2)-步骤(3.3),将决策树t中决策路径dec1、决策路径dec2、

、决策路径deck分别转化为对应的正则规则,得到一组正则规则。
85.实施例2
86.如图4所示,本发明提供了一种web应用防火墙sql注入防御正则规则提取装置,包括:web应用防火墙查询模块、web应用防火墙逻辑提取模块和正则规则生成模块;
87.所述web应用防火墙查询模块,用于对用户输入的sql注入数据进行随机排序,形成一个查询数据集d1;对被提取的web应用防火墙发起查询,简化被提取的web应用防火墙的返回,得到数据集d2;
88.所述web应用防火墙逻辑提取模块,用于对数据集d2进行分词处理得到数据集d3,统计数据集d3中出现次数最多的n个决策词,并统计每个决策词的出现频率,得到数据集d4;利用数据集d2、数据集d4及cart算法构造决策树t;
89.所述正则规则生成模块,用于将决策树t转化为一组正则规则。
90.实施例3
91.与前述一种web应用防火墙sql注入防御正则规则提取方法的实施例1相对应,本发明还提供了一种web应用防火墙sql注入防御正则规则提取装置的实施例。
92.参见图5,本发明实施例提供的一种web应用防火墙sql注入防御正则规则提取装置,包括一个或多个处理器,用于实现上述实施例中的一种web应用防火墙sql注入防御正
则规则提取方法。
93.本发明一种web应用防火墙sql注入防御正则规则提取装置的实施例可以应用在任意具备数据处理能力的设备上,该任意具备数据处理能力的设备可以为诸如计算机等设备或装置。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在任意具备数据处理能力的设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图5所示,为本发明一种web应用防火墙sql注入防御正则规则提取装置所在任意具备数据处理能力的设备的一种硬件结构图,除了图5所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的任意具备数据处理能力的设备通常根据该任意具备数据处理能力的设备的实际功能,还可以包括其他硬件,对此不再赘述。
94.上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
95.对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本发明方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
96.本发明实施例还提供一种计算机可读存储介质,其上存储有程序,该程序被处理器执行时,实现上述实施例中的一种web应用防火墙sql注入防御正则规则提取方法。所述计算机可读存储介质可以是前述任一实施例所述的任意具备数据处理能力的设备的内部存储单元,例如硬盘或内存。所述计算机可读存储介质也可以是任意具备数据处理能力的设备的外部存储设备,例如所述设备上配备的插接式硬盘、智能存储卡(smart media card,smc)、sd卡、闪存卡(flash card)等。进一步的,所述计算机可读存储介质还可以既包括任意具备数据处理能力的设备的内部存储单元也包括外部存储设备。所述计算机可读存储介质用于存储所述计算机程序以及所述任意具备数据处理能力的设备所需的其他程序和数据,还可以用于暂时地存储已经输出或者将要输出的数据。
97.以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。

技术特征:
1.一种web应用防火墙sql注入防御正则规则提取方法,其特征在于,包括以下步骤:(1)对用户输入的sql注入数据进行随机排序,形成一个查询数据集d1;对被提取的web应用防火墙发起查询,简化被提取的web应用防火墙的返回,得到数据集d2;(2)对数据集d2进行分词处理得到数据集d3,统计数据集d3中出现次数最多的n个决策词,并统计每个决策词的出现频率,得到数据集d4;利用数据集d2、数据集d4及cart算法构造决策树t;(3)将决策树t转化为一组正则规则。2.根据权利要求1所述的一种web应用防火墙sql注入防御正则规则提取方法,其特征在于,所述步骤(1)包括以下子步骤:(1.1)收集用户输入的sql注入数据,包括p个sql注入样本和p个正常的sql查询样本,利用随机序列生成算法,为每个样本分配序列号,进行随机排序,形成一个查询数据集d1:d1={x1,x2,

,x
h
,

,x
2p
},其中,x
h
为任意一个样本,h=1,2,

,h,

,2p;(1.2)利用查询数据集d1中任意一个样本x
h
,对被提取的web应用防火墙发起查询,简化被提取的web应用防火墙的返回为l
h
,当l
h
=0表示允许通过,当l
h
=1表示禁止通过;对查询数据集d1中每一个样本重复上述步骤,得到每一个样本对应的返回,并得到数据集d2:d2={l1,l2,

,l
h
,

,l
2p
}。3.根据权利要求1所述的一种web应用防火墙sql注入防御正则规则提取方法,其特征在于,所述步骤(2)包括以下子步骤:(2.1)利用空格以及除了下划线外的单字符英文标点作为分词符,对查询数据集d1中任意一个样本x
h
进行分词处理,得到词列表y
h
;分词时,保留除空格外的分词符,并将每个分词符作为一个单独的词保留;分词后,将每一个样本当作一个由词组成的列表保存,列表中每个元素是分词后得到的词,顺序与其在原样本中出现顺序相同;对查询数据集d1中每一个样本重复上述步骤,得到数据集d3:d3={y1,y2,

,y
h
,

,y
2p
};(2.2)统计数据集d3中出现次数最多的n个决策词,并按照出现次数由高到低排序,记为:token1、token2、

、tokeni、

、tokenn;(2.3)统计数据集d3中任意一个词列表y
h
中token1、token2、

、tokeni、

、tokenn出现的数量,分别记作:num
token1,h
、num
token2,h


、num
tokeni,h


、num
tokenn,h
,得到数组z
h
={num
token1,h
,num
token2,h
,

,num
tokeni,h
,

,num
tokenn,h
},其中,num
tokeni,h
表示第i个决策词在词列表y
h
中出现的数量;对数据集d3中每一个词列表重复上述步骤,得到数据集d4:d4={z1,z2,

,z
h
,

,z
2p
};(2.4)利用数据集d2、数据集d4及cart算法构造决策树t。4.根据权利要求1所述的一种web应用防火墙sql注入防御正则规则提取方法,其特征在于,所述步骤(3)包括以下子步骤:(3.1)利用回溯算法提取决策树t中,得到k个从根节点到叶节点的决策路径:决策路径dec1、决策路径dec2、

、决策路径deck;(3.2)对决策路径dec1进行处理,得到新的决策路径dec1

;(3.3)将新的决策路径dec1

转化为正则规则regex;(3.4)重复步骤(3.2)-步骤(3.3),将决策树t中决策路径dec1、决策路径dec2、

、决策
路径deck分别转化为对应的正则规则,得到一组正则规则。5.根据权利要求4所述的一种web应用防火墙sql注入防御正则规则提取方法,其特征在于,所述步骤(3.2)包括以下子步骤:(3.2.1)对决策路径dec1进行处理:所述决策路径dec1由m个决策和叶节点e1组成,所述叶节点e1表示决策路径dec1的输出;其中,任意一个决策的形式为:min
j
≤num
j
或num
j
<max
j
,num
j
为随机一个num
tokeni,h
,min
j
为决策路径dec1中第j个的决策的阈值最小值,max
j
为决策路径dec1中第j个的决策的阈值最大值,j=1,2,

,j,

,m;(3.2.2)对于决策路径dec1中的m个决策,筛选出所有包含决策词tokeni的决策,若决策路径dec1中不包含决策词tokeni的决策,对下一个决策词重复上述步骤;若决策路径dec1中包含决策词tokeni的决策,则构建新的决策:当所有包含决策词tokeni的决策的形式均为min
j
≤num
j
时,选取最大的min
j
记为min
i
,并对min
i
进行向上取整得到(min
i
)

,得到一个新的决策q
i
:(min
i
)

≤num
tokeni
并加入到决策路径dec1中,同时删去其他包含决策词tokeni的决策;当所有包含决策词tokeni的决策的形式均为num
j
<max
j
时,选取最小的max
j
记为max
i
;若max
i
为整数,得到(max
i
)

=max
i-1;若max
i
为非整数,对进行向下取整得到(max
i
)

;从而得到一个新的决策q
i
:num
tokeni
≤(max
i
)

并加入到决策路径dec1中,同时删去其他包含决策词tokeni的决策;当所有包含决策词tokeni的决策的形式为min
j
≤num
j
或num
j
<max
j
时,选取最大的min
j
记为min
i
并选取最小的max
j
记为max
i
,对min
i
进行向上取整得到(min
i
)

;若max
i
为整数,得到(max
i
)

=max
i-1;若max
i
为非整数,对进行向下取整得到(max
i
)

;从而得到一个新的决策q
i
:(min
i
)

≤num
tokeni
≤(max
i
)

并加入到决策路径dec1中,同时删去其他包含决策词tokeni的决策。6.根据权利要求5所述的一种web应用防火墙sql注入防御正则规则提取方法,其特征在于,所述步骤(3.3)包括以下子步骤:(3.3.1)对于决策路径dec1

中任意一个决策q
i
,当决策q
i
的形式为(min
i
)

≤num
tokeni
≤(max
i
)

时,将决策q
i
转化为正则表达式:^((((?!(\btokeni\b)).)*)(\btokeni\b)){(min
i
)

,(max
i
)

}(((?!(\btokeni\b)).)*)$;当决策q
i
的形式为num
tokeni
≤(max
i
)

并且(max
i
)

=0时,将决策q
i
转化为正则表达式:^(((?!(\btokeni\b)).)*)$;当决策q
i
的形式为num
tokeni
≤(max
i
)

并且(max
i
)

>0时,将决策q
i
转化为正则表达式:^((((?!(\btokeni\b)).)*)(\btokeni\b)){0,(max
i
)

}(((?!(\btokeni\b)).)*)$;当决策q
i
的形式为(min
i
)

≤num
tokeni
时,将决策q
i
转化为正则表达式:^((((?!(\btokeni\b)).)*)(\btokeni\b)){(min
i
)

,}(((?!(\btokeni\b)).)*)$;(3.3.2)对决策路径dec1

中m2个决策重复步骤(c3.1),将决策路径dec1

中m2个决策均转化为对应的正则表达式,得到正则规则regex,所述正则规则regex包含m2个正则表达式;并将叶节点e1作为正则规则regex的输出。7.一种web应用防火墙sql注入防御正则规则提取装置,其特征在于,包括:web应用防火墙查询模块、web应用防火墙逻辑提取模块和正则规则生成模块;所述web应用防火墙查询模块,用于对用户输入的sql注入数据进行随机排序,形成一
个查询数据集d1;对被提取的web应用防火墙发起查询,简化被提取的web应用防火墙的返回,得到数据集d2;所述web应用防火墙逻辑提取模块,用于对数据集d2进行分词处理得到数据集d3,统计数据集d3中出现次数最多的n个决策词,并统计每个决策词的出现频率,得到数据集d4;利用数据集d2、数据集d4及cart算法构造决策树t;所述正则规则生成模块,用于将决策树t转化为一组正则规则。8.一种web应用防火墙sql注入防御正则规则提取装置,其特征在于,包括一个或多个处理器,用于实现权利要求1-6中任一项所述的web应用防火墙sql注入防御正则规则提取方法。9.一种计算机可读存储介质,其上存储有程序,其特征在于,该程序被处理器执行时,用于实现权利要求1-6中任一项所述的web应用防火墙sql注入防御正则规则提取方法。

技术总结
本发明提供一种Web应用防火墙SQL注入防御正则规则提取方法和装置,通过预先收集的SQL注入数据及正常SQL查询等数据对Web应用防火墙发起查询,获取Web应用防火墙返回;并用决策树算法,从查询数据中提取Web应用防火墙中SQL注入防御规则对SQL查询的分类逻辑;通过分离、提取、整合决策树的内部决策路径及结点,并将其转换为正则规则。将其转换为正则规则。将其转换为正则规则。


技术研发人员:李德印 凌祥 吴春明
受保护的技术使用者:浙江大学
技术研发日:2023.06.27
技术公布日:2023/8/14
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐