掌桥专利:专业的专利平台
掌桥专利
首页

HTTP请求夹带检测方法、装置、电子设备及存储介质

文献发布时间:2023-06-19 19:28:50


HTTP请求夹带检测方法、装置、电子设备及存储介质

技术领域

本申请涉及网络安全技术领域,尤其涉及一种HTTP请求夹带检测方法、装置、电子设备及存储介质。

背景技术

网站系统包括前端设备和后端设备,前端设备包括CDN服务器、代理服务器、负载均衡设备以及反向代理,后端设备包括WEB服务器。正常情况下,用户通过客户端访问服务器时,先把请求发到前端设备上,然后由前端设备再转发请求到后端设备。前端和后端之间通过pipeline进行通信,则前端在转发了前一个请求后,不必等待后端响应的到来,可以直接发送下一个请求。

正常情况下,一个HTTP请求在前端和后端均会被识别为一个HTTP请求,但假如构造一个恶意HTTP请求,使得它在前端被识别为一个HTTP请求,在后端被识别为两个HTTP请求,则前端会将请求的全部内容都转发给后端,但后端仅会处理识别到的第一个HTTP请求,位于该请求之后的其他内容,会被拼接至前端下一次转发的新HTTP请求之前,使得新HTTP请求内容被篡改,形成HTTP请求夹带攻击,这种情况会带来安全隐患。

发明内容

本申请实施例提供一种HTTP请求夹带检测方法、装置、电子设备及存储介质,用以缓解当前HTTP请求夹带攻击带来安全隐患的技术问题。

为解决上述技术问题,本申请实施例提供以下技术方案:

本申请提供一种HTTP请求夹带检测方法,包括:

接收目标HTTP请求,解析所述目标HTTP请求得到目标请求头部数据和目标请求体,所述目标请求头部数据包括目标请求行和目标请求头;

解析所述目标请求头部数据得到多个头部字段,并获取预设字段集,所述预设字段集包括多个预设CL字段和多个预设TE字段,将各头部字段分别与所述预设字段集中所有字段进行匹配,得到第一匹配成功次数,根据所述第一匹配成功次数,得到所述目标请求头的第一夹带检测结果;

在所述第一夹带检测结果表征所述目标请求头夹带攻击时,生成所述目标HTTP请求夹带攻击的检测结果;

在所述第一夹带检测结果表征所述目标请求头未夹带攻击时,获取预设字符串集,所述预设字符串集包括预设行首结束分块字符串和预设行首请求行字符串,将所述目标请求体与所述预设行首结束分块字符串进行匹配,得到第二匹配成功次数,将所述目标请求体与所述预设行首请求行字符串进行匹配,得到第三匹配成功次数,根据所述第二匹配成功次数和所述第三匹配成功次数,得到所述目标请求体的第二夹带检测结果;

在所述第二夹带检测结果表征所述目标请求体夹带攻击时,生成所述目标HTTP请求夹带攻击的检测结果。

同时,本申请实施例还提供了一种HTTP请求夹带检测装置,包括:

获取模块,用于接收目标HTTP请求,解析所述目标HTTP请求得到目标请求头部数据和目标请求体,所述目标请求头部数据包括目标请求行和目标请求头;

第一得到模块,用于解析所述目标请求头部数据得到多个头部字段,并获取预设字段集,所述预设字段集包括多个预设CL字段和多个预设TE字段,将各头部字段分别与所述预设字段集中所有字段进行匹配,得到第一匹配成功次数,根据所述第一匹配成功次数,得到所述目标请求头的第一夹带检测结果;

第一生成模块,用于在所述第一夹带检测结果表征所述目标请求头夹带攻击时,生成所述目标HTTP请求夹带攻击的检测结果;

第二得到模块,用于在所述第一夹带检测结果表征所述目标请求头未夹带攻击时,获取预设字符串集,所述预设字符串集包括预设行首结束分块字符串和预设行首请求行字符串,将所述目标请求体与所述预设行首结束分块字符串进行匹配,得到第二匹配成功次数,将所述目标请求体与所述预设行首请求行字符串进行匹配,得到第三匹配成功次数,根据所述第二匹配成功次数和所述第三匹配成功次数,得到所述目标请求体的第二夹带检测结果;

第二生成模块,用于在所述第二夹带检测结果表征所述目标请求体夹带攻击时,生成所述目标HTTP请求夹带攻击的检测结果。

本申请还提供一种电子设备,包括存储器和处理器;所述存储器存储有应用程序,所述处理器用于运行所述存储器内的应用程序,以执行上述任一项所述的HTTP请求夹带检测方法中的步骤。

本申请实施例提供一种计算机可读存储介质,计算机可读存储介质存储有多条指令,指令适于处理器进行加载,以执行上述HTTP请求夹带检测方法中的步骤。

