在网络应用环境下重构错误响应信息的设备和方法转让专利

申请号 : CN200910136965.2

文献号 : CN101877696B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 张煜罗琳高波杨顺祥郭常杰

申请人 : 国际商业机器公司

摘要 :

本发明涉及网络应用访问技术,更具体地,涉及在具有网络应用防火墙(WAF)的网络应用环境下针对错误HTTP请求重构响应信息的设备和方法。本发明提供一种在网络应用环境下重新构建针对错误访问请求的响应信息的方法,包括下列步骤:响应于接收到针对所述错误访问请求的响应信息,获取所述错误访问请求要访问的网络应用的URL地址以及所述错误访问请求的出错参数信息;根据所获取的错误访问请求要访问的网络应用的URL地址获取响应信息模板;以及将所获取的错误访问请求的出错参数信息与所获取的响应信息模板合并以生成重新构建的针对错误访问请求的响应信息。

权利要求 :

1.一种在网络应用环境下重新构建针对错误访问请求的响应信息的方法,包括:

响应于接收到针对所述错误访问请求的响应信息,获取所述错误访问请求要访问的网络应用的URL地址以及所述错误访问请求的出错参数信息,其中针对所述错误访问请求的响应信息是根据所述错误访问请求的原始错误状态码定制的静态错误响应信息,并且所述静态错误响应信息作为判断是否需要对原始响应信息进行重构的依据;

根据所获取的错误访问请求要访问的网络应用的URL地址获取响应信息模板;以及将所获取的错误访问请求的出错参数信息与所获取的响应信息模板合并以生成重新构建的针对错误访问请求的响应信息。

2.如权利要求1所述的方法,还包括:接收并修改所述错误访问请求的原始错误状态码,作为所述重新构建的针对错误访问请求的响应信息的一部分。

3.如权利要求1所述的方法,所述针对所述错误访问请求的响应信息是具有特定标识的所述静态错误响应信息。

4.如权利要求1-3任一所述的方法,还包括:定制所述响应信息模板,所述响应信息模板与所述网络应用的URL地址对应。

5.如权利要求4所述的方法,所述响应信息模板与所述网络应用的URL地址的对应可以是一一对应、一对多对应或者多对一对应。

6.一种在网络应用环境下重新构建针对错误访问请求的响应信息的设备,包括:

信息获取装置,用于接收响应信息,并且响应于所述信息获取装置获取的响应信息是针对错误访问请求的响应信息,获取所述错误访问请求要访问的网络应用的URL地址以及错误访问请求的出错参数信息,其中针对所述错误访问请求的响应信息是根据所述错误访问请求的原始错误状态码定制的静态错误响应信息,并且所述静态错误响应信息作为判断是否需要对原始响应信息进行重构的依据;

响应信息模板获取装置,根据由所述信息获取装置获取的错误访问请求要访问的网络应用的URL地址获取响应信息模板;以及响应信息合并装置,将由所述信息获取装置获取的错误访问请求的出错参数信息与由所述响应信息模板获取装置获取的响应信息模板合并,以生成重新构建的针对错误访问请求的响应信息。

7.如权利要求6所述的设备,还包括状态码修改装置,接收并修改所述错误访问请求的原始错误状态码,作为所述重新构建的针对错误访问请求的响应信息的一部分。

8.如权利要求6所述的设备,还包括判断装置,判断所述信息获取装置接收到的响应信息是否是所述定制的静态错误响应信息,响应于判断结果为是,确定所述信息获取装置获取的响应信息是针对错误访问请求的响应信息。

9.如权利要求8所述的设备,所述判断装置进一步判断所述信息获取装置接收到的响应信息是否是具有特定标识的所述定制的静态错误响应信息,响应于判断结果为是,确定所述信息获取装置获取的响应信息是针对错误访问请求的响应信息。

10.如权利要求6-9任一所述的设备,还包括响应信息模板定制装置,用于定制所述响应信息模板,所述响应信息模板与所述网络应用的URL地址对应。

11.如权利要求10所述的设备,所述响应信息模板与所述网络应用的URL地址的对应可以是一一对应、一对多对应或者多对一对应。

说明书 :

在网络应用环境下重构错误响应信息的设备和方法

技术领域

[0001] 本发明涉及网络应用访问技术,更具体地,涉及在具有网络应用防火墙(WAF)的网络应用环境下重构错误响应信息的设备和方法。

背景技术

