防范http post泛洪攻击的方法及防火墙的制作方法
【技术领域】
[0001]本发明涉及安全检测技术领域,尤其涉及防范HTTP POST泛洪攻击的方法及防火工回O
【背景技术】
[0002]HTTP POST (超文本协议防御)洪泛攻击作为APP-DDOS (应用分布式攻击)攻击中的一种,通过向服务器提交合法的POST (防御)请求而达到访问服务器的目的,而在使用传统的网络层防火墙检测post请求时,从内容上看,攻击请求和合法请求是一致的,使攻击请求难以从合法请求中识别出来,增加了防御的难度,而且容易导致误判。例如:攻击请求经过精心构造的提交内容可以选择那些消耗磁盘10(输入输出)和需要进行数据库查询和存储的提交操作,而这些操作均是合法的行为,因此,最终导致服务器资源被大量的消耗了,故POST洪泛攻击也是一种危害较大的APP-DDOS攻击方法。因现有的防火墙无法识别出攻击请求和合法的请求,导致防火墙的安全检测性能偏低,安全检测准确度偏低,进而使得访问服务器的安全性偏低。
[0003]上述内容仅用于辅助理解本发明的技术方案,并不代表承认上述内容是现有技术。
【发明内容】
[0004]本发明的主要目的在于提供一种防范HTTP POST泛洪攻击的方法及防火墙,旨在解决现有的防火墙无法识别出攻击请求和合法的请求,导致防火墙的安全检测性能偏低,安全检测准确度偏低,进而使得访问服务器的安全性偏低的问题。
[0005]为实现上述目的,本发明提供的一种防范HTTP POST泛洪攻击的方法,包括以下步骤:
[0006]在客户端发送的POST请求为攻击请求时,向所述客户端反馈响应信息,所述响应信息包括一段JS代码,以供所述客户端执行所述JS代码并根据所述JS代码设置cookie首部,cookie的内容为JS代码计算后的验证信息;
[0007]在再次接收到所述客户端的POST请求时,判断再次接收到的POST请求对应的cookie是否包括所述验证信息;
[0008]在所述cookie未包括验证信息时,确定所述客户端未通过防火墙的验证,将所述客户端加入黑名单,阻止所述客户端访问服务器。
[0009]优选地,所述判断再次接收到的POST请求对应的cookie是否包括所述验证信息的步骤之后,还包括:
[0010]在所述cookie包括验证信息时,确定所述客户端通过防火墙的验证,将所述客户端加入白名单,允许所述客户端访问服务器。
[0011]优选地,所述向所述客户端反馈响应信息,所述响应信息包括一段JS代码的步骤之前,还包括:
[0012]判断客户端发送的POST请求是否为攻击请求。
[0013]优选地,所述判断客户端发送的POST请求是否为攻击请求的步骤包括:
[0014]判断客户端发送的POST请求的速率值是否大于预设速率阈值;
[0015]在客户端发送的POST请求的速率值大于预设速率阈值时,判定所述客户端发送的POST请求为攻击请求;
[0016]在客户端发送的POST请求的速率值不大于预设速率阈值时,判断所述客户端发送的POST请求为合法请求。
[0017]优选地,所述向所述客户端反馈响应信息,所述响应信息包括一段JS代码的步骤包括:
[0018]构建所述攻击请求的响应信息,所述响应信息为HTTP 503状态码,所述状态码的首部包含retry字段,且携带一段JS代码;
[0019]向所述客户端反馈响应信息。
[0020]此外,为实现上述目的,本发明还进一步提供一种防火墙,包括:
[0021]接发模块,用于在客户端发送的POST请求为攻击请求时,向所述客户端反馈响应信息,所述响应信息包括一段JS代码,以供所述客户端执行所述JS代码并根据所述JS代码设置cookie首部,cookie的内容为JS代码计算后的验证信息;
[0022]判断模块,用于在再次接收到所述客户端的POST请求时,判断再次接收到的POST请求对应的cookie是否包括所述验证信息;
[0023]处理模块,用于在所述cookie未包括验证信息时,判定所述客户端未通过防火墙的验证,将所述客户端加入黑名单,阻止所述客户端访问服务器。
[0024]优选地,所述处理模块,还用于在所述cookie包括验证信息时,确定所述客户端通过防火墙的验证,将所述客户端加入白名单,允许所述客户端访问服务器。
[0025]优选地,所述判断模块,还用于判断客户端发送的POST请求是否为攻击请求。
[0026]优选地,所述判断模块包括判断单元和判定单元,
[0027]所述判断单元,用于判断客户端发送的POST请求的速率值是否大于预设速率阈值;
[0028]所述判定单元,用于在客户端发送的POST请求的速率值大于预设速率阈值时,判断所述客户端发送的POST请求为攻击请求;还用于在客户端发送的POST请求的速率值不大于预设速率阈值时,判断所述客户端发送的POST请求为合法请求。
[0029]优选地,所述接发模块包括构建单元和接发单元,
[0030]所述构建单元,用于构建所述攻击请求的响应信息,所述响应信息为HTTP 503状态码,所述状态码的首部包含retry字段,且携带一段JS代码;
[0031]所述接发单元,用于向所述客户端反馈响应信息。
[0032]本发明通过强制加入JS代码,在客户端无法执行JS代码时,无法在cookie中携带验证信息,有效避免无法识别攻击请求和合法请求,导致防火墙的安全检测性能偏低,安全检测准确度偏低,进而使得访问服务器的安全性偏低的问题。提高了防火墙的安全监测性能、安全监测准确度,进而提高了访问服务器的安全性。
【附图说明】
[0033]图1为本发明防范HTTP POST泛洪攻击的方法的较佳实施例的流程示意图;
[0034]图2为本发明判断客户端发送的POST请求为攻击请求一实施例的流程示意图;
[0035]图3为图1中步骤SlO —实施例的细化流程示意图;
[0036]图4为本发明防火墙的较佳实施例的功能模块示意图;
[0037]图5为图4中接发模块的一实施例的细化功能模块示意图;
[0038]图6为图4中判断模块一实施例的细化功能模块示意图。
[0039]本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
【具体实施方式】
[0040]应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0041]本发明实施例的主要解决方案是:在客户端发送的POST请求为攻击请求时,向所述客户端反馈响应信息,所述响应信息包括一段JS代码,以供所述客户端执行所述JS (javascript脚本语言)代码并根据所述JS代码设置cookie (加密信息)首部,cookie的内容为JS代码计算后的验证信息;在再次接收到所述客户端的POST请求时,判断再次接收到的POST请求对应的cookie是否包括所述验证信息;在所述cookie未包括验证信息时,判定所述客户端未通过防火墙的验证,将所述客户端加入黑名单,阻止所述客户端访问服务器。通过强制加入JS代码,在客户端无法执行JS代码时,无法在cookie中携带验证信息,有效避免无法识别攻击请求和合法请求,导致防火墙的安全检测性能偏低,安全检测准确度偏低,进而使得访问服务器的安全性偏低的问题。提高了防火墙的安全监测性能、安全监测准确度,进而提高了访问服务器的安全性。
[0042]由于现有的防火墙在检测HTTP POST请求时,无法识别出攻击请求和合法的请求,导致防火墙的安全检测性能偏低,安全检测准确度偏低,进而使得访问服务器的安全性偏低。
[0043]基于上述问题,本发明提供一种防范HTTP POST泛洪攻击的方法。
[0044]参照图1,图1为本发明防范HTTP POST泛洪攻击的方法的第一实施例的流程示意图。
[0045]在一实施例中,所述防范HTTP POST泛洪攻击的方法包括:
[0046]步骤S10,在客户端发送的POST请求为攻击请求时,向所述客户端反馈响应信息,所述响应信息包括一段JS代码,以供所述客户端执行所述JS代码并根据所述JS代码设置cookie首部,cookie的内容为JS代码计算后的验证信息;
[0047]执行本发明防范HTTP POST泛洪攻击的方法的主体为防火墙,进一步地,为安装或加载与防火墙的防范HTTP POST泛洪攻击的应用程序。在本实施例中执行主体
优选为防火工回O
[0048]客户端用户在需要访问服务器时,发出访问请求,例如,为POST请求。防火墙拦截客户端发送的POST请求,并对客户端发出的POST请求进行安全检测。防火墙在接收到客户端发送的POST请求后,判断接收到的客户端发送的POST请求是否为攻击请求,在客户端发送的post请求为攻击请求时,向所述客户端反馈响应信息。
[0049]具体的,参考图2,所述判断客户端发送的POST请求为攻击请求的过程可以包括:
[0050]步骤SI I,判断客户端发送的POST请求的速率值是否大于预设速率阈值;若是,则执行步骤S12,若否,则执行步骤S13。
[0051]步骤S12,在客户端发送的POST请求的速率值大于预设速率阈值时,判断所述客户端发送的POST请求为攻击请求;
[0052]步骤S13,在客户端发送的POST请求的速率值不大于预设速率阈值时,判断所述客户端发送的POST请求为合法请求。
[0053]所述防火墙获取客户端发送POST请求的速率值,并将所获取的速率值与预设速率阈值比对。所述预设速率阈值可以是100MB或70MB等,为根据经验值设定。
[0054]在所获取的速率值大于预设速率阈值时,所述防火墙判定为攻击请求;在所获取的速率值不大于预设速率阈值时,判定为合法请求。在本发明其他实施例中,也还可以采取其他方式判断是否为攻击请求,例如,所述POST请求是否包括合法请求标识信息,在包括合法请求标识时,判断为合法请求,在未包括合法请求标识时,判断为攻击请求。
[0055]所述防火墙在客户端发送的POST请求为攻击请求时,进入防御模式,即开启防御模块,以对攻击请求进行防御,防止攻击请求占用服务器资源。向所述客户端反馈响应信息,所述响应信息包括一段JS代码。
[0056]具体的,参考图3,所述向客户端反馈响应信息的过程可以包括:
[0057]步骤S14,构建所述攻击请求的响应信息,所述响应信息为HTTP 503状态码,所述状态码的首部包含retry字段,且携带一段JS代码;
[0058]步骤S15,向所述客户端反馈响应信息。
[0059]在接收到的POST请求为攻击请求时,所述防火墙构建所述攻击请求的响应信息,所述响应信息构建为HTTP 503状态码,所述HTTP 503状态码的首部包含retry字段,同时实体携带一段JS代码,并关闭所述客户端与服务器的连接。将构建的响应信息发送至攻击请求对应的客户端。
[0060]所述客户端在接收到所述响应信息时,再次生成POST请求,所述POST请求根据接收到的响应信息构建。所述客户端获取所述响应信息中的JS代码,并执行所述JS代码,所述再次构建的POST请求对应的cookie的首部通过JS代码设置,且通过执行所述JS代码生成验证信息,所述客户端的应用在能执行所述JS代码时,生成验证信息,在所述客户端的应用不能执行所述JS代码时,不能生成所述验证信息,即无法在cookie中携带验证信息,若无法执行JS代码,则表示所述客户端的应用为攻击应用。例如,以所述应用以浏览器应用为例,若所述浏览器应用无法执行JS代码,则无法生成验证信息,若所述浏览器应用能执行JS代码,则能生成验证信息,并在cookie中携带验证信息。所述客户端在构建好再次发送的POST请求后,向所述服务器发送再次构建的POST请求。
[0061 ] 步骤S20,在再次接收到所述客户端的POST请求时,判断再次接收到的POST请求对应的cookie是否包括所述验证信息;
[0062]在判断接收到的POST请求为攻击请求后,所述防火墙接收所述客户端再次发送的POST请求,在接收到所述客户端再次发送的POST请求时,获取所述再次接收到的POST请求对应的cookie,判断再次接收到的POST请求对应的cookie是否包括验证信息,即判断所述客户端的应用是否为攻击应用。
[0063]若包括验证信息,则执行步骤S40,若不包括验证信息,则执行步骤S30。
[0064]步骤S30,在所述cookie未包括验证信息时,确定所述客户端未通过防火墙的验证,将所述客户端加入黑名单,阻止所述客户端访问服务器;
[0065]步骤S40,在所述cookie包括验证信息时,确定所述客户端通过防火墙的验证,将所述客户端加入白名单,允许所述客户端访问服务器。
[0066]在所述cookie包括验证信息时,所述防火墙判断所述客户端的应用不为攻击应用,将所述客户端加入白名单,允许所述客户端访问服务器,并将所述再次接收到的POST请求转发服务器;若所述cookie不包括验证信息,判断所述客户端的应用为攻击应用,将所述客户端加入黑名单,禁止所述客户端访问服务器。本实施例通过客户端分析和执行防火墙基于攻击POST请求反馈的响应信息中的JS代码产生验证信息,在能执行JS代码时,在cookie中加入验证信息,在不能执行JS代码时,不在cookie中加入验证信息,提高安全检测的效率,且将产生验证信息的计算过程在客户端实现,防火墙侧只需要简单的判断是否在cookie中包括验证信息,使得降低了防火墙侧的计算过程,节省了防火墙侧的计算资源,提尚防火墙的性能。
[0067]本实施例通过强制加入JS代码,在客户端无法执行JS代码时,无法在cookie中携带验证信息,有效避免无法识别攻击请求和合法请求,导致防火墙的安全检测性能偏低,安全检测准确度偏低,进而使得访问服务器的安全性偏低的问题。提高了防火墙的安全监测性能、安全监测准确度,进而提高了访问服务器的安全性。
[0068]对应的,本发明还进一步提供一种防火墙。
[0069]参照图4,图4为本发明防火墙的较佳实施例的功能模块示意图。
[0070]在一实施例中,所述防火墙包括:接发模块10、判断模块20及处理模块30。
[0071]所述接发模块10,用于在客户端发送的POST请求为攻击请求时,向所述客户端反馈响应信息,所述响应信息包括一段JS代码,以供所述客户端执行所述JS代码并根据所述JS代码设置cookie首部,cookie的内容为JS代码计算后的验证信息;
[0072]客户端用户在需要访问服务器时,发出访问请求,例如,为POST请求。防火墙拦截客户端发送的POST请求,并对客户端发出的POST请求进行安全检测。
[0073]所述判断模块20,用于在接收到客户端发送的POST请求后,判断接收到的客户端发送的POST请求是否为攻击请求,在客户端发送的POST请求为攻击请求时,向所述客户端反馈响应信息。
[0074]具体的,参考图5,所述判断模块20包括:判断单元21和判定单元22,
[0075]所述判断单元21,用于判断客户端发送的POST请求的速率值是否大于预设速率阈值;
[0076]所述判定单元22,用于在客户端发送的POST请求的速率值大于预设速率阈值时,判断所述客户端发送的POST请求为攻击请求;还用于在客户端发送的POST请求的速率值不大于预设速率阈值时,判断所述客户端发送的POST请求为合法请求。
[0077]所述防火墙获取客户端发送POST请求的速率值,并将所获取的速率值与预设速率阈值比对。所述预设速率阈值可以是100MB或70MB等,为根据经验值设定。
[0078]在所获取的速率值大于预设速率阈值时,所述防火墙判定为攻击请求;在所获取的速率值不大于预设速率阈值时,判定为合法请求。在本发明其他实施例中,也还可以采取其他方式判断是否为攻击请求,例如,所述POST请求是否包括合法请求标识信息,在包括合法请求标识时,判断为合法请求,在未包括合法请求标识时,判断为攻击请求。
[0079]所述防火墙在客户端发送的POST请求为攻击请求时,进入防御模式,即开启防御模块,以对攻击请求进行防御,防止攻击请求占用服务器资源。向所述客户端反馈响应信息,所述响应信息包括一段JS代码。
[0080]具体的,参考图6,所述接发模块10包括构建单元11和接发单元12,
[0081]所述构建单元11,用于构建所述攻击请求的响应信息,所述响应信息为HTTP 503状态码,所述状态码的首部包含retry字段,且携带一段JS代码;
[0082]所述接发单元12,用于向所述客户端反馈响应信息。
[0083]在接收到的POST请求为攻击请求时,所述防火墙构建所述攻击请求的响应信息,所述响应信息构建为HTTP 503状态码,所述HTTP 503状态码的首部包含retry字段,同时实体携带一段JS代码,并关闭所述客户端与服务器的连接。将构建的响应信息发送至攻击请求对应的客户端。<
br>[0084]所述客户端在接收到所述响应信息时,再次生成POST请求,所述POST请求根据接收到的响应信息构建。所述客户端获取所述响应信息中的JS代码,并执行所述JS代码,所述再次构建的POST请求对应的cookie的首部通过JS代码设置,且通过执行所述JS代码生成验证信息,所述客户端的应用在能执行所述JS代码时,生成验证信息,在所述客户端的应用不能执行所述JS代码时,不能生成所述验证信息,即无法在cookie中携带验证信息,若无法执行JS代码,则表示所述客户端的应用为攻击应用。例如,以所述应用以浏览器应用为例,若所述浏览器应用无法执行JS代码,则无法生成验证信息,若所述浏览器应用能执行JS代码,则能生成验证信息,并在cookie中携带验证信息。所述客户端在构建好再次发送的POST请求后,向所述服务器发送再次构建的POST请求。
[0085]所述判断单元21,还用于在再次接收到所述客户端的POST请求时,判断再次接收到的POST请求对应的cookie是否包括所述验证信息;
[0086]在判断接收到的POST请求为攻击请求后,所述防火墙接收所述客户端再次发送的POST请求,在接收到所述客户端再次发送的POST请求时,获取所述再次接收到的POST请求对应的cookie,判断再次接收到的POST请求对应的cookie是否包括验证信息,即判断所述客户端的应用是否为攻击应用。
[0087]所述处理模块30,用于在所述cookie未包括验证信息时,确定所述客户端未通过防火墙的验证,将所述客户端加入黑名单,阻止所述客户端访问服务器;还用于在所述cookie包括验证信息时,确定所述客户端通过防火墙的验证,将所述客户端加入白名单,允许所述客户端访问服务器。
[0088]在所述cookie包括验证信息时,所述防火墙判断所述客户端的应用不为攻击应用,将所述客户端加入白名单,允许所述客户端访问服务器,并将所述再次接收到的POST请求转发服务器;若所述cookie不包括验证信息,判断所述客户端的应用为攻击应用,将所述客户端加入黑名单,禁止所述客户端访问服务器。本实施例通过客户端分析和执行防火墙基于攻击POST请求反馈的响应信息中的JS代码产生验证信息,在能执行JS代码时,在cookie中加入验证信息,在不能执行JS代码时,不在cookie中加入验证信息,提高安全检测的效率,且将产生验证信息的计算过程在客户端实现,防火墙侧只需要简单的判断是否在cookie中包括验证信息,使得降低了防火墙侧的计算过程,节省了防火墙侧的计算资源,提尚防火墙的性能。
[0089]本实施例通过强制加入JS代码,在客户端无法执行JS代码时,无法在cookie中携带验证信息,有效避免无法识别攻击请求和合法请求,导致防火墙的安全检测性能偏低,安全检测准确度偏低,进而使得访问服务器的安全性偏低的问题。提高了防火墙的安全监测性能、安全监测准确度,进而提高了访问服务器的安全性。
[0090]上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如R0M/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
[0091]以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
【主权项】
1.一种防范HTTP POST泛洪攻击的方法,其特征在于,包括以下步骤: 在客户端发送的POST请求为攻击请求时,向所述客户端反馈响应信息,所述响应信息包括一段JS代码,以供所述客户端执行所述JS代码并根据所述JS代码设置cookie首部,cookie的内容为JS代码计算后的验证信息; 在再次接收到所述客户端的POST请求时,判断再次接收到的POST请求对应的cookie是否包括所述验证信息; 在所述cookie未包括验证信息时,确定所述客户端未通过防火墙的验证,将所述客户端加入黑名单,阻止所述客户端访问服务器。2.如权利要求1所述防范HTTPPOST泛洪攻击的方法,其特征在于,所述判断再次接收到的POST请求对应的cookie是否包括所述验证信息的步骤之后,还包括: 在所述cookie包括验证信息时,确定所述客户端通过防火墙的验证,将所述客户端加入白名单,允许所述客户端访问服务器。3.如权利要求1或2所述防范HTTPPOST泛洪攻击的方法,其特征在于,所述向所述客户端反馈响应信息,所述响应信息包括一段JS代码的步骤之前,还包括: 判断客户端发送的POST请求是否为攻击请求。4.如权利要求3所述防范HTTPPOST泛洪攻击的方法,其特征在于,所述判断客户端发送的POST请求是否为攻击请求的步骤包括: 判断客户端发送的POST请求的速率值是否大于预设速率阈值; 在客户端发送的POST请求的速率值大于预设速率阈值时,判定所述客户端发送的POST请求为攻击请求; 在客户端发送的post请求的速率值不大于预设速率阈值时,判断所述客户端发送的POST请求为合法请求。5.如权利要求1或2所述防范HTTPPOST泛洪攻击的方法,其特征在于,所述向所述客户端反馈响应信息,所述响应信息包括一段JS代码的步骤包括: 构建所述攻击请求的响应信息,所述响应信息为HTTP 503状态码,所述状态码的首部包含retry字段,且携带一段JS代码; 向所述客户端反馈响应信息。6.一种防火墙,其特征在于,包括: 接发模块,用于在客户端发送的POST请求为攻击请求时,向所述客户端反馈响应信息,所述响应信息包括一段JS代码,以供所述客户端执行所述JS代码并根据所述JS代码设置cookie首部,cookie的内容为JS代码计算后的验证信息; 判断模块,用于在再次接收到所述客户端的POST请求时,判断再次接收到的POST请求对应的cookie是否包括所述验证信息; 处理模块,用于在所述cookie未包括验证信息时,判定所述客户端未通过防火墙的验证,将所述客户端加入黑名单,阻止所述客户端访问服务器。7.如权利要求6所述的防火墙,其特征在于,所述处理模块,还用于在所述cookie包括验证信息时,确定所述客户端通过防火墙的验证,将所述客户端加入白名单,允许所述客户端访问服务器。8.如权利要求6或7所述的防火墙,其特征在于,所述判断模块,还用于判断客户端发送的POST请求是否为攻击请求。9.如权利要求8所述的防火墙,其特征在于,所述判断模块包括判断单元和判定单元, 所述判断单元,用于判断客户端发送的POST请求的速率值是否大于预设速率阈值; 所述判定单元,用于在客户端发送的POST请求的速率值大于预设速率阈值时,判断所述客户端发送的POST请求为攻击请求;还用于在客户端发送的POST请求的速率值不大于预设速率阈值时,判断所述客户端发送的POST请求为合法请求。10.如权利要求6或7所述的防火墙,其特征在于,所述接发模块包括构建单元和接发单元, 所述构建单元,用于构建所述攻击请求的响应信息,所述响应信息为HTTP 503状态码,所述状态码的首部包含retry字段,且携带一段JS代码; 所述接发单元,用于向所述客户端反馈响应信息。
【专利摘要】本发明公开了一种防范HTTP POST泛洪攻击的方法,包括以下步骤:在客户端发送的POST请求为攻击请求时,向所述客户端反馈响应信息,所述响应信息包括一段JS代码,以供所述客户端执行所述JS代码并根据所述JS代码设置cookie首部,cookie的内容为JS代码计算后的验证信息;在再次接收到所述客户端的POST请求时,判断再次接收到的POST请求对应的cookie是否包括所述验证信息;在所述cookie未包括验证信息时,确定所述客户端未通过防火墙的验证,将所述客户端加入黑名单,阻止所述客户端访问服务器。本发明还公开了一种防火墙。本发明实现提高防火墙的安全监测性能、安全监测准确度,进而提高访问服务器的安全性。
【IPC分类】H04L29/06, H04L12/26
【公开号】CN104883357
【申请号】CN201510208446
【发明人】李双航
【申请人】深信服网络科技(深圳)有限公司
【公开日】2015年9月2日
【申请日】2015年4月28日
转载请注明原文地址:https://www.famiwei.com/read-8136220.html