有益效果:本申请提供一种HTTP请求夹带检测方法、装置、电子设备及存储介质,该方法通过对夹带攻击的HTTP请求的共性进行分析,确定夹带攻击的请求头中均会携带特定数量和特定内容的CL字段和TE字段,夹带攻击的请求体中均会携带特定数量、特定位置和特定内容的请求行字符串和结束分块字符串,则基于这些内容生成预设字段集和预设字符串集,在接收目标HTTP请求后,先将其解析为目标请求头部数据和目标请求体,并将目标请求头部数据解析为多个头部字段,然后将头部字段与预设字段集中的预设CL字段和预设TE字段进行匹配,根据匹配成功次数确定请求头是否夹带攻击,如果否,再将请求体与预设字符串集中的预设行首请求行字符串和预设行首结束分块字符串进行匹配,根据匹配成功次数确定请求体是否夹带攻击。通过此方式,可以简单且高效地检测出HTTP请求是否夹带攻击,且检测准确率较高,从而降低了安全隐患。

附图说明

下面结合附图,通过对本申请的具体实施方式详细描述,将使本申请的技术方案及其它有益效果显而易见。

图1是本申请实施例提供的HTTP请求夹带检测方法的场景示意图。

图2为正常HTTP请求中包含标准CL字段和包含TE字段的示意图。

图3为HTTP请求通过“CLCL”方式夹带的过程示意图。

图4为HTTP请求通过“CLTE”方式夹带的过程示意图。

图5为HTTP请求通过“TECL”方式夹带的过程示意图。

图6为本申请实施例中正常请求和恶意请求的判定过程示意图。

图7为本申请实施例中预设字段集生成方法的流程示意图。

图8为本申请实施例中CL字段和TE字段的关键位置点示意图。

图9为本申请实施例中预设字符串集生成方法的流程示意图。

图10为本申请实施例提供的HTTP请求夹带检测方法的流程示意图。

图11为本申请实施例提供的HTTP请求夹带检测装置的结构示意图。

图12为本申请实施例提供的电子设备的结构示意图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

请参阅图1,图1为本申请实施例所提供的HTTP请求夹带检测方法应用的场景示意图,该场景中存在网站系统,包括客户端、前端服务器和后端服务器,其中前端服务器可以包括CDN服务器、代理服务器、反向代理服务器等,后端服务器可以包括WEB服务器等。用户通过客户端访问服务器时,先把请求发到前端服务器上,然后由前端服务器转发请求到后端服务器。前端服务器和后端服务器之间通过pipeline进行通信,则前端服务器在转发了前一个请求后,不必等待后端服务器响应的到来,可以直接转发下一个请求。本申请的检测方法中执行主体为前端服务器。

对于一个正常的HTTP请求,HTTP规范提供了两种不同的方法来指定HTTP消息的长度,一种是标准TE字段,另一种是标准CL字段。标准TE字段是指Transfer-Encoding字段,其用于表示HTTP请求传输内容采用的编码方式,在实际请求中,最常用的方式分块编码,也即chunked,当出现标准TE字段时,HTTP消息的长度取决于所有分块的总长度。标准CL字段是指Content-Length字段,其用于表示要传输的请求体部分的字节长度,如5个字节,当出现标准CL字段时,HTTP消息的长度取决于该字段的值,也即5。

具体地,当HTTP请求中包含标准TE字段时,请求内容可以如图2中的(a)所示,服务器在识别到图中“Transfer-Encoding:chunked”时,可知晓该HTTP请求采用分块方式传输数据,需要将所有分块内容全部读取才能得到请求的完整数据,则在识别到“Transfer-Encoding:chunked”时,先识别第一个“4”,其表示第一个分块有4个字节的数据需要传输,服务器读取接下来的4个字节,成功得到“wiki”这个数据,继续识别第二个“5”,其表示第二个分块有5个字节的数据需要传输,服务器读取接下来的5个字节,成功得到“pedia”这个数据,依次类推,直至识别到最后一个0 ,其表示最后一个分块,至此读取结束,服务器得到了所有分块。在上述过程中,“ ”表示回车换行,其对应两个字节。

当HTTP请求中包含标准CL字段时,请求内容可以如图2中的(b)所示,服务器在识别到图中“Content-Length:5”时,可知晓该HTTP请求体部分包括5个字节,需要读取接下来的5个字节,从而可以将“12345”全部进行读取。

