一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种恶意请求的检测方法、装置、电子设备及存储介质与流程

2023-01-06 02:23:16 来源:中国专利 TAG:


1.本技术涉及信息安全的技术领域,尤其是涉及一种恶意请求的检测方法、装置、电子设备及存储介质。


背景技术:

2.在网络安全领域中,攻击者经常将注入攻击的语句掺杂进访问请求中(客户端与服务器端通信的文本),从而使攻击内容能够在受害者解析原有内容时被一并执行;所以,受害者需要在获取访问请求时对访问请求进行检测,确定访问请求是否是带有攻击的恶意请求。
3.目前,恶意请求的检测方法主要基于规则和词法;规则的优点在于撰写简单且运行效率高,最大的缺点是任何规则都可以被绕过;基于词法的方法会先根据结构化查询语言sql的语法和关键词对待检测内容(恶意请求)的语义进行提炼,而后通过匹配预设语义来确定检测结果。上述两种方法均存在如下共同缺陷:(1)检测所依赖预设规则/语义的维护成本高、更新迟滞、内容冲突;(2)对预设外的规则/语义检测能力为零;(3)误报率和漏报率双高;(4)检测速度随预设规则/语义数量的递增而递减;因此,如何检测恶意请求,成为了亟待解决的问题。


技术实现要素:

4.有鉴于此,本技术的目的在于提供一种恶意请求的检测方法、装置、电子设备及存储介质,能够通过将目标请求进行切分以及编码处理后,得到目标请求对应的多个目标向量,将多个目标向量输入检测模型中得到每个目标向量的检测结果,若任意一个目标向量的检测结果指示异常,则目标请求是带有注入攻击的恶意请求,提高了恶意请求检测的准确性以及效率。
5.本技术主要包括以下几个方面:第一方面,本技术实施例提供了一种恶意请求的检测方法,所述检测方法包括:获取目标请求,并基于所述目标请求,确定所述目标请求的长度;基于所述目标请求的长度,对所述目标请求进行切分处理,得到至少一个请求片段;针对每个请求片段,对该请求片段进行编码处理,得到该请求片段对应的目标向量;将该请求片段对应的目标向量输入至预先训练好的检测模型中进行检测,得到该目标向量的检测结果;在每个请求片段对应的目标向量的检测结果中,若任意一个目标向量的检测结果指示为异常,则将所述目标请求确定为恶意请求。
6.进一步的,通过以下步骤得到训练好的检测模型:获取第一样本集合、第二样本集合以及请求样本集合;其中,所述第一样本集合是
多个第一语句样本的集合;所述第一语句样本是包括注入攻击的结构化查询语句的样本;所述第二样本集合是多个第二语句样本的集合;所述第二语句样本是不包括注入攻击的结构化查询语句的样本;所述请求样本集合是多个访问请求样本的集合;所述访问请求样本是不包括注入攻击的访问请求的样本;将所述请求样本集合中的每个访问请求样本进行切分处理,得到每个访问请求样本的访问请求片段;对所述每个访问请求样本的每个访问请求片段进行编码处理,得到每个访问请求样本的每个访问请求片段对应的请求向量;将所述第一样本集合中的每个第一语句样本进行编码处理,得到每个第一语句样本对应的第一语句样本向量;将所述第二样本集合中的每个第二语句样本进行编码处理,得到每个第二语句样本对应的第二语句样本向量;将所述每个访问请求样本的每个访问请求片段对应的请求向量、所述每个第一语句样本对应的第一语句样本向量以及所述每个第二语句样本对应的第二语句样本向量输入至检测模型中,得到训练好的检测模型。
7.进一步的,所述基于所述目标请求的长度,对所述目标请求进行切分处理,得到至少一个请求片段的步骤,包括:基于所述目标请求的长度,确定所述目标请求的长度是否小于预设长度;若小于,则将所述目标请求确定为请求片段;若不小于,则将所述目标请求按照所述预设长度进行切分处理,得到至少一个请求片段。
8.进一步的,所述将所述目标请求按照所述预设长度进行切分处理,得到至少一个请求片段的步骤,包括:将所述目标请求按照所述预设长度进行切分处理,得到n个长度均为所述预设长度的请求片段;其中,n为所述目标请求的长度与所述预设长度的商值取整后的数值;将n与所述预设长度的乘积,确定为所述目标请求的切分总长度;将所述目标请求的长度与所述目标请求的切分总长度的差值,确定为所述目标请求进行切分处理后的未切分部分的长度;确定所述未切分部分的长度是否小于所述预设长度与预设系数的乘积;若小于,则将所述未切分部分拼接在第n个请求片段的末尾作为第n个请求片段,得到n个请求片段;若不小于,则将所述未切分部分确定为第n 1个请求片段,得到n 1个请求片段。
9.进一步的,所述针对每个请求片段,对该请求片段进行编码处理,得到该请求片段对应的目标向量的步骤,包括:针对每个请求片段,获取该请求片段中的预定关键词、单词、数字以及符号;基于该请求片段中包含的预定关键词、单词、数字以及符号,在预设编码映射关系中确定出所述预定关键词对应的数字编码、所述单词对应的数字编码、所述数字对应的数字编码以及所述符号对应的数字编码;基于该请求片段中所述预定关键词、单词、数字以及符号的组成顺序,将该请求片
段中所述预定关键词对应的数字编码、所述单词对应的数字编码、所述数字对应的数字编码以及所述符号对应的数字编码按照所述组成顺序进行拼接,得到拼接后的编码字符串;获取初始向量,基于所述拼接后的编码字符串对所述初始向量进行处理,得到该请求片段对应的目标向量。
10.进一步的,所述获取初始向量,基于所述拼接后的编码字符串对所述初始向量进行处理,得到该请求片段对应的目标向量的步骤,包括:获取初始向量以及所述初始向量中每一位的元素值;将所述编码字符串中的第一位数字作为当前数字,将所述当前数字与预设系数的乘积,作为第一元素;将所述第一元素与所述初始向量中的第当前数字位的元素值的加和,更新为所述初始向量中的第当前数字位的元素值;基于所述编码字符串中所述当前数字的后m位中每一位数字以及当前数字在所述编码字符串中的位数,更新所述初始向量;其中,m是所述预设系数与数字一的差值;将所述编码字符串中的当前数字的下一位数字作为当前数字,继续更新所述初始向量,直到所述当前数字为所述编码字符串的最后一位数字时,将更新后的初始向量确定为该请求片段对应的目标向量。
11.进一步的,所述基于所述编码字符串中所述当前数字的后m位中每一位数字以及当前数字在所述编码字符串中的位数,更新所述初始向量的步骤,包括:基于所述编码字符串中所述当前数字的后m位中每一位数字,将所述m位中的第一位数字作为当前目标数字,获取所述当前目标数字在所述编码字符串中的位数;将所述预设系数与所述当前目标数字在所述编码字符串中的位数的差值,确定为第一参数,并将所述第一参数与所述当前数字在所述编码字符串中的位数的加和,确定为第二参数;将所述第二参数与所述当前目标数字的乘积,确定为第三参数;将所述第三参数与所述初始向量中的第当前数字位的元素值的加和,更新为所述初始向量中的第当前数字位的元素值;将所述第二参数与所述当前数字的乘积,确定为第四参数;将所述第四参数与所述初始向量中的第当前目标数字位的元素值的加和,更新为所述初始向量中的第当前目标数字位的元素值;将所述当前目标数字的下一位数字作为当前目标数字,继续更新所述初始向量,直至所述当前目标数字为所述m位中的最后一位数字。
12.第二方面,本技术实施例还提供了一种恶意请求的检测装置,所述检测装置包括:获取模块,用于获取目标请求,并基于所述目标请求,确定所述目标请求的长度;切分模块,用于基于所述目标请求的长度,对所述目标请求进行切分处理,得到至少一个请求片段;编码模块,用于针对每个请求片段,对该请求片段进行编码处理,得到该请求片段对应的目标向量;检测模块,用于将该请求片段对应的目标向量输入至预先训练好的检测模型中进行检测,得到该目标向量的检测结果;
确定模块,用于在每个请求片段对应的目标向量的检测结果中,若任意一个目标向量的检测结果指示为异常,则将所述目标请求确定为恶意请求。
13.第三方面,本技术实施例还提供一种电子设备,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行如上述的恶意请求的检测方法的步骤。
14.第四方面,本技术实施例还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行如上述的恶意请求的检测方法的步骤。
15.本技术实施例提供的一种恶意请求的检测方法、装置、电子设备及存储介质,所述检测方法包括:获取目标请求,并基于所述目标请求,确定所述目标请求的长度;基于所述目标请求的长度,对所述目标请求进行切分处理,得到至少一个请求片段;针对每个请求片段,对该请求片段进行编码处理,得到该请求片段对应的目标向量;将该请求片段对应的目标向量输入至预先训练好的检测模型中进行检测,得到该目标向量的检测结果;在每个请求片段对应的目标向量的检测结果中,若任意一个目标向量的检测结果指示为异常,则将所述目标请求确定为恶意请求。
16.这样,采用本技术提供的技术方案能够通过将目标请求进行切分以及编码处理后,得到目标请求对应的多个目标向量,将多个目标向量输入检测模型中得到每个目标向量的检测结果,若任意一个目标向量的检测结果指示异常,则目标请求是带有注入攻击的恶意请求,提高了恶意请求检测的准确性以及效率。
17.为使本技术的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
18.为了更清楚地说明本技术实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本技术的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
19.图1示出了本技术实施例所提供的一种恶意请求的检测方法的流程图;图2示出了本技术实施例所提供的另一种恶意请求的检测方法的流程图;图3示出了本技术实施例所提供的一种恶意请求检测流程的示意图;图4示出了本技术实施例所提供的一种恶意请求的检测装置的结构示意图之一;图5示出了本技术实施例所提供的一种恶意请求的检测装置的结构示意图之二;图6示出了本技术实施例所提供的一种电子设备的结构示意图。
具体实施方式
20.为使本技术实施例的目的、技术方案和优点更加清楚,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,应当理解,本技术中的附图仅起到说明和描述的目的,并不用于限定本技术的保护范围。另外,应当理解,示意性的
附图并未按实物比例绘制。本技术中使用的流程图示出了根据本技术的一些实施例实现的操作。应当理解,流程图的操作可以不按顺序实现,没有逻辑的上下文关系的步骤可以反转顺序或者同时实施。此外,本领域技术人员在本技术内容的指引下,可以向流程图添加一个或多个其他操作,也可以从流程图中移除一个或多个操作。
21.另外,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本技术实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本技术的实施例的详细描述并非旨在限制要求保护的本技术的范围,而是仅仅表示本技术的选定实施例。基于本技术的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的全部其他实施例,都属于本技术保护的范围。
22.为了使得本领域技术人员能够使用本技术内容,结合特定应用场景“恶意请求的检测”,给出以下实施方式,对于本领域技术人员来说,在不脱离本技术的精神和范围的情况下,可以将这里定义的一般原理应用于其他实施例和应用场景。
23.本技术实施例下述方法、装置、电子设备或计算机可读存储介质可以应用于任何需要检测恶意请求的场景,本技术实施例并不对具体的应用场景作限制,任何使用本技术实施例提供的一种恶意请求的检测方法、装置、电子设备及存储介质的方案均在本技术保护范围内。
24.值得注意的是,结构化查询语言sql是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;而将窃取数据的sql语句插入到正常sql语句的行为被称为sql注入攻击。在网络安全领域中,攻击者经常将sql注入语句掺杂进http请求中(客户端与服务器端通信的文本),从而使攻击内容能够在受害者解析原有内容时被一并执行。
25.目前,主流的两种sql注入检测方法分别基于规则和词法;规则的优点在于撰写简单且运行效率高,最大的缺点是任何规则都可以被绕过;基于词法的方法会先根据sql的语法和关键词对待检测内容(恶意请求)的语义进行提炼,而后通过匹配预设语义来确定检测结果。上述两种方法均存在如下共同缺陷:(1)检测所依赖预设规则/语义的维护成本高、更新迟滞、内容冲突;(2)对预设外的规则/语义检测能力为零;(3)误报率和漏报率双高;(4)检测速度随预设规则/语义数量的递增而递减;进一步说,鉴于http请求的长度往往远大于sql注入语句(即非sql语句在被检文本中的占比很高),上述两种方法在此类高噪声场景下由于规则会匹配噪声以及真实语义会在词法解析的过程中被噪声混淆甚至淹没的原因,而导致检测的准确率会进一步降低;因此,如何检测恶意请求,成为了亟待解决的问题。
26.基于此,本技术提出了一种恶意请求的检测方法、装置、电子设备及存储介质,所述检测方法包括:获取目标请求,并基于所述目标请求,确定所述目标请求的长度;基于所述目标请求的长度,对所述目标请求进行切分处理,得到至少一个请求片段;针对每个请求片段,对该请求片段进行编码处理,得到该请求片段对应的目标向量;将该请求片段对应的目标向量输入至预先训练好的检测模型中进行检测,得到该目标向量的检测结果;在每个请求片段对应的目标向量的检测结果中,若任意一个目标向量的检测结果指示为异常,则将所述目标请求确定为恶意请求。
27.这样,采用本技术提供的技术方案能够通过将目标请求进行切分以及编码处理后,得到目标请求对应的多个目标向量,将多个目标向量输入检测模型中得到每个目标向
量的检测结果,若任意一个目标向量的检测结果指示异常,则目标请求是带有注入攻击的恶意请求,提高了恶意请求检测的准确性以及效率。
28.为便于对本技术进行理解,下面结合具体实施例对本技术提供的技术方案进行详细说明。
29.请参阅图1,图1为本技术实施例所提供的一种恶意请求的检测方法的流程图,如图1中所示,所述检测方法,包括:s101、获取目标请求,并基于所述目标请求,确定所述目标请求的长度;该步骤中,目标请求可以是http请求,确定http请求的长度。
30.s102、基于所述目标请求的长度,对所述目标请求进行切分处理,得到至少一个请求片段;需要说明的是,基于目标请求的长度,对目标请求进行切分处理,得到至少一个请求片段的步骤,包括:s1021、基于所述目标请求的长度,确定所述目标请求的长度是否小于预设长度;s1022、若小于,则将所述目标请求确定为请求片段;s1023、若不小于,则将所述目标请求按照所述预设长度进行切分处理,得到至少一个请求片段。
31.该步骤中,预设长度可以是根据历史经验或者实验数据预先设置的;将预设长度设定为一个正整数wt,若目标请求的长度lt小于wt,则不切分目标请求,将目标请求整体作为一个请求片段;否则,将目标请求进行切分。
32.需要说明的是,将目标请求按照预设长度进行切分处理,得到至少一个请求片段的步骤,包括:1)、将所述目标请求按照所述预设长度进行切分处理,得到n个长度均为所述预设长度的请求片段;2)、将n与所述预设长度的乘积,确定为所述目标请求的切分总长度;3)、将所述目标请求的长度与所述目标请求的切分总长度的差值,确定为所述目标请求进行切分处理后的未切分部分的长度;4)、确定所述未切分部分的长度是否小于所述预设长度与预设系数的乘积;5)、若小于,则将所述未切分部分拼接在第n个请求片段的末尾作为第n个请求片段,得到n个请求片段;6)、若不小于,则将所述未切分部分确定为第n 1个请求片段,得到n 1个请求片段。
33.该步骤中,n为目标请求的长度lt与预设长度wt的商值取整后的数值,即目标请求进行切分后得到的请求片段的个数,公式如下:其中,“⌊⌋”符号为向下取整,即当lt/wt的计算结果不为整数时取小于计算结果的整数;这里将目标请求切分成n段,每段是长度为wt的请求片段,如果目标请求未切分部分的长度ls小于预设长度wt与预设系数r的乘积(即),则将未切分部分追加到第n段的末尾,将追加后的整体(即第n段的请求片段 未切分部分)更新为第n段的请求片
段,此时,目标请求进行切分处理后,得到了n个请求片段;否则,则将未切分部分单独作为一段请求片段,即第n 1段的请求片段,此时,目标请求进行切分处理后,得到了n 1个请求片段。
34.这里,预设系数可以是根据历史经验或者实验数据预先设置的,预设系数的取值区间可以是介于(0,1)的小数(例如默认值0.3);未切分部分的长度计算公式如下:其中,ls为目标请求未切分部分的长度,lt为目标请求的长度,wt为预设长度,n为长度均为预设长度的请求片段的个数,为目标请求的切分总长度。
35.s103、针对每个请求片段,对该请求片段进行编码处理,得到该请求片段对应的目标向量;需要说明的是,针对每个请求片段,对该请求片段进行编码处理,得到该请求片段对应的目标向量的步骤,包括:s1031、针对每个请求片段,获取该请求片段中的预定关键词、单词、数字以及符号;s1032、基于该请求片段中包含的预定关键词、单词、数字以及符号,在预设编码映射关系中确定出所述预定关键词对应的数字编码、所述单词对应的数字编码、所述数字对应的数字编码以及所述符号对应的数字编码;s1033、基于该请求片段中所述预定关键词、单词、数字以及符号的组成顺序,将该请求片段中所述预定关键词对应的数字编码、所述单词对应的数字编码、所述数字对应的数字编码以及所述符号对应的数字编码按照所述组成顺序进行拼接,得到拼接后的编码字符串;该步骤中,编码字符串可以是由若干数字组成的,编码字符串中的每一数字编码由目标请求中的预定关键词、单词、数字以及符号分别与编码的映射关系确定;这里,单词是由若干连续字母字符组成且前后有一或多个空格,数字是由若干连续数字字符组成,符号是由非字母和数字的字符组成,在查找与编码的映射关系时,单词、数字、符号皆被当作一个对象映射一个数字编码,对于一串交替出现单词、数字、符号的连续字符,如果其在预定的关键词集合中,则在查找与编码的映射关系时将整个字符串作为一个预定关键词;例如,该连续字符在iso/iec dis 9075-xx系列标准文件中被定义为sql关键词,则在查找与编码的映射关系时将整个字符串作为一个sql关键词,否则,将位于每一符号前的连续字母/数字字符作为一个常规的单词/数字在编码的映射关系中确定出对应的数字编码。
36.示例性的,编码的映射关系可以如下表所示:编码的映射关系表
这里,针对每个请求片段,确定出该请求片段中每个预定关键词对应的数字编码、每个单词对应的数字编码、每个数字对应的数字编码以及每个符号对应的数字编码,将这些数字编码按照预定关键词、单词、数字以及符号在请求片段中的组成顺序依次进行拼接,将数字编码拼接后的字符串确定为编码字符串。
37.s1034、获取初始向量,基于所述拼接后的编码字符串对所述初始向量进行处理,得到该请求片段对应的目标向量。
38.该步骤中,初始向量可以是由多个元素值组成的向量,每个元素值可以是0,通过编码字符串对初始向量进行处理,得到目标向量;示例性的,初始向量由15个元素组成,每个元素的元素值为0,通过编码字符串对初始向量进行处理,将处理后的初始向量确定为目标向量,这里的目标向量由15个元素组成,每个元素的元素值为非负整数。
39.需要说明的是,获取初始向量,基于拼接后的编码字符串对初始向量进行处理,得到该请求片段对应的目标向量的步骤,包括:1)、获取初始向量以及所述初始向量中每一位的元素值;2)、将所述编码字符串中的第一位数字作为当前数字,将所述当前数字与预设系数的乘积,作为第一元素;3)、将所述第一元素与所述初始向量中的第当前数字位的元素值的加和,更新为
所述初始向量中的第当前数字位的元素值;4)、基于所述编码字符串中所述当前数字的后m位中每一位数字以及当前数字在所述编码字符串中的位数,更新所述初始向量;其中,m是所述预设系数与数字一的差值;该步骤中,首先,获取初始向量,获取的初始向量有多位的元素值,每一位的元素值可以均为零,也就是将初始向量中的全部元素置零;然后,进行外循环的步骤,即遍历编码字符串中的每一位数字,将当前数字记作tc1,将当前数字在编码字符串中的位数(位置)记作fs,将当前数字tc1与预设系数wf的乘积(即tc1
×
wf)作为第一元素,将第一元素与初始向量的第tc1位的元素值进行累加,并更新初始向量;其次,进行内循环的步骤,即遍历当前数字后的 wf-1 (即m)位数字,对初始变量进行处理,完成内循环后,进入下述步骤5),将编码字符串中的当前数字的下一位数字作为当前数字,继续进行外循环的步骤以及内循环的步骤,直到所述当前数字为编码字符串的最后一位数字时,将此次内循环结束后得到的初始向量确定为该请求片段对应的目标向量。
40.需要说明的是,基于编码字符串中当前数字的后m位中每一位数字以及当前数字在编码字符串中的位数,更新初始向量的步骤,包括:(1)、基于所述编码字符串中所述当前数字的后m位中每一位数字,将所述m位中的第一位数字作为当前目标数字,获取所述当前目标数字在所述编码字符串中的位数;(2)、将所述预设系数与所述当前目标数字在所述编码字符串中的位数的差值,确定为第一参数,并将所述第一参数与所述当前数字在所述编码字符串中的位数的加和,确定为第二参数;(3)、将所述第二参数与所述当前目标数字的乘积,确定为第三参数;(4)、将所述第三参数与所述初始向量中的第当前数字位的元素值的加和,更新为所述初始向量中的第当前数字位的元素值;(5)、将所述第二参数与所述当前数字的乘积,确定为第四参数;(6)、将所述第四参数与所述初始向量中的第当前目标数字位的元素值的加和,更新为所述初始向量中的第当前目标数字位的元素值;(7)、将所述当前目标数字的下一位数字作为当前目标数字,继续更新所述初始向量,直至所述当前目标数字为所述m位中的最后一位数字。
41.该步骤中,上述步骤(1)-(7)为内循环的步骤,具体的,遍历当前数字后的 wf-1(即m)位数字并做如下操作:从当前数字的后m位的第一位数字开始遍历,将被遍历的数字(即当前目标数字)记作tc2,将当前目标数字在编码字符串中的位数(即位置)记作fc,计算wf-fc fs的计算结果,将该计算结果记作df,其中,预设系数wf与fc的差值是第一参数,即第一参数=wf-fc,第一参数与当前数字在编码字符串中的位数fs的加和是第二参数,即第二参数df=wf-fc fs;将第二参数df与当前目标数字tc2的乘积,确定为第三参数,即第三参数=tc2
×
df,将第三参数与初始向量的第tc1位的元素值进行累加,并更新初始向量;将第二参数df与当前数字tc1的乘积,确定为第四参数,即第四参数=tc1
×
df,将第四参数与初始向量的第tc2位的元素值进行累加,并更新初始向量;将当前目标数字的下一位数字作为当前目标数字,继续内循环的遍历,直至当前目标数字为m位中的最后一位数字时,在该次内循环结束后,跳出内循环,执行下述步骤5)进入下一次的外循环。
42.5)、将所述编码字符串中的当前数字的下一位数字作为当前数字,继续更新所述
初始向量,直到所述当前数字为所述编码字符串的最后一位数字时,将更新后的初始向量确定为该请求片段对应的目标向量。
43.s104、将该请求片段对应的目标向量输入至预先训练好的检测模型中进行检测,得到该目标向量的检测结果;需要说明的是,得到训练好的检测模型的步骤请参阅图2,图2为本技术实施例所提供另一种恶意请求的检测方法的流程图,如图2中所示,通过以下步骤得到训练好的检测模型:s201、获取第一样本集合、第二样本集合以及请求样本集合;该步骤中,第一样本集合是多个第一语句样本的集合;所述第一语句样本是包括注入攻击的结构化查询语句的样本;所述第二样本集合是多个第二语句样本的集合;所述第二语句样本是不包括注入攻击的结构化查询语句的样本;所述请求样本集合是多个访问请求样本的集合;所述访问请求样本是不包括注入攻击的访问请求的样本;示例性的,收集如下样本集,任一样本不可同时出现在多个样本集中, 第一样本集合qb1,qb1是多个包含sql注入攻击的sql语句的集合;第二样本集合qw1,qw1是多个不含sql注入攻击的sql语句的集合;请求样本集合qw2,qw2是多个不含sql注入攻击的http请求的集合。
44.s202、将所述请求样本集合中的每个访问请求样本进行切分处理,得到每个访问请求样本的访问请求片段;该步骤中,将请求样本集合qw2中每个访问请求样本进行切分处理,切分成若干个访问请求片段,这里的访问请求样本的切分处理方式与上述目标请求切分成至少一个请求片段的方式一致,在此不再赘述。
45.s203、对所述每个访问请求样本的每个访问请求片段进行编码处理,得到每个访问请求样本的每个访问请求片段对应的请求向量;s204、将所述第一样本集合中的每个第一语句样本进行编码处理,得到每个第一语句样本对应的第一语句样本向量;s205、将所述第二样本集合中的每个第二语句样本进行编码处理,得到每个第二语句样本对应的第二语句样本向量;s206、将所述每个访问请求样本的每个访问请求片段对应的请求向量、所述每个第一语句样本对应的第一语句样本向量以及所述每个第二语句样本对应的第二语句样本向量输入至检测模型中,得到训练好的检测模型。
46.该步骤中,将上述步骤s202得到的请求样本集合qw2中每个访问请求样本的每个访问请求片段、第一样本集合qb1中的每个第一语句样本以及第二样本集合qw1中的每个第二语句样本分别进行编码处理,以得到对应的向量,这里的编码处理方式与上述目标请求的每个请求片段进行编码处理以得到对应的目标向量的方式一致,在此不再赘述;将得到的多个向量组成分别对应第一样本集合qb1、第二样本集合qw1、请求样本集合qw2的向量集vb1、vw1、vw2,将向量集vb1、vw1、vw2输入至检测模型进行训练,检测模型可以是机器学习模型m(例如lstm),得到训练好的检测模型;这里,检测模型的具体训练方法为现有技术,在此不再赘述。
47.s105、在每个请求片段对应的目标向量的检测结果中,若任意一个目标向量的检
测结果指示为异常,则将所述目标请求确定为恶意请求。
48.示例性的,若是检测的若干目标向量中有任一目标向量被检测为sql注入攻击,则判定对应的目标请求为恶意请求;请参阅图3,图3为本技术实施例所提供的一种恶意请求检测流程的示意图,如图3所示,接收目标请求,例如http请求,将http请求切分成n段请求片段,分别为请求片段1、请求片段2、
……
、请求片段n;将这n个请求片段中的每个请求片段进行编码,分别得到请求片段1对应的编码1、请求片段2对应的编码2、
……
、请求片段n对应的编码n;将每个编码进行转换,得到每个编码对应的目标向量,分别为编码1对应的目标向量1、编码2对应的目标向量2、
……
、编码n对应的目标向量n;将这n个目标向量输入至检测模型中进行检测,得到每个目标向量对应的检测结果,在这n个检测结果中,若存在任意一个检测结果指示为异常,则将目标请求(http请求)确定为恶意请求,若所有检测结果指示均为正常,则将目标请求(http请求)确定为正常请求。
49.本技术实施例提供的一种恶意请求的检测方法,所述检测方法包括:获取目标请求,并基于所述目标请求,确定所述目标请求的长度;基于所述目标请求的长度,对所述目标请求进行切分处理,得到至少一个请求片段;针对每个请求片段,对该请求片段进行编码处理,得到该请求片段对应的目标向量;将该请求片段对应的目标向量输入至预先训练好的检测模型中进行检测,得到该目标向量的检测结果;在每个请求片段对应的目标向量的检测结果中,若任意一个目标向量的检测结果指示为异常,则将所述目标请求确定为恶意请求。
50.这样,采用本技术提供的技术方案能够通过将目标请求进行切分以及编码处理后,得到目标请求对应的多个目标向量,将多个目标向量输入检测模型中得到每个目标向量的检测结果,若任意一个目标向量的检测结果指示异常,则目标请求是带有注入攻击的恶意请求,提高了恶意请求检测的准确性以及效率。
51.基于同一申请构思,本技术实施例中还提供了与上述实施例提供一种恶意请求的检测方法对应的一种恶意请求的检测装置,由于本技术实施例中的装置解决问题的原理与本技术上述实施例一种恶意请求的检测方法相似,因此装置的实施可以参见方法的实施,重复之处不再赘述。
52.请参阅图4、图5,图4为本技术实施例所提供的一种恶意请求的检测装置的结构示意图之一,图5为本技术实施例所提供的一种恶意请求的检测装置的结构示意图之二,如图4中所示,所述检测装置410包括:获取模块411,用于获取目标请求,并基于所述目标请求,确定所述目标请求的长度;切分模块412,用于基于所述目标请求的长度,对所述目标请求进行切分处理,得到至少一个请求片段;编码模块413,用于针对每个请求片段,对该请求片段进行编码处理,得到该请求片段对应的目标向量;检测模块414,用于将该请求片段对应的目标向量输入至预先训练好的检测模型中进行检测,得到该目标向量的检测结果;确定模块415,用于在每个请求片段对应的目标向量的检测结果中,若任意一个目标向量的检测结果指示为异常,则将所述目标请求确定为恶意请求。
53.可选的,如图5所示,所述检测装置410还包括训练模块416,所述训练模块416用于:获取第一样本集合、第二样本集合以及请求样本集合;其中,所述第一样本集合是多个第一语句样本的集合;所述第一语句样本是包括注入攻击的结构化查询语句的样本;所述第二样本集合是多个第二语句样本的集合;所述第二语句样本是不包括注入攻击的结构化查询语句的样本;所述请求样本集合是多个访问请求样本的集合;所述访问请求样本是不包括注入攻击的访问请求的样本;将所述请求样本集合中的每个访问请求样本进行切分处理,得到每个访问请求样本的访问请求片段;对所述每个访问请求样本的每个访问请求片段进行编码处理,得到每个访问请求样本的每个访问请求片段对应的请求向量;将所述第一样本集合中的每个第一语句样本进行编码处理,得到每个第一语句样本对应的第一语句样本向量;将所述第二样本集合中的每个第二语句样本进行编码处理,得到每个第二语句样本对应的第二语句样本向量;将所述每个访问请求样本的每个访问请求片段对应的请求向量、所述每个第一语句样本对应的第一语句样本向量以及所述每个第二语句样本对应的第二语句样本向量输入至检测模型中,得到训练好的检测模型。
54.可选的,所述切分模块412具体用于:基于所述目标请求的长度,确定所述目标请求的长度是否小于预设长度;若小于,则将所述目标请求确定为请求片段;若不小于,则将所述目标请求按照所述预设长度进行切分处理,得到至少一个请求片段。
55.可选的,所述切分模块412在用于将所述目标请求按照所述预设长度进行切分处理,得到至少一个请求片段时,所述切分模块412具体用于:将所述目标请求按照所述预设长度进行切分处理,得到n个长度均为所述预设长度的请求片段;其中,n为所述目标请求的长度与所述预设长度的商值取整后的数值;将n与所述预设长度的乘积,确定为所述目标请求的切分总长度;将所述目标请求的长度与所述目标请求的切分总长度的差值,确定为所述目标请求进行切分处理后的未切分部分的长度;确定所述未切分部分的长度是否小于所述预设长度与预设系数的乘积;若小于,则将所述未切分部分拼接在第n个请求片段的末尾作为第n个请求片段,得到n个请求片段;若不小于,则将所述未切分部分确定为第n 1个请求片段,得到n 1个请求片段。
56.可选的,所述编码模块413具体用于:针对每个请求片段,获取该请求片段中的预定关键词、单词、数字以及符号;基于该请求片段中包含的预定关键词、单词、数字以及符号,在预设编码映射关系中确定出所述预定关键词对应的数字编码、所述单词对应的数字编码、所述数字对应的数字编码以及所述符号对应的数字编码;
基于该请求片段中所述预定关键词、单词、数字以及符号的组成顺序,将该请求片段中所述预定关键词对应的数字编码、所述单词对应的数字编码、所述数字对应的数字编码以及所述符号对应的数字编码按照所述组成顺序进行拼接,得到拼接后的编码字符串;获取初始向量,基于所述拼接后的编码字符串对所述初始向量进行处理,得到该请求片段对应的目标向量。
57.可选的,所述编码模块413在用于获取初始向量,基于所述拼接后的编码字符串对所述初始向量进行处理,得到该请求片段对应的目标向量时,所述编码模块413具体用于:获取初始向量以及所述初始向量中每一位的元素值;将所述编码字符串中的第一位数字作为当前数字,将所述当前数字与预设系数的乘积,作为第一元素;将所述第一元素与所述初始向量中的第当前数字位的元素值的加和,更新为所述初始向量中的第当前数字位的元素值;基于所述编码字符串中所述当前数字的后m位中每一位数字以及当前数字在所述编码字符串中的位数,更新所述初始向量;其中,m是所述预设系数与数字一的差值;将所述编码字符串中的当前数字的下一位数字作为当前数字,继续更新所述初始向量,直到所述当前数字为所述编码字符串的最后一位数字时,将更新后的初始向量确定为该请求片段对应的目标向量。
58.可选的,所述编码模块413在用于基于所述编码字符串中所述当前数字的后m位中每一位数字以及当前数字在所述编码字符串中的位数,更新所述初始向量时,所述编码模块413具体用于:基于所述编码字符串中所述当前数字的后m位中每一位数字,将所述m位中的第一位数字作为当前目标数字,获取所述当前目标数字在所述编码字符串中的位数;将所述预设系数与所述当前目标数字在所述编码字符串中的位数的差值,确定为第一参数,并将所述第一参数与所述当前数字在所述编码字符串中的位数的加和,确定为第二参数;将所述第二参数与所述当前目标数字的乘积,确定为第三参数;将所述第三参数与所述初始向量中的第当前数字位的元素值的加和,更新为所述初始向量中的第当前数字位的元素值;将所述第二参数与所述当前数字的乘积,确定为第四参数;将所述第四参数与所述初始向量中的第当前目标数字位的元素值的加和,更新为所述初始向量中的第当前目标数字位的元素值;将所述当前目标数字的下一位数字作为当前目标数字,继续更新所述初始向量,直至所述当前目标数字为所述m位中的最后一位数字。
59.本技术实施例提供的一种恶意请求的检测装置,所述检测装置包括:获取模块,用于获取目标请求,并基于所述目标请求,确定所述目标请求的长度;切分模块,用于基于所述目标请求的长度,对所述目标请求进行切分处理,得到至少一个请求片段;编码模块,用于针对每个请求片段,对该请求片段进行编码处理,得到该请求片段对应的目标向量;检测模块,用于将该请求片段对应的目标向量输入至预先训练好的检测模型中进行检测,得到该目标向量的检测结果;确定模块,用于在每个请求片段对应的目标向量的检测结果中,若
任意一个目标向量的检测结果指示为异常,则将所述目标请求确定为恶意请求。
60.这样,采用本技术提供的技术方案能够通过将目标请求进行切分以及编码处理后,得到目标请求对应的多个目标向量,将多个目标向量输入检测模型中得到每个目标向量的检测结果,若任意一个目标向量的检测结果指示异常,则目标请求是带有注入攻击的恶意请求,提高了恶意请求检测的准确性以及效率。
61.请参阅图6,图6为本技术实施例所提供的一种电子设备的结构示意图。如图6中所示,所述电子设备600包括处理器610、存储器620和总线630。
62.所述存储器620存储有所述处理器610可执行的机器可读指令,当电子设备600运行时,所述处理器610与所述存储器620之间通过总线630通信,所述机器可读指令被所述处理器610执行时,可以执行如上述图1以及图2所示方法实施例中的恶意请求的检测方法的步骤,具体实现方式可参见方法实施例,在此不再赘述。
63.本技术实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时可以执行如上述图1以及图2所示方法实施例中的恶意请求的检测方法的步骤,具体实现方式可参见方法实施例,在此不再赘述。
64.所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
65.在本技术所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
66.所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
67.另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
68.所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
69.最后应说明的是:以上所述实施例,仅为本技术的具体实施方式,用以说明本技术的技术方案,而非对其限制,本技术的保护范围并不局限于此,尽管参照前述实施例对本技术进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员
在本技术揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本技术实施例技术方案的精神和范围,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应以权利要求的保护范围为准。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献