[0002] 随着网络应用(Web Application)的迅速发展,对网络应用防火墙(WAF)的需求也越来越大。与传统的数据防火墙相比,WAF可以拦截非法/恶意HTTP访问请求(也可统称为错误HTTP访问请求)对后台网络应用程序的攻击。然而,误报(False Positive)是WAF一个固有的且难以解决的问题。很多情况下,用户对后台网络应用程序提交了一个HTTP访问请求,如果这个HTTP请求被WAF认为是非法或者恶意请求,则WAF不会将该请求转发给后台网络应用程序,而是直接向用户返回错误信息,从而极大地影响了用户体验,因为很多情况下用户并非为了恶意攻击网络应用而提交HTTP请求,可能仅仅是由于错误地输入“敏感字符”等原因而导致其提交的HTTP请求被WAF认为是非法/恶意HTTP请求。
[0003] 目前存在以下几种解决上述问题的技术方案。一种解决方案是通过修改HTTP服务器容器(HTTP Server container)的代码来重新构建WAF在检测到恶意或非法HTTP请求时所提供的响应页面,这种方案的缺点是需要修改HTTP服务器容器的代码,这往往需要建立在对HTTP服务器容器的源代码的全面分析、测试的基础上,因此不容易实现。HTTP服务器容器(HTTPServer container)是网络应用环境中的通用组件,是HTTP服务器的核心组成部分。其作用主要是拦截HTTP请求和响应,记录请求和响应,并且转发这样的请求和响应。HTTP服务器容器本身对检测HTTP请求是否带有恶意攻击内容的支持并不完善。另一种解决方案是即使当WAF检测到非法或恶意HTTP请求时,并不生成验证错误的状态码,而是将该非法或恶意HTTP请求(WAF所认为的)转发给后端网络应用程序,由后端网络应用程序重新构建返回给用户的HTTP响应。这种方案的缺点主要有两点:一是将非法或恶意HTTP请求转发给后端网络应用程序可能会对网络应用程序造成真正的攻击(如果真的是非法或恶意HTTP请求的话);二是这种方案需要对后端网络应用程序的源代码进行更改,成本高且不容易实现。
[0004] 还有一种解决方案(如图1所示)是在HTTP服务器(HTTPServer)中定制更友好的静态的错误响应信息,取代标准化的内置在HTTP Server中的错误响应信息。HTTP服务器(HTTPServer)可以理解为HTTP服务器容器(HTTP ServerContainer)加上在HTTP服务器容器之上由用户开发的各种功能模块的总和,因此与第一种解决方案不同,第三种解决方案不需要大量修改HTTP服务器容器的源代码,而只是在HTTP服务器容器之上根据错误状态码的不同定制若干静态的错误响应页面,同时在HTTP服务器容器的代码中加上如下调用代码即可(示例性地):
[0005] #ErrorDocument 500/customize500.html
[0006] #ErrorDocument 403/customize403.html
[0007] 上面的HTTP配置语句(HTTPd)的含义为:当错误状态码为500时,向用户返回定制的customize500.html页面,当错误状态码为403时,向用户返回定制的customize403.html页面。这种方案的缺点是对于非法或恶意HTTP请求仍然只能返回静态错误页面,灵活性较差。而且由HTTP服务器特性所决定,在用户端Java Script环境下(目前越来越多的用户端界面采用Java Script环境),如果不修改HTTP响应的错误状态码而仅仅修改错误页面的内容的话,前端JS(Java Script)环境无法正常显示定制的静态错误返回页面,从而导致出错。
[0008] 图1示出现有技术中在具有WAF的网络应用环境下重构错误响应信息的系统的结构图。该系统在图1中总体由数字100表示。位于实线框内的模块101-104表示传统网络应用访问系统的必要组成部分,不具有重新构建错误响应信息的功能。现有技术中的系统100通过加入静态错误响应信息配置模块105,使得在具有网络应用防火墙WAF的网络应用环境下,对于用户提交的被认为是非法/恶意的HTTP请求返回定制的较友好的静态错误页面。系统100包括客户端模块101、网络应用防火墙模块102、HTTP服务器模块103、网络应用模块104和静态错误响应信息配置模块105。具体地,客户端模块101向HTTP服务器模块103提交访问网络应用模块104的HTTP请求。HTTP服务器模块103将接收到的HTTP请求传送至网络应用防火墙模块102,网络应用防火墙模块102对所述HTTP请求进行分析,如果所述HTTP请求是正常的HTTP请求,则将成功状态码200发送给HTTP服务器模块103,由HTTP服务器模块103将该正常的HTTP请求转发给网络应用模块104,以实现客户端101访问网络应用模块104的操作;如果所述HTTP请求是非法/恶意的请求,则网络应用防火墙模块102将分析得到的该非法/恶意HTTP请求的错误状态码(例如表示“HTTP服务器内部错误”的状态码500)发送给HTTP服务器模块103,由HTTP服务器模块103调用静态错误响应信息配置模块105中存储的静态错误响应页面,将相应的静态错误响应页面作为对客户端101提交的恶意/非法的HTTP请求的响应,通过HTTP服务器模块103返回至客户端模块101。所述错误状态码为网络应用防火墙模块102对非法/恶意HTTP请求的错误状态进行识别的编码,错误状态码有很多但均是固定的,除了错误状态码外,网络应用防火墙模块102还可识别成功状态码,例如上文所述的状态码200。HTTP服务器模块103可以根据由网络应用防火墙模块102分析得到并发送的状态码的类型采取不同的操作。错误状态码和成功状态码统称为状态码。常见的错误状态码及含义如下:400:错误请求;405:请求方法不允许;403:禁止访问;404:未找到要访问的页面;500:HTTP服务器内部错误。

发明内容

[0009] 考虑到上述问题,希望为网络应用环境提供新的重构错误响应信息的设备和方法,通过定制响应信息模板并利用所定制的响应信息模板触发下行流上的响应信息重构模块,向提交被WAF认为是非法/恶意HTTP请求的用户返回新的响应信息,并且无需修改HTTP服务器容器的代码和后端网络应用程序的代码,从而以较小的代价提升了在WAF误报问题上的用户体验。
[0010] 基于上述问题和目的,本发明为网络应用环境提供重构错误响应信息的设备和方法。
[0011] 根据本发明的第一方面,提供一种在网络应用环境下重新构建针对错误访问请求的响应信息的方法,包括下列步骤:响应于接收到针对所述错误访问请求的响应信息,获取所述错误访问请求要访问的网络应用的URL地址以及所述错误访问请求的出错参数信息;根据所获取的错误访问请求要访问的网络应用的URL地址获取响应信息模板;以及将所获取的错误访问请求的出错参数信息与所获取的响应信息模板合并以生成重新构建的针对错误访问请求的响应信息。
[0012] 根据本发明的第二方面,提供一种在网络应用环境下重新构建针对错误访问请求的响应信息的设备,包括:信息获取装置,用于接收响应信息,并且响应于所述信息获取装置获取的响应信息是针对错误访问请求的响应信息,获取所述错误访问请求要访问的网络应用的URL地址以及错误访问请求的出错参数信息;响应信息模板获取装置,根据由所述信息获取装置获取的错误访问请求要访问的网络应用的URL地址获取响应信息模板;以及响应信息合并装置,将由所述信息获取装置获取的错误访问请求的出错参数信息与由所述响应信息模板获取装置获取的响应信息模板合并,以生成重新构建的针对错误访问请求的响应信息。
[0013] 利用本发明的设备和方法,在WAF误报是一个普遍存在且难以解决的问题的背景下,可以向提交被WAF认为是非法/恶意HTTP请求的用户返回新的响应信息,并且无需修改HTTP服务器容器的代码和后端网络应用程序的代码,从而以较小的代价提升了在WAF误报问题上的用户体验。