从上述内容可知,服务器在判断某个HTTP请求中需要读取哪些内容时,可基于识别到的标准CL字段和对应值进行读取,也可基于识别到的标准TE字段和对应值进行读取。在此前提下,如果前端服务器和后端服务器的识别机制不一致,攻击者可以在HTTP请求中夹带一些内容,使得它在前端被识别为一个HTTP请求,在后端被识别为两个HTTP请求,则前端会将请求的全部内容都转发给后端,但后端仅会处理识别到的第一个HTTP请求,位于该请求之后的其他内容,会被拼接至前端下一次转发的新HTTP请求之前,使得新HTTP请求内容被篡改,形成夹带攻击,带来安全隐患。HTTP请求夹带攻击的方式主要包括“CLCL”、“CLTE”以及“TECL”,下面具体对这三种攻击方式进行说明。

“CLCL”夹带方式也即在HTTP请求中设置两个标准CL字段,且两个标准CL字段的值不同。按照规定,当服务器收到的HTTP请求中包含两个标准CL字段且两者的值不同时,需要返回400错误,但某些服务器可能不会严格按照该规范,仍然对标准CL字段进行识别,且识别方式有差别,有些服务器会识别前一个标准CL字段,有些服务器则识别后一个标准CL字段,此时如果采用这两种服务器进行通信,就会出现问题。

例如,前端代理服务器和后端源站服务器在收到类似的请求时,都不会返回400错误,但是前端代理服务器按照第一个标准CL字段的值对请求进行处理,而后端源站服务器按照第二个标准CL字段的值进行处理,此时,恶意攻击者可以构造一个如图3中的(a)所示的HTTP请求。前端代理服务器在接收到HTTP请求后,基于第一个标准CL字段,会认为获取到的数据包长度为8个字节,则会将整个数据包原封不动的转发给后端的源站服务器,而后端源站服务器基于第二个标准CL字段,会认为获取到的数据包长度仅为7个字节,则当其读取完前7个字节后,会认为已经读取完毕,然后生成对应的响应发送出去,此时的缓冲区会剩余一个字符“a”,对于后端源站服务器来说,这个“a”是下一个请求的一部分,但是还没有传输完毕。此时如果恰巧有其他正常用户对服务器发送了正常HTTP请求,如图3中的(b)所示,则正常HTTP请求会拼接到字符“a”的后面,当后端源站服务器接收完毕后,它实际处理的HTTP请求内容会如图3中的(c)所示,也即“a”被夹带到正常HTTP请求中。

“CLTE”夹带方式也即在HTTP请求中同时设置标准CL字段和标准TE字段,且前端服务器识别标准CL字段,后端服务器识别标准TE字段。假设攻击者构造了一个如图4中的(a)所示的HTTP请求,前端服务器识别标准CL字段,认为数据包长度为35个字节,则把如图4中的(a)中完整内容发给后端设备。后端设备识别标准TE字段,在解码时发现“0 ”,则认为其已经读取到最后一个分块,内容结束,其读取的全部内容仅为图4中的(b)所示,图4中的(a)中位于“0 ”之后的内容会被剩下。此时,如果接收到一个如图4中的(c)所示的正常HTTP请求,上述剩余内容会被拼接到正常HTTP请求之前,形成夹带,请求内容变成图4中的(d)所示。正常HTTP请求原本处理后会返回“200OK”,被覆盖后,会被返回“302Movedtemporarily”。

“TECL”夹带方式也即在HTTP请求中同时设置标准CL字段和标准TE字段,且前端服务器识别标准TE字段,后端服务器识别标准CL字段。假设攻击者构造了一个如图5中的(a)所示的HTTP请求,前端服务器识别标准TE字段,当其读取到“0 ”时,认为是读取完毕了,此时这个请求对代理服务器来说是一个完整的请求,然后转发给后端服务器。后端设备识别标准CL字段,认为数据包长度为4个字节,所以当它读取完“AE ”之后,就认为这个请求已经结束了,“AE ”后面的数据就认为是另一个请求被剩下。此时,如果接收到一个如图5中的(b)所示的正常HTTP请求,上述剩余内容会被拼接到正常HTTP请求之前,形成夹带,请求内容变成图5中的(c)所示。正常HTTP请求原本处理后会返回“200OK”,被覆盖后,正常HTTP请求变成了上述剩下请求的请求体部分,服务器只能看到上述剩下部分的请求,也只能响应这部分请求,导致响应出错。

以上三种情况均由于HTTP请求中存在异常CL字段和/或异常TE字段,而前端服务器和后端服务器识别机制又不同导致。为解决这一问题,在RFC中规定如果同时出现了标准TE字段和标准CL字段,那么要基于标准TE字段来进行识别,而忽略标准CL字段。如果前端服务器和后端服务器均按照此规定,则识别结果一致。然而,攻击者对HTTP请求的夹带攻击方式不限于上述内容,还可能对标准TE字段和对应值、或者标准CL字段和对应值进行变型处理,此时,如果一些服务器可以正确识别出该字段,而另一些服务器不能正确识别出该字段,仍然会出现夹带攻击的情况。例如,标准TE字段和对应值为“Transfer-Encoding:chunked”,攻击者将其变型为“Transfer-Encoding:xchunked”,有的设备不认为这是一个有效的TE头部,有的设备认为这是一个有效的TE头部,那么这种不一致还是会导致上述的“TECL”漏洞或者“CLTE”漏洞。

通过上述内容可知,使得前端服务器和后端服务器均按照RFC中规定识别相同字段的方式,并不能完全解决夹带攻击这一技术问题。本申请提出一种新的HTTP请求夹带检测方法,该方法在前后端服务器识别机制不一致、或者前后端服务器识别机制一致但无法保证对变型字段识别一致的情况下,均可以简单且高效地识别出HTTP请求是否夹带攻击,且识别准确率较高,从而降低了安全隐患。

在本申请实施例中,先对夹带攻击的HTTP请求的共性进行分析,确定夹带攻击请求的共性内容。该共性内容为:夹带攻击的HTTP请求的请求头中必须包括两个CL字段(每个字段可能是标准字段也可能是变型字段),或者一个CL字段加一个TE字段(每个字段可能是标准字段也可能是变型字段);夹带攻击的HTTP请求的请求体中必然会出现请求行字符串和分块传输机制下最后一个分块的字符串,且这两个字符串均会出现在行首。

基于这些共性内容,本申请对正常请求和恶意请求的判定过程具体如图6所示,根据请求头中可能出现的各字段建立预设字段集,根据请求体中可能出现的各字符串建立预设字符串集,然后先将HTTP请求的请求头与预设字段集进行匹配,如果匹配成功次数满足条件,则确定该HTTP请求为夹带攻击的恶意请求,如果不满足,再将HTTP请求的请求体与预设字符串集进行匹配,如果匹配成功次数满足条件,则确定该HTTP请求为夹带攻击的恶意请求,如果不满足,则确定该HTTP请求为正常请求。以下实施例中,对预设字段集生成过程、预设字符串集生成过程、以及HTTP请求的夹带检测过程进行具体说明。

如图7所示,预设字段集的生成步骤包括:

S11:获取标准CL字段中第一候选变型操作位置的第一位置信息、以及第一候选变型操作位置对应的第一候选变型字符,根据第一位置信息和第一候选变型字符,生成预设CL字段。

标准CL字段是指“Content-Length:”,其对应的值为需要传输的数据长度,在标准CL字段之前、值之后、两者之间、以及字段本身均可以进行一些变型,如图8中的(a)所示,当攻击者对“Content-Length:0”进行变型时,通常会在某个或某些位置进行字符的插入、替换等,这些可能被修改的位置形成了关键位置点。用数字从左到右对“Content-Length:0”中所有字符进行编号,可以得到0~18共19个编号,这些编号中有些单独编号形成一个关键位置点,有些相邻编号之间形成一个关键位置点、有些连续编号共同形成一个关键位置点,用字母A~I来表示不同类别的关键位置点,则A对应0~1,B对应7~8,C对应8,D对应8~9,E对应14~15,F对应15~16,G对应16,H对应16~17,I对应17~18。每种类型关键位置点的变型方式和变型字符范围如表1所示。

表1

从上述内容可知,对于“Content-Length:0”的整体,变型方式和对应的变型字符较多,如果将其整体的变型均进行考虑,则后续匹配会较为复杂。在本申请实施例中,仅对标准CL字段“Content-Length:”的变型进行考虑,由于关键位置点C仅会被替换成两个其他字符,因此可以仅将关键位置点C(编号8)作为第一候选变型操作位置,空格字符和“_”字符作为第一候选变型字符,则根据第一候选变型操作位置的第一位置信息和第一候选变型字符,可以得到统一格式的预设CL字段为“content-lengt h:”、“content_length:”和“contentlength:”。

S12:获取标准TE字段中第二候选变型操作位置的第二位置信息、以及第二候选变型操作位置对应的第二候选变型字符,根据第二位置信息和第二候选变型字符,生成预设TE字段。

标准TE字段是指“Transfer-Encoding:”,其对应的值为需要数据编码类型,在标准TE字段之前、值之后、两者之间、以及字段本身均可以进行一些变型,如图8中的(b)所示,当攻击者对“Transfer-Encoding:chu nked”进行变型时,通常会在某些位置进行字符的插入、替换等,这些可能被修改的位置形成了关键位置点。用数字从左到右对“Transfer-Encodin g:chunked”中所有关键位置点进行编号,可以得到0~27共28个编号,这些编号中有些单独编号形成一个关键位置点,有些相邻编号之间形成一个关键位置点、有些连续编号共同形成一个关键位置点,用字母A~J来表示不同类别的关键位置点,则A对应0~1,B对应8~9,C对应9,D对应9~10,E对应17~18,F对应18~19,G对应19,H对应19~20,I对应26~27,J对应20~26。每种类型关键位置点的变型方式和变型字符范围如表1所示,另外J的变型方式为替换字符串,替换字符串为将“chunked”替换为“identity,chunked”、“foochunked”、“foo chunked bar”等。