附图说明

[0014] 图1是示出了现有技术中在具有WAF的网络应用环境下,通过定制静态错误页面向用户提供友好的HTTP响应信息的系统结构图;
[0015] 图2是示出了根据本发明能够重新构建错误响应信息的网络应用访问系统的结构图;
[0016] 图3是示出了在网络应用环境下重新构建针对错误访问请求的响应信息的设备的结构图;
[0017] 图4是示出了根据图3所示的设备的在网络应用环境下重新构建针对错误访问请求的响应信息的方法的流程图;
[0018] 图5是示出了根据本发明的设备和方法实现的一个具体实施例的结构图。

具体实施方式

[0019] 下面结合附图说明本发明的具体实施方式。
[0020] 图2是示出了根据本发明的实施例在网络应用环境下重新构建针对错误访问请求的响应信息的设备的结构图。该系统在图2中总体由数字200表示。系统200使得在具有网络应用防火墙WAF的网络应用环境下,可以重新构建对用户提交的被WAF认为是非法/恶意的HTTP请求所返回的响应信息。所述响应信息通常以页面的形式存在并返回至客户端。系统200包括客户端模块201、网络应用防火墙模块202、HTTP服务器模块203、网络应用模块204、静态错误响应信息配置模块205、响应信息重构模块206和响应信息模板定制模块207。可见,与图1(现有技术)相比,图2所示的系统增加了响应信息重构模块206和响应信息模板定制模块207,并且静态错误响应信息配置模块205在图2中的作用也与图1中的静态错误响应信息配置模块105不同。但是系统所处的网络环境、基本架构、客户端模块201、网络应用防火墙模块202、HTTP服务器模块203和网络应用模块204与图1所示的系统中的对应模块在功能及实现方式上均类似。具体地,客户端模块201向HTTP服务器模块203提交访问网络应用模块204的HTTP请求。HTTP服务器模块203将接收到的HTTP请求传送至网络应用防火墙模块202,网络应用防火墙模块202对所述HTTP请求进行分析,如果所述HTTP请求是正常的HTTP请求,则将其转发给网络应用模块204实现客户端201访问网络应用模块204的操作;如果所述HTTP请求是恶意/非法的请求,则网络应用防火墙模块202将分析得到的该非法/恶意HTTP请求的错误状态码发送至HTTP服务器模块203,由HTTP服务器模块203调用静态错误响应信息配置模块205中存储的静态错误响应信息,然后触发下行流上的响应信息重构模块206。之所以在触发响应信息重构模块206之前要调用静态错误响应信息配置模块205中存储的静态错误页面,而不是直接利用HTTP服务器模块203默认的错误响应信息,是因为后者在返回至客户端时是直接从HTTP服务器模块203返回至客户端模块201的下行流,而不是能够触发响应信息重构模块206的下行流。所谓下行流是指返回至客户端模块201的响应信息的传送路径,区别于客户端模块201向HTTP服务器模块203提交访问网络应用模块204的HTTP请求的上行流。静态错误响应信息配置模块203中存储的静态错误响应信息中包含事先定义好的供响应信息重构模块206识别用的特殊字符串,该特殊字符串的内容不限,只要区别于一些通用的字符串即可。这样做的原因是,有些时候不需要对所有的错误状态码的错误响应信息进行重构,而只需要对特定的错误状态码的错误响应信息进行重构,于是通过在特定的需要重构的错误状态码对应的静态错误响应信息中加入供识别用的特殊字符串,响应信息重构模块206识别出这些特殊字符串之后才进行后续的重新构建响应信息的操作。本领域技术人员应当了解,识别特殊字符串不是响应信息重构模块206所必须具备的功能或者必须完成的操作,在静态错误响应信息中加入这样的特殊字符串也不是必须完成的操作。由于响应信息重构模块206会根据响应信息模板和出错参数重构返回至客户端模块201的响应信息(下段详细描述),因此无需对静态错误响应信息进行过于复杂的定制。由于在静态错误响应信息配置模块205中存储的静态错误响应信息是未经重新构建的错误响应信息,因此可以将该静态错误响应信息理解为原始响应信息的一种。原始响应信息除了这里所述的静态错误响应信息外,还可包括由网络应用模块204返回至客户端模块201的正常响应信息。
[0021] 响应信息重构模块206被触发后,即根据客户端201提交的访问网络应用模块204的HTTP请求中的统一资源定位符(URL)信息(即客户端模块201所要访问的网络应用模块204的网络地址),获取相应的响应信息模板,所述响应信息模板由响应信息模板定制模块207定制。除此之外,还要将客户端模块201提交的被网络应用防火墙模块202认为是非法/恶意的HTTP请求中出错的参数与所获得的响应信息模板合并(在响应信息模板中的响应位置标记出错的参数)。HTTP请求中出错的参数是指客户端模块201提交的HTTP请求中被WAF认为出现错误的可能是恶意攻击字符的字段。也就是说,将HTTP请求中具体哪一部分字段出错的信息加入响应信息模板中相应的位置,这样可以使得客户端模块201在获得较友好的错误响应信息的同时了解为什么HTTP请求会被WAF认为是非法/恶意HTTP请求。由于网络应用防火墙模块202在判断出用户提交的HTTP请求为非法/恶意HTTP请求时,会在原始HTTP请求中加入出错参数的信息,因此基于HTTP服务器的性质,下行流上的响应信息重构模块206被触发后可以获得这样的出错信息。
[0022] 除了将HTTP请求中出错的参数与响应信息模板合并外,有时候还需要修改客户端模块201提交的HTTP请求的错误状态码,然后将重构后的响应信息发送至客户端模块201,使客户端模块201能够接收到较友好的错误响应页面。需要指出的是,这里之所以要修改客户端201提交的HTTP请求的错误状态码,是因为在客户端为Java Script环境下(目前越来越多的客户端界面采用Java Script环境),如果不修改HTTP请求的错误状态码而仅仅修改错误响应信息的内容的话,客户端JS(JavaScript)的逻辑代码就无法正常显示错误响应信息,从而导致出错。当然,如果本发明应用于非Java Script环境下的客户端,那么修改错误状态码不是响应信息重构模块206所必须完成的操作。需要指出的是,响应信息重构模块206之所以能获取HTTP请求的错误状态码,是因为网络应用防火墙模块202将分析得到的错误状态码发送给HTTP服务器模块203,并且HTTP服务器模块203将该错误状态码发送给被触发的下行流上的响应信息重构模块206,使得响应信息重构模块206可以修改该错误状态码。
[0023] 另外,关于响应信息模板的定制可以采用手动定制或者通过网络应用防火墙“自我学习”的机制来定制,也可以采用任何本领域公知的技术手段定制响应信息模板,只要实现将客户端模块201要请求访问的网络应用模块204的URL和响应信息模板对应即落入本发明的保护范围。URL和响应信息模板的对应关系,简单的方案可以是“一一对应”(即一个URL对应一个响应信息模板),也可以为了实现更精细的对应关系而采用“一对多对应”(即,可以根据访问同一个URL的不同HTTP请求中的出错字段的不同而将一个URL对应多个响应信息模板),还可以为了实现较粗粒度的对应关系而采用“多对一对应”(即,可以将多个URL均对应于同一个响应信息模板)。下文将结合图3具体描述实现不同对应关系的技术方案。
[0024] 为了更好地示出本发明与现有技术的区别及改进,图2中位于实线框外的响应信息重构模块206和响应信息模板定制模块207为在本发明的技术方案中新加入的模块,而同样位于实线框外的静态错误响应信息配置模块205虽然在现有技术中存在类似的模块(见图1中的105模块),但是上文已经描述,图2中的静态错误响应信息配置模块205与图1(现有技术)中的静态错误响应信息配置模块105的功能及实现方式并不相同。
[0025] 通过图2及相应的文字描述可以看出,利用图2所示的系统可以基于定制的关于客户端要访问的网络应用的URL地址和响应信息模板的对应关系,在不用修改HTTP服务器代码和后端网络应用的代码的情况下,向客户端返回更友好的错误响应信息,其中可以通过修改HTTP请求的错误状态码来支持JavaScript环境下的客户端,从而提升了用户体验。
[0026] 图3示出了在具有网络应用防火墙(WAF)的网络应用环境下重构错误响应信息的设备的结构图。图3所示的响应信息重构设备在图3中总体由数字300表示。设备300包括信息获取装置301、响应信息模板获取装置302、响应信息合并装置303、状态码修改装置304、判断装置305、响应信息模板定制装置306和静态错误响应信息配置装置307。其中状态码修改装置304、判断装置305、响应信息模板定制装置306和静态错误响应信息配置装置307用虚线框表示,意味着上述4个装置不是设备300所必需具备的组成部分。图3示出的设备300可以理解为图2中的静态错误响应信息配置模块205、响应信息重构模块206和响应信息模板定制模块207这3个模块的总和。进一步地,图2中的响应信息重构模块
206可以理解为图3中的信息获取装置301、响应信息模板获取装置302、响应信息合并装置
303,以及用虚线框表示的状态码修改装置304和判断装置305这5个装置的总和。
[0027] 具体地,信息获取装置301接收响应信息,并且响应于所述信息获取装置获取的响应信息是针对错误访问请求的响应信息,获取所述错误访问请求要访问的网络应用的URL地址以及错误访问请求的出错参数信息。需要指出的是,信息获取装置301接收到的响应信息在大部分实际运行过程中,既可以是针对错误访问请求的响应信息,也可以是来自后端网络应用的正常响应信息,但是在屏蔽了后端网络应用的条件下(也就是人为地保证每个响应信息均为针对错误访问请求的响应信息)的情况下,信息获取装置301接收的响应信息就只可能是针对错误访问请求的响应信息。响应信息模板获取装置302根据由信息获取装置301获取的错误HTTP请求要访问的URL地址,获取与该URL地址对应的响应信息模板。所述响应信息模板由响应信息模板定制装置306定制,响应信息模板定制装置306可以通过定制网络应用的URL地址和响应信息模板的对应关系来定制响应信息模板。根据在对图2的文字描述中所记载的内容,URL和响应信息模板的对应关系可以是“一一对应”、“一对多”或者“多对一”。下面是一个“一对多”对应关系的例子,即根据访问同一个URL的不同HTTP请求中的出错字段的不同而将一个URL对应多个响应信息模板:
[0028] ALLOWRULE ″URI/WAFTest/testresult.html;email^[\w-]+(? :\.[\w-]+)*@(?:[\w-]+\.)+[a-zA-Z]{2,7}$″
[0029] ″ ID = 060001,ATTACKTYPE = MALFORMED,RESMSG = response_message/resTmp1.txt″
[0030] RISKRULE″URI/WAFTest/testresult.html;address<>=′$\″\;!--″[0031] ″ID=060002,ATTACKTYPE=RISKCHARACTER,RESMSG=response_message/resTmp2.txt″
[0032] 上述两行代码的含义是,对于访问testresult.html这个URL的HTTP请求而言,如果是其中的email字段(参数)出错,则对应于获取resTemp1.txt文本作为模板内容;如果是其中的address字段(参数)出错,则对应于获取resTmp2.txt文本作为模板内容。
这样即实现了URL和响应信息模板间的“一对多”的对应关系,从而实现对响应信息模板进行较精细的划分。通过上述示例,本领域技术人员可以容易地实现URL和响应信息模板间的“一一对应”和“多对一”的对应关系。并且,实现的方式不局限于示例中的软件代码方式,只要能够实现建立URL与响应信息模板的对应关系,任何硬件或用其它语言编写的软件代码都落入本发明的保护范围。其中“ALLOWRULE”是指email字段中可以包括的字符类型,也就是正面(白名单)规定允许的字符类型列表;而“RISKRULE”是指address字段中不可以包括的字符类型,也就是从反面(黑名单)规定禁止的字符类型列表。本领域技术人员可以根据需要采用正面或反面规定的方式来定义调用模板的规则。还需要指出的是,可以采取多种技术手段来定义响应信息模板,下面给出利用HTML标签和Java Script信息的方式定义响应信息模板的两种示例。利用HTML标签来定义响应信息模板的好处是可以通过HTML语言加入丰富的页面显示元素(如图片)等:
[0033]
[0034]
[0035] ″ContactHouse″-Contacts
[0036]
[0037] href=″/Contacts/css/images/ContactHouse.ico″>
[0038]
[0039] charset=utf-8″/>
[0040]
[0041]
[0042]
[0049]
[0050]
[0051] 上面给出的即为利用HTML标签定义响应信息模板的示例,其中黑体部分的代码即为向响应信息模板中加入的HTTP请求的出错参数的信息,指明了HTTP请求中为包含必须的参数waflastmatch。
[0052] 下面给出利用Java Script信息定义响应信息模板的示例:{Response:Success;Message:Valid Parameter<%waflastmatch %>Required},注意这里的 Response:
Success是指成功地向客户端返回了响应信息,而并非指客户端提交的HTTP请求成功地访问了后台网络应用程序。本领域技术人员应当了解,定义响应信息模板的方式不限于上面两种,无论响应信息模板定制装置306采用何种能够向客户端返回包含出错参数信息的定义响应信息模板的方式,均落入本发明保护范围。由于响应信息模板往往在网络应用正式运行之前已经定制好,在设备300实际运行的过程中,只要响应信息模板获取装置302能够获取响应信息模板即可,而无论其通过何种途径获得。也就是说,设备300不是必须包含响应信息模板定制装置306,因此该装置在图3中用虚线框表示。
[0053] 状态码修改装置304修改所述被判断为非法或恶意的HTTP请求的错误状态码。修改状态码的原因是,在客户端为JavaScript环境下(目前越来越多的客户端界面采用Java Script环境),如果不修改HTTP请求的错误状态码而仅仅修改错误页面的内容的话,客户端JS(Java Script)环境就无法正常显示错误响应页面,从而导致出错。本领域技术人员可以理解,如果客户端并非Java Script环境,那么状态码修改装置304并非图3所示的响应信息重构设备300的一个必要组件。因此状态码修改装置304也在图3中用虚线框表示。修改状态码的示例是将错误状态码500修改为200,或者将错误状态码403修改为200。需要指出的是,将错误状态码500、403修改为200只是一个示例,其实质目的在于将对于用户而言不够友善的响应信息所对应的HTTP请求的错误状态码修改为较友善的响应信息所对应的状态码,并不限于将其修改为200一种状态码。
[0054] 响应信息合并装置303合并由响应信息模板获取装置302获取的响应信息模板和WAF分析得出的出错的HTTP请求的出错参数(字段)信息,生成新的要返回给客户端的错误响应信息,作为对提交非法或恶意HTTP请求的客户端的响应。这样重新构建的响应信息包含了客户端提出的HTTP请求中出错的参数的信息,并且构建于友好的状态码(例如状态码200)格式之上。
[0055] 判断装置305的作用是判断信息获取装置301接收到的响应信息是否为针对非法/恶意HTTP请求的错误响应信息,以及是否需要对这样的错误响应信息进行重新构建。这种判断是依据静态错误响应信息配置装置307所定制的静态错误响应信息进行的。判断装置305在下列情况下是有用的:(1)响应信息既可以是针对非法/恶意HTTP请求的错误响应信息,也可以是来自网络应用的正常响应信息;(2)不需要对所有错误状态码所对应的错误响应信息进行重新构建。例如,对于错误状态码“403:禁止访问”的错误响应信息,如果HTTP服务器需要将禁止访问的HTTP请求自动定向到另一个URL地址,那么就不需要对该错误状态码的错误响应信息进行重新构建。再比如,有些响应信息是来自于后端网络应用程序而非来自于WAF所发出的错误响应信息,因此也不能对这些来自后端网络应用程序的响应信息进行重构,因为如果对这样的响应信息进行重构,就破坏了用户对网络应用的正常访问。在以上两种情形下,为了判断是否要重新构建响应信息,需要由静态错误响应信息配置装置307对于需要重新构建响应信息的错误状态码定制静态错误响应信息,并在其中加入识别标记,例如特殊字符串。这样判断装置305通过判断信息获取装置301接收到的响应信息是否包含这样的识别标记来判断是否需要重新构建该接收到的响应信息。本领域技术人员应当理解,由于可以规定对所有的错误状态码的原始错误响应信息都进行重构,并且可以人为地设置禁止后端网络应用向客户端返回正常的响应信息(比如在测试网络防火墙WAF性能的阶段屏蔽了后端网络应用),因此判断装置305不是设备300必需的组成部分,没有判断装置305并不影响设备300实现重新构建错误响应信息的功能。对于静态错误响应信息配置装置307,在不需要判断装置305的情形下,在设备300实际运行的过程中,只要能够触发下行流上的模板获取装置302和响应信息合并装置303,就可以利用响应信息模板和WAF识别并发送至HTTP服务器的HTTP请求中的出错参数(字段)信息重新构建错误响应信息,而不是一定需要静态错误响应信息配置装置307定制静态错误响应信息。因此设备300不是必须包含判断装置305和静态错误响应信息配置装置307,这2个装置在图3中均用虚线框表示。
[0056] 通过图3及相应的文字描述可以看出,利用图3示出的响应信息重构设备300,可以基于定制的关于客户端要访问的URL和响应信息模板间的对应关系,在不用修改HTTP服务器代码和后端网络应用程序的代码的情况下,向客户端返回更友好的错误响应信息,其中可以通过修改HTTP请求的错误状态码来支持Java Script环境下的客户端,从而提升了用户体验。
[0057] 图4示出了对应于图3所示的设备300的用于网络应用环境下的重构对错误/非法HTTP请求的错误响应信息的方法的流程图。如图4所示,步骤401、402、404、408、409和410用虚线框表示,说明该6个步骤并非实现图4所示的方法的必备步骤,具体原因见下文描述。
[0058] 为了实现在包含网络应用防火墙WAF的网络应用环境下对客户端所提交的HTTP访问请求的响应信息进行重构,首先可能从步骤401开始。在步骤401中,根据客户端提交的非法/恶意HTTP请求的错误状态码定制相应的静态错误响应页面,所述错误状态码是由网络应用防火墙WAF分析得到的,错误状态码的类型是固定的。之所以要定制静态错误响应页面,主要原因是触发下行流上的重新构建错误响应信息的步骤并且作为判断是否需要对原始响应信息进行重构的依据,具体参见图2、图3中的静态响应信息配置模块(装置)以及相应的文字描述。要注意,在对图2的文字描述中已经记载,原始响应信息包括事先定制的静态错误响应信息(原始错误响应信息)和由网络应用返回至客户端的正常响应信息。本领域技术人员可以了解,静态错误响应信息的存储位置可以有多种选择,例如可以在客户端定制,可以在远程定制,可以在随意的移动存储设备中定制,还可以在HTTP服务器中进行定制,只要定制的静态错误错误响应信息能够为网络应用防火墙WAF所读取即可。
[0059] 除了可能要在步骤401中定制静态错误页面外,还可能要在步骤402中基于不同的网络应用程序的URL定制相应的响应信息模板。所述URL和响应信息模板的对应关系可以是“一一对应”,即一个URL对应一个响应信息模板;可以是“一对多”,即一个URL根据HTTP请求的出错字段(参数)的不同分别对应多个响应信息模板;也可以是“多对一”,即多个URL对应一个响应信息模板。可以根据不同的需求选择使用不同的定制响应信息模板的方法,例如在需要较精细地对响应信息模板进行定制的情况下,则选用“一对多”的对应关系。在上文结合图3所作的文字描述中,详细记载了采用一个“一对多”对应关系实现响应信息模板的示例,并且记载了通过HTML标签和JavaScript信息两种方式实现响应信息模板的示例。本领域技术人员应当了解,定义响应信息模板的方式不限于HTML标签和JavaScript信息两种方式,任何能够向客户端返回包含出错参数信息的定义响应信息模板的方式均落入本发明保护范围。
[0060] 在步骤402中定制响应信息模板的操作可以采用手动定制或者通过网络应用防火墙“自我学习”的机制来定制。具体地,手动定制的方式是指,手动地输入客户端提交的HTTP请求所要访问的网络应用程序的URL所对应的响应信息模板并保存,可以保存为txt文本文件或者其它任何类型的可读取的文件。“自我学习”的方式是指,屏蔽网络应用防火墙WAF过滤非法/恶意HTTP请求的功能,也就是将客户端提交的所有HTTP请求均转发至相应的网络应用程序,通过“学习”网络应用程序对这些HTTP请求所返回的响应信息来自动生成响应信息模板。可以看出,后一种方式具有一定的风险,因为将客户端提交的所有HTTP请求均转发至相应的网络应用程序会使得一旦所述HTTP请求为非法/恶意HTTP请求时,网络应用程序可能会受到其攻击。本领域技术人员可以了解,可以根据不同的应用环境和需求采用不同的定制响应信息模板的机制,例如,在实验室测试环境下(非法/恶意攻击的可能性比较低)就可以采用“自动学习”的机制来定制响应信息模板。
[0061] 可以将步骤401和402理解为在初始化阶段可能需要完成的步骤。在定制了静态错误页面和响应信息模板后,再来分析在网络应用防火墙WAF实时运行阶段重构错误响应信息的步骤。在步骤403中接收要返回至客户端的响应信息,这里接收到的要返回至客户端的响应信息可能是针对错误访问请求的响应信息,也可能是来自于后端网络应用的正常响应信息,而本发明的技术方案只要求对前者,也就是针对错误访问请求的响应信息进行重新构建,因此要在步骤404中判断接收到的要返回至客户端的响应信息是否是针对错误访问请求的响应信息。如果判断结果为是,则进行405步骤,如果判断结果为否,则进行步骤409,即直接向客户端返回接收到的要返回至客户端的响应信息。之所以在步骤404中能够判断接收到的要返回至客户端的响应信息是否是针对错误访问请求的响应信息,是因为:对于客户端提出的访问网络应用程序的某HTTP请求,网络应用防火墙WAF按照传统的方法分析该请求,如果认为该请求是非法/恶意HTTP请求,则将分析得到的该非法/恶意HTTP请求的错误状态码发送给HTTP服务器,由HTTP服务器根据所述错误状态码调用在步骤401中事先定制好的静态错误响应信息,在步骤404中对在步骤403中接收到的要返回至客户端的响应信息进行分析,如果该原始响应信息包含定制静态错误响应信息时所定义的特殊字符串(特定标识),即说明该响应信息是在步骤401中事先定制好的静态错误响应信息,是针对错误访问请求的响应信息,意味着需要对其进行重新构建的操作,从而进行至步骤405。如果不包含这样的特殊字符串即说明在步骤403中接收到的响应信息要么是来自于后端网络应用的正常响应信息,要么是不需要进行重新构建的静态错误响应信息,因此不需要对该响应信息进行重构操作,从而进行步骤409,将该接收到的要返回至客户端的响应信息直接发送至客户端。响应于通过步骤404判断出在步骤403中接收到的要返回至客户端的响应信息是针对错误访问请求的响应信息,在步骤405中获取错误访问请求要访问的URL地址以及错误访问请求中的出错参数信息,具体地讲是从HTTP服务器获取这样的信息,因为WAF在分析出访问请求中的出错参数信息后会把这样的信息传送给HTTP服务器,然后HTTP服务器又会将这样的信息附加在要返回至客户端的响应信息上,从而可以被接收到。这是由WAF和HTTP服务器本身的特性决定的,是本领域技术人员公知的技术常识,不需要对WAF和HTTP服务器作出任何更改。在步骤408中,修改出错的HTTP请求的错误状态码,所述错误状态码由网络应用环境下的网络应用防火墙识别并发送给HTTP服务器。例如将错误状态码500或者403修改为200,修改错误状态码的目的是为了支持Java Script环境下的客户端,这在上文中结合图3所作的文字描述部分有详细记载。
[0062] 在步骤406中,基于用户提交的HTTP请求所要访问的网络应用程序的URL获取事先在步骤402中定制好的响应信息模板。如果在步骤402中以“一对多”的对应关系定制响应信息模板,那么要基于URL和HTTP请求中出错参数的信息来获取事先在步骤402中定制好的响应信息模板。
[0063] 在步骤407中,将HTTP请求中出错参数(字段)的信息(HTTP请求中哪个参数出错)与在步骤406中获得的响应信息模板合并,也就是将HTTP请求中出错参数的信息加入所述响应信息模板中相应的位置。这样客户端除了可以接收到较友好的错误响应信息外,还可以了解其提交的HTTP请求中哪个或哪些参数出现错误。至于如何获取HTTP请求中出错的参数(字段)信息,参见说明书第7页最后一段的描述。最后,在步骤408中将重新构建好的错误响应信息返回至客户端。显然,即使不执行步骤408,重新构建错误响应信息的操作也已经完成,因此步骤408并非图4所示的方法的必备步骤。
[0064] 图4中所示的步骤401与402之间不存在固定的执行的先后顺序,例如可以先定制静态错误响应信息,再定制错误响应信息模板;也可以先定制错误响应信息模板,再定制静态错误响应信息。步骤406-408之间也不存在固定的执行的先后顺序例如,可以先修改状态码,再获取响应信息模板;也可以先获取响应信息模板,再将HTTP请求中的出错信息与响应信息模板合并,最后修改错误状态码。图4中示出的箭头只是一种示例性的执行顺序,并非对本发明的技术方案作出任何限制。
[0065] 通过图4及上述文字描述可以看出,利用图4所示的方法可以基于定制的关于客户端要访问的URL和响应页面模板的对应关系,以及客户端提交的访问网络应用程序的HTTP请求的出错信息,在不用修改HTTP服务器代码和后端网络应用程序的代码的情况下,向客户端返回重新构建的、更友好的错误响应页面,其中还可以通过修改HTTP请求的错误状态码来支持JavaScript环境下的客户端,从而提升了用户体验。
[0066] 需要特别指出的是,为了便于理解,上述步骤401-410可以分为初始化阶段和实时运行阶段。初始化阶段可以包括步骤401和402,主要是定制静态错误页面和响应信息模板,而实时运行阶段主要是步骤403-410,是指在客户端对网络应用程序实际提交HTTP访问请求并且网络应用防火墙WAF发挥拦截、过滤非法/恶意HTTP访问请求的作用的环境下,重构错误响应信息的各个步骤。然而,这种划分只是为了让本领域技术人员更容易理解各个步骤的目的和含义,并非对本发明的技术方案进行任何限制,初始化阶段的步骤可以在实时运行阶段运行,例如在运行网络应用访问系统的同时由管理员定制新的响应信息模板;实时运行阶段的步骤也可以在初始化阶段运行例如可以先获取了响应信息模板后再接通网络应用访问系统的网络。还需要指出的是,如上文中对图3的描述中所记载的那样,图4所示的虚线框内的各步骤并非必备的步骤,不应理解为对本发明技术方案的限制。
[0067] 图5示出了根据本发明的系统、装置和方法实现的一个具体实施例。图5所示的系统总体上由500表示,系统500包括浏览器501、HTTP服务器502、WAF503、HTTP服务器附加模块504、静态错误响应页面组505、网络应用506、错误响应信息重构装置507(装置507所实现的功能也示意性地以文字描述)。具体地,上述各组成部分之间可以使用常规的网络连接,例如令牌环、以太网、WiFi或其它的常规通信标准。此外,所述的网络可以包括任何类型网络,包括因特网、广域网(WAN)、局域网(LAN)、虚拟专用网(VPN)等。如果浏览器(客户端)通过因特网与服务器通信,则可以通过传统的基于TCP/IP套接字的协议提供连接,并且客户机将利用因特网服务提供商建立与服务器的连接。浏览器501可以理解为客户端的一种,可以是IE浏览器等各种具有提交HTTP请求并浏览网页功能的工具。用户通过浏览器501提交访问网络应用506的HTTP请求,为了防止用户提交非法/恶意HTTP请求对后端网络应用程序服务器506进行攻击,所有这样的HTTP请求都要先自动地被WAF503接收并进行分析。如果WAF503分析认为接收到的HTTP请求为合法/安全的HTTP请求,则将该HTTP请求通过HTTP服务器502转发至网络应用506,网络应用506收到该请求后即通过HTTP服务器502向浏览器501返回该请求所需的响应信息,即图5中所示的“网络应用对请求的响应”,这样的响应信息即对图3、图4所作的文字描述中记载的原始响应信息中的正常响应信息,也就是不需要对其进行重新构建的响应信息;如果WAF503分析认为接收到的HTTP请求为非法/恶意的HTTP请求,则不会将该HTTP请求转发至网络应用506,而是将其拦截并根据识别的错误状态码(例如500)从静态错误响应页面组505中调取相应的静态错误响应页面customize500.html,该静态错误响应页面即为对图3、图4所作的文字描述中记载的原始响应信息中的静态错误响应信息。由于调取了静态错误响应页面customize500.html,下行流上的错误响应信息重构装置507被触发。需要注意,由于错误响应信息重构装置507被触发时并不知晓是被来自后端网络应用程序服务器506的下行流触发还是来自静态错误响应页面的下行流触发,因此该装置首先需要判断作为下行流的响应信息是否来自静态错误响应页面,以及是否需要对该静态错误响应页面进行重新构建,这种判断通过事先在定制的静态错误响应页面中加入某供识别用的特殊字符串实现。
[0068] 如果错误响应信息重构装置507判断出作为下行流的响应信息是来自静态错误响应页面,并且需要对该静态错误响应页面进行重新构建,则如图5所示,该装置执行下列操作:根据所述被WAF503认定为错误/非法HTTP请求所要访问的网络应用506的URL地址获得事先定制好的响应信息模板(在图5中示出)、获得所述非法/恶意HTTP请求中出错的参数(字段)信息及错误状态码500、将错误状态码500修改为200、将HTTP请求中出错的参数(字段)信息与已经获取的响应信息模板合并(由于事先定制的响应信息模板中留有出错参数字段,因此将出错的参数信息加入响应信息模板中相应的位置即可实现合并)。本领域技术人员应当了解,上述由错误响应信息重构装置507完成的4项操作并无先后顺序之分,可以任意排列先后顺序,只要保证获得响应信息模板先于将HTTP请求中的出错信息与响应信息模板合并之前完成即可。
[0069] 综上所述,错误响应信息重构装置507实现了对错误状态码为500的非法/恶意HTTP请求的原始响应信息进行重构的操作,向浏览器501返回一个新的友好的错误响应信息,并且提示了HTTP请求中出错的参数,便于客户端浏览器501的使用者对其HTTP请求进行修正,同时防止了非法/恶意HTTP请求对网络应用506可能造成的网络攻击或破坏--没有影响WAF503发挥作用。在系统500中,并未对HTTP服务器502和网络应用506的内部代码做任何修改,而是通过加入错误响应信息重构装置507,并通过调取事先定制的静态错误响应页面(原始错误响应信息)作为下行流来触发该装置,按照需要修改了原始错误响应信息,实现了重构错误响应信息的操作。
[0070] 通过以上对具体实施例的描述,本领域技术人员可以理解,上述的系统、设备和方法可以使用计算机可执行指令和/或包含在处理器控制代码中来实现,例如在诸如磁盘、CD或DVD-ROM的载体介质、诸如只读存储器(固件)的可编程的存储器或者诸如光学或电子信号载体的数据载体上提供了这样的代码。本实施例的装置、服务器及其单元可以由诸如超大规模集成电路或门阵列、诸如逻辑芯片、晶体管等的半导体、或者诸如现场可编程门阵列、可编程逻辑设备等的可编程硬件设备的硬件电路实现,也可以用由各种类型的处理器执行的软件实现,也可以由上述硬件电路和软件的结合实现。
[0071] 虽然以上结合具体实施例,对本发明的利用远程应用处理本地文件的系统及方法进行了详细描述,但本发明并不限于此。本领域普通技术人员能够在说明书教导之下对本发明进行多种变换、替换和修改而不偏离本发明的精神和范围。应该理解,所有这样的变化、替换、修改仍然落入本发明的保护范围之内。本发明的保护范围由所附权利要求来限定。