同样地,对于“Transfer-Encoding:chunked”的整体,变型方式和对应的变型字符较多,如果将其整体的变型均进行考虑,则后续匹配会较为复杂。在本申请实施例中,仅对标准TE字段本身“Transfer-Encoding:”的变型进行考虑,由于关键位置点C仅会被替换成两个其他字符,因此可以仅将关键位置点C(编号9)作为第二候选变型操作位置,空格字符和“_”字符作为第二候选变型字符,则根据第二候选变型操作位置的第二位置信息和第二候选变型字符,可以得到统一格式的预设TE字段“transfer-encod ing:”、“transfer_encoding:”和“transferencoding:”。

S13:根据预设CL字段和预设TE字段,生成预设字段集。

组合上述三个预设CL字段和三个预设TE字段,可以得到预设字段集。

如图9所示,预设字符串集的生成步骤包括:

S21:获取分块传输机制中的标准结束分块字符串,根据标准结束分块和回车换行字符串,得到预设行首结束分块字符串的第一预设正则表达式。

如图4中的(a)和图5中的(a)所示,无论对于“CLTE”还是“TECL”攻击方式,在夹带攻击的HTTP请求的请求体中,都会出现分块传输机制中的标准结束分块字符串“0 ”,且该字符串必须位于某一行的开头位置,也即行首。因此,可以在“0 ”之前加上回车换行字符串“ ”,得到预设行首结束分块字符串的第一预设正则表达式“r ”。

S22:获取HTTP协议中对请求行的协议要求,根据协议要求和回车换行字符串,生成预设行首请求行字符串的第二预设正则表达式。

同样地,如图4中的(a)和图5中的(a)所示,无论对于“CLTE”还是“TECL”攻击方式,在夹带攻击的HTTP请求的请求体中,都会出现请求行的部分或全部内容,如“GET/pathHTTP/1.1”,以使得下一个正常HTTP请求的请求行内容被覆盖,无法得到正确响应,同时,该字符串必须位于某一行的开头位置。协议要求规定请求行包括请求方法、URL地址、协议名称及版本号,则基于协议要求和位于行首的要求,可以得到预设行首请求字符串的第二预设正则表达式“ (GET|POST|DELETE|PATCH|OPTIONS|HEAD|PUT|CONNECT|TRACE)[a-zA-Z0-9/._-]+sHTTP/[12].[01] ”。

S23:根据第一预设正则表达式和第二预设正则表达式,生成预设字符串集。

组合上述第一预设正则表达式和第二预设正则表达式,可得到预设字符串集。

如图10所示,HTTP请求夹带检测方法具体包括:

S31:接收目标HTTP请求,解析目标HTTP请求得到目标请求头部数据和目标请求体,目标请求头部数据包括目标请求行和目标请求头。

目标HTTP请求为当前接收到的任意一个HTTP请求。用户通过客户端发起目标HTTP请求,该请求由前端服务器接收,并转发给后端服务器。前端服务器接收到目标HTTP请求后,解析目标HTTP请求,将其区分为目标请求头部数据和目标请求体,其中目标请求头部数据包括了目标请求行和目标请求头。目标请求头部数据和目标请求体之间是以“ ”为分隔符来区分的,其中“ ”表示回车换行,“ ”表示两个回车换行,在解析时,从目标HTTP请求中查找到第一次出现的该分隔符,分隔符之前的部分即为目标请求头部数据,分隔符之后的部分即为目标请求体。

S32:解析目标请求头部数据得到多个头部字段,并获取预设字段集,预设字段集包括多个预设CL字段和多个预设TE字段,将各头部字段分别与预设字段集中所有字段进行匹配,得到第一匹配成功次数,根据第一匹配成功次数,得到目标请求头的第一夹带检测结果。

目标请求头部数据中包括了多个头部字段,由于后续需要进行字段之间的匹配,先将目标请求头部数据解析为单独的多个头部字段。具体地,先从目标请求头部数据中查找各字段分隔符,字段分隔符为“ ”,根据该字段分隔符,可以得到多个初始字段。由于目标请求头部数据中还可能包含不可见字符,不可见字符的范围为0x00~0x1f和0x7f~0xff,总计32+128种,这些不可见字符在匹配时会带来干扰,因此需要将各初始字段的不可见字符进行过滤。此外,由于初始字段中的英文字符通常会有大写格式和小写格式,为便于后续统一匹配,需要先将所有字符统一为大写格式或者小写格式,具体可以根据预设字段集中的各预设字段的格式来定。经过上述操作,最终得到多个单独的头部字段。

将各头部字段分别与预设字段集中六个预设字段进行匹配,得到第一匹配成功次数,并根据第一匹配成功次数的具体数值确定目标请求头的第一夹带检测结果。具体地,在第一匹配成功次数小于两次时,说明目标请求头仅存在CL字段、或者仅存在TE字段、或者不存在这两种字段,得到的第一夹带检测结果为目标请求头未夹带攻击,在第一匹配成功次数不小于两次时,说明目标请求头可能存在两个CL字段、或者一个CL字段和一个TE字段,则第一夹带检测结果为目标请求头夹带攻击。

S33:在第一夹带检测结果表征目标请求头夹带攻击时,生成目标HTTP请求夹带攻击的检测结果。

当第一夹带检测结果表征目标请求头夹带攻击时,不需要进行后续过程,直接判定该目标HTTP请求为夹带攻击的请求,需要马上对该请求进行处理,降低安全隐患。

S34:在第一夹带检测结果表征目标请求头未夹带攻击时,获取预设字符串集,预设字符串集包括预设行首结束分块字符串和预设行首请求行字符串,将目标请求体与预设行首结束分块字符串进行匹配,得到第二匹配成功次数,将目标请求体与预设行首请求行字符串进行匹配,得到第三匹配成功次数,根据第二匹配成功次数和第三匹配成功次数,得到目标请求体的第二夹带检测结果。

当第一夹带检测结果表征目标请求头未夹带攻击时,还需要对目标请求体进行进一步检测。将目标请求体与预设字符串集中的第一预设正则表达式进行匹配,得到第二匹配成功次数,同时将目标请求体与预设行首请求行字符串进行匹配,得到第三匹配成功次数。在第二匹配成功次数不小于一,且第三匹配成功次数不小于一时,说明目标请求体中同时存在分块传输机制下最后一个分块的字符串和请求行字符串,得到的第二夹带检测结果为目标请求体夹带攻击,反之得到的第二夹带检测结果为目标请求体未夹带攻击。

S35:在第二夹带检测结果表征目标请求体夹带攻击时,生成目标HTTP请求夹带攻击的检测结果。

当第二夹带检测结果表征目标请求头夹带攻击时,判定该目标HTTP请求为夹带攻击的请求,需要马上对该请求进行处理,降低安全隐患。而在第二夹带检测结果表征目标请求体未夹带攻击时,表示目标HTTP请求的消息体中没有夹带,则生成目标HTTP请求未夹带攻击的检测结果,判定该目标HTTP请求为正常请求。

通过上述实施例可知,本申请提供的HTTP请求夹带检测方法,通过对夹带攻击的HTTP请求的共性进行分析,确定夹带攻击的目标请求头中均会携带特定数量和内容的CL字段和TE字段、HTTP请求体中均会携带特定数量和内容的请求行字符串和分块传输结束字符串,则基于这些内容生成预设字段集和预设字符串集,在接收目标HTTP请求后,先将其解析为目标请求头和目标请求体,并将目标请求头解析为多个头部字段,然后将头部字段与预设字段集中的预设CL字段和预设TE字段进行匹配,根据匹配成功次数确定目标请求头是否夹带攻击,如果否,再将HTTP请求体与预设字符串集中的预设行首请求行字符串和预设行首结束分块字符串进行匹配,根据匹配成功次数确定HTTP请求体是否夹带攻击。通过此方式,可以简单且高效地识别出HTTP请求是否夹带攻击,且识别准确率较高,从而降低了安全隐患。

在上述实施例所述方法的基础上,本实施例将从HTTP请求夹带检测装置的角度进一步进行描述,请参阅图11,HTTP请求夹带检测装置可以包括:

接收模块10,用于接收目标HTTP请求,解析所述目标HTTP请求得到目标请求头部数据和目标请求体,所述目标请求头部数据包括目标请求行和目标请求头;

第一得到模块20,用于解析所述目标请求头部数据得到多个头部字段,并获取预设字段集,所述预设字段集包括多个预设CL字段和多个预设TE字段,将各头部字段分别与所述预设字段集中所有字段进行匹配,得到第一匹配成功次数,根据所述第一匹配成功次数,得到所述目标请求头的第一夹带检测结果;

第一生成模块30,用于在所述第一夹带检测结果表征所述目标请求头夹带攻击时,生成所述目标HTTP请求夹带攻击的检测结果;

第二得到模块40,用于在所述第一夹带检测结果表征所述目标请求头未夹带攻击时,获取预设字符串集,所述预设字符串集包括预设行首结束分块字符串和预设行首请求行字符串,将所述目标请求体与所述预设行首结束分块字符串进行匹配,得到第二匹配成功次数,将所述目标请求体与所述预设行首请求行字符串进行匹配,得到第三匹配成功次数,根据所述第二匹配成功次数和所述第三匹配成功次数,得到所述目标请求体的第二夹带检测结果;

第二生成模块50,用于在所述第二夹带检测结果表征所述目标请求体夹带攻击时,生成所述目标HTTP请求夹带攻击的检测结果。

在一种实施例中,第一得到模块20包括:

查找子模块,用于从所述目标请求头部数据中查找各字段分隔符;

第一得到子模块,用于根据所述字段分隔符,得到多个初始字段;

第二得到子模块,用于过滤各初始字段的不可见字符,并将剩余字符处理为预设格式,得到多个头部字段。

在一种实施例中,HTTP请求夹带检测装置还包括:

第三生成模块,用于获取标准CL字段中第一候选变型操作位置的第一位置信息、以及所述第一候选变型操作位置对应的第一候选变型字符,根据所述第一位置信息和所述第一候选变型字符,生成所述预设CL字段;

第四生成模块,用于获取标准TE字段中第二候选变型操作位置的第二位置信息、以及所述第二候选变型操作位置对应的第二候选变型字符,根据所述第二位置信息和所述第二候选变型字符,生成所述预设TE字段;

第五生成模块,用于根据所述预设CL字段和所述预设TE字段,生成所述预设字段集。

在一种实施例中,第一得到模块20包括:

第三得到子模块,用于在所述第一匹配成功次数小于两次时,得到所述目标请求头未夹带攻击的第一夹带检测结果;

第四得到子模块,用于在所述第一匹配成功次数不小于两次时,得到所述目标请求头夹带攻击的第一夹带检测结果。

在一种实施例中,HTTP请求夹带检测装置还包括:

第三得到模块,用于获取分块传输机制中的标准结束分块,根据所述标准结束分块和回车换行字符串,得到预设行首结束分块字符串的第一预设正则表达式;

第四得到模块,用于获取HTTP协议中对请求行的协议要求,根据所述协议要求和回车换行字符串,生成预设行首请求行字符串的第二预设正则表达式;

第六生成模块,用于根据所述第一预设正则表达式和所述第二预设正则表达式,生成所述预设字符串集。

在一种实施例中,第二得到模块40包括:

第五得到子模块,用于在所述第二匹配成功次数不小于一,且所述第三匹配成功次数不小于一时,得到所述目标请求体夹带攻击的第二夹带检测结果;

第六得到子模块,用于在所述第二匹配成功次数和/或所述第三匹配成功次数为零时,得到所述目标请求体不夹带攻击的第二夹带检测结果。

在一种实施例中,HTTP请求夹带检测装置还包括:

第七生成模块,用于在所述第二夹带检测结果表征所述目标请求体未夹带攻击时,生成所述目标HTTP请求未夹带攻击的检测结果。

区别于现有技术,本申请提供的HTTP请求夹带检测装置,通过对夹带攻击的HTTP请求的共性进行分析,确定夹带攻击的目标请求头中均会携带特定数量和内容的CL字段和TE字段、HTTP请求体中均会携带特定数量和内容的请求行字符串和分块传输结束字符串,则基于这些内容生成预设字段集和预设字符串集,在接收目标HTTP请求后,先将其解析为目标请求头和目标请求体,并将目标请求头解析为多个头部字段,然后将头部字段与预设字段集中的预设CL字段和预设TE字段进行匹配,根据匹配成功次数确定目标请求头是否夹带攻击,如果否,再将HTTP请求体与预设字符串集中的预设行首请求行字符串和预设行首结束分块字符串进行匹配,根据匹配成功次数确定HTTP请求体是否夹带攻击。通过此方式,可以简单且高效地识别出HTTP请求是否夹带攻击,且识别准确率较高,从而降低了安全隐患。

相应的,本申请实施例还提供一种电子设备,如图12所示,该电子设备可以包括射频(RF,Radio Frequency)电路101、包括有一个或一个以上计算机可读存储介质的存储器102、输入单元103、显示单元104、传感器105、音频电路106、WiFi模块107、包括有一个或者一个以上处理核心的处理器108、以及电源109等部件。本领域技术人员可以理解,图12中示出的电子设备结构并不构成对电子设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:

射频电路101可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,交由一个或者一个以上处理器108处理;另外,将涉及上行的数据发送给基站。存储器102可用于存储软件程序以及模块,处理器108通过运行存储在存储器102的软件程序以及模块,从而执行各种功能应用以及HTTP请求夹带检测。输入单元103可用于接收输入的数字或字符信息,以及产生与客户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。

显示单元104可用于显示由客户输入的信息或提供给客户的信息以及服务器的各种图形客户接口,这些图形客户接口可以由图形、文本、图标、视频和其任意组合来构成。

电子设备还可包括至少一种传感器105,比如光传感器、运动传感器以及其他传感器。音频电路106包括扬声器,扬声器可提供客户与电子设备之间的音频接口。

WiFi属于短距离无线传输技术,电子设备通过WiFi模块107可以帮助客户收发电子邮件、浏览网页和随访流式媒体等,它为客户提供了无线的宽带互联网随访。虽然图12示出了WiFi模块107,但是可以理解的是,其并不属于电子设备的必须构成,完全可以根据需要在不改变申请的本质的范围内而省略。

处理器108是电子设备的控制中心,利用各种接口和线路连接整个手机的各部分,通过运行或执行存储在存储器102内的软件程序和/或模块,以及调用存储在存储器102内的数据,执行电子设备的各种功能和处理数据,从而对手机进行整体监控。

电子设备还包括给各部件供电的电源109(比如电池),优选的,电源可以通过电源管理系统与处理器108逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。

尽管未示出,电子设备还可以包括摄像头、蓝牙模块等,在此不再赘述。具体在本实施例中,服务器中的处理器108会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行文件加载到存储器102中,并由处理器108来运行存储在存储器102中的应用程序,从而实现以下功能:

接收目标HTTP请求,解析所述目标HTTP请求得到目标请求头和目标请求体;

解析所述目标请求头得到多个头部字段,并获取预设字段集,所述预设字段集包括多个预设CL字段和多个预设TE字段,将各头部字段分别与所述预设字段集中所有字段进行匹配,得到第一匹配成功次数,根据所述第一匹配成功次数,得到所述目标请求头的第一夹带检测结果;

在所述第一夹带检测结果表征所述目标请求头夹带攻击时,生成所述目标HTTP请求夹带攻击的检测结果;

在所述第一夹带检测结果表征所述目标请求头未夹带攻击时,获取预设字符串集,所述预设字符串集包括预设行首结束分块字符串和预设行首请求行字符串,将所述目标请求体与所述预设行首结束分块字符串进行匹配,得到第二匹配成功次数,将所述目标请求体与所述预设行首请求行字符串进行匹配,得到第三匹配成功次数,根据所述第二匹配成功次数和所述第三匹配成功次数,得到所述目标请求体的第二夹带检测结果;

在所述第二夹带检测结果表征所述目标请求体夹带攻击时,生成所述目标HTTP请求夹带攻击的检测结果。

在上述实施例中,对各实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见上文的详细描述,此处不再赘述。

本领域普通技术人员可以理解,上述实施例的各种方法中的全部或部分步骤可以通过指令来完成,或通过指令控制相关的硬件来完成,该指令可以存储于一计算机可读存储介质中,并由处理器进行加载和执行。

为此,本申请实施例提供一种计算机可读存储介质,其中存储有多条指令,该指令能够被处理器进行加载,以实现以下功能:

接收目标HTTP请求,解析所述目标HTTP请求得到目标请求头和目标请求体;

解析所述目标请求头得到多个头部字段,并获取预设字段集,所述预设字段集包括多个预设CL字段和多个预设TE字段,将各头部字段分别与所述预设字段集中所有字段进行匹配,得到第一匹配成功次数,根据所述第一匹配成功次数,得到所述目标请求头的第一夹带检测结果;

在所述第一夹带检测结果表征所述目标请求头夹带攻击时,生成所述目标HTTP请求夹带攻击的检测结果;

在所述第一夹带检测结果表征所述目标请求头未夹带攻击时,获取预设字符串集,所述预设字符串集包括预设行首结束分块字符串和预设行首请求行字符串,将所述目标请求体与所述预设行首结束分块字符串进行匹配,得到第二匹配成功次数,将所述目标请求体与所述预设行首请求行字符串进行匹配,得到第三匹配成功次数,根据所述第二匹配成功次数和所述第三匹配成功次数,得到所述目标请求体的第二夹带检测结果;

在所述第二夹带检测结果表征所述目标请求体夹带攻击时,生成所述目标HTTP请求夹带攻击的检测结果。

以上对本申请实施例所提供的一种HTTP请求夹带检测方法、装置、电子设备和计算机可读存储介质进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的技术方案及其核心思想;本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例的技术方案的范围。

相关技术
  • 一种液位检测装置和包含其的设备以及液位检测方法、电子设备及计算机可读存储介质
  • 手势关键点检测方法、装置、电子设备及存储介质
  • 加密恶意流量检测方法、装置、电子设备及存储介质
  • 对象检测方法及装置、电子设备和存储介质
  • 一种卡顿检测方法、装置、电子设备和存储介质
  • HTTP请求检测方法、装置、计算机设备及存储介质
  • HTTP请求数据的异常检测方法、装置、服务器及存储介质
技术分类

06120115921918