CN110858836A - 网络攻击防御方法及设备 - Google Patents

网络攻击防御方法及设备 Download PDF

Info

Publication number
CN110858836A
CN110858836A CN201810970420.0A CN201810970420A CN110858836A CN 110858836 A CN110858836 A CN 110858836A CN 201810970420 A CN201810970420 A CN 201810970420A CN 110858836 A CN110858836 A CN 110858836A
Authority
CN
China
Prior art keywords
token
request
response page
client
extracted
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201810970420.0A
Other languages
English (en)
Inventor
任宏伟
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Alibaba Group Holding Ltd
Original Assignee
Alibaba Group Holding Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN201810970420.0A priority Critical patent/CN110858836A/zh
Publication of CN110858836A publication Critical patent/CN110858836A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1441Countermeasures against malicious traffic
    • H04L63/1466Active attacks involving interception, injection, modification, spoofing of data unit addresses, e.g. hijacking, packet injection or TCP sequence number attacks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer And Data Communications (AREA)

Abstract

本申请实施例提供了一种网络攻击防御方法及设备,该方案将从客户端接收的访问请求转发到服务端,然后接收所述服务端基于所述访问请求返回的响应页面,在所述响应页面中插入令牌和js文件后,将所述响应页面发送到所述客户端,使得客户端能够在所述响应页面中输入的提交数据请求中插入所述令牌。由此在从所述客户端接收提交数据请求时,可以从所述提交数据请求中提取令牌,验证所述提取的令牌是否有效,若该令牌无效,则表明此时接收到的提交数据请求可能是CSRF攻击所伪造的请求,因此可以拦截所述提交数据请求,以达到防御网络攻击的目的,因此可以在不对Web应用的代码进行修改的情况下,实现防御网络攻击的目的。

Description

网络攻击防御方法及设备
技术领域
本申请涉及计算机领域,尤其涉及一种网络攻击防御方法及设备。
背景技术
CSRF是一种网络的攻击方式,是Web应用面临的一种主要的安全问题之一。进行CSRF攻击的攻击者一般将恶意代码注入受攻击用户信任的网站,当用户访问该网站时,攻击者通过恶意代码能够利用受攻击用户的身份。由此,能够在受攻击用户不知情的情况下,以受攻击用户的名义伪造请求发送给与受攻击用户会话的站点,从而在并未授权的情况下执行受保护的操作,具有很大危害性,往往会给用户造成很大的损失,比如:敏感数据泄漏、财产损失等。
现有的防御CSRF攻击的方法,主要依赖开发者的安全经验,需要Web应用修改代码,通过Web应用修改代码,增加安全验证逻辑实现,才能对CSRF攻击的安全风险进行防御。但是,随着Web应用功能的增多,以及部分开发人员对网络安全经验的不足,往往会出现安全疏漏,造成安全隐患。同时,对于历史遗留的Web应用,若存在安全风险,则可能由于原先的开发人员已经不负责该Web应用的后续维护,因此难以对该Web的安全风险进行修复。
发明内容
本申请实施例提供了一种网络攻击防御方法及设备,以至少解决现有的网络攻击的防御方法需要修改Web应用代码和修改Web应用代码时还会存在疏漏的问题。
本申请实施例提供了一种网络攻击防御方法,包括:
从客户端接收访问请求,将所述访问请求转发到服务端;
接收所述服务端基于所述访问请求返回的响应页面,在所述响应页面中插入令牌和js文件后,将所述响应页面发送到所述客户端,其中,所述js文件用于供客户端在所述响应页面中输入的提交数据请求中插入所述令牌;
从所述客户端接收所述提交数据请求,从所述提交数据请求中提取令牌,验证所述提取的令牌是否有效,若否,拦截所述提交数据请求。
本申请实施例还提供了一种网络攻击防御设备,包括:
接收装置,用于从客户端接收访问请求,将所述访问请求转发到服务端;
插入装置,用于接收所述服务端基于所述访问请求返回的响应页面,在所述响应页面中插入令牌和js文件后,将所述响应页面发送到所述客户端,其中,所述js文件用于供客户端在其显示的所述响应页面中输入的提交数据请求中插入所述令牌;
拦截装置,用于从所述客户端接收所述提交数据请求,从所述提交数据请求中提取令牌,验证所述提取的令牌是否有效,若否,拦截所述提交数据请求。
此外,本申请实施例还提供了一种计算设备,包括用于存储计算机程序指令的存储器和用于执行计算机程序指令的处理器,其中,当该计算机程序指令被该处理器执行时,触发所述设备执行前述的网络攻击防御方法。
本申请实施例提供的方案中,将从客户端接收的访问请求转发到服务端,然后接收所述服务端基于所述访问请求返回的响应页面,在所述响应页面中插入令牌和js文件后,将所述响应页面发送到所述客户端,使得客户端能够在所述响应页面中输入的提交数据请求中插入所述令牌。由此在从所述客户端接收提交数据请求时,可以从所述提交数据请求中提取令牌,验证所述提取的令牌是否有效,若该令牌无效,则表明此时接收到的提交数据请求可能是CSRF攻击所伪造的请求,因此可以拦截所述提交数据请求,以达到防御网络攻击的目的,因此可以在不对Web应用的代码进行修改的情况下,实现防御网络攻击的目的。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
图1示出根据本申请一实施例的一种网络攻击防御方法及设备的原理图;
图2示出本申请一实施例的网络攻击防御设备的响应处理流程图;
图3示出本申请一实施例的网络攻击防御设备的请求处理流程图;
图4示出本申请一实施例的客户端的处理流程图。
附图中相同或相似的附图标记代表相同或相似的部件。
具体实施方式
下面结合附图对本申请作进一步详细描述。
在本申请一个典型的配置中,终端、服务网络的设备和可信方均包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
如图1所示,本申请包括三端,分别为客户端、安全控制端和用户源站(服务端,受保护的Web应用服务器),其中,客户端用于通过安全控制端向用户源站发送访问请求。用户源站用于通过所述安全控制端接收客户端发出的访问请求,对所述访问请求进行处理生成响应内容后,再将所述响应内容通过所述安全控制端返回给客户端。安全控制端处于客户端与用户源站之间,用于接收一方的信息,并将信息转发到另一端,例如,如图1中,所述安全控制端可以是一WAF(Web Application Firewall,网页应用防火墙)。
下面以基于云WAF防御CSFR攻击的流程,WAF处于用户HTTP请求与用户源站中间为例,首先介绍本申请的基本实现原理如下:
1.WAF接收用户在客户端浏览器发起的访问请求(HTTP Request),并将访问请求转发给用户源站,所述用户源站基于接收到所述访问请求向WAF返回响应页面(Response)代码;
2.WAF从所述用户源站接收响应页面(Response),WAF生成令牌(Token),并在所述响应页面中插入Token和客户端运行的js文件如js模块代码后,将插入Token和客户端运行的js文件的响应页面代码发送至客户端;
3.客户端从WAF接收插入Token和客户端运行的js文件的响应页面代码后,使响应页面代码在客户端浏览器运行,显示页面内容供用户查看信息及输入内容等相关操作,同时在客户端的后台运行js文件(auti_csrf.js),遍历页面内容,在页面内容中可向用户源站提交请求的地方,自动插入Token;
4.用户在在页面内容中可向用户源站提交请求的地方输入内容后,通过WAF向所述用户源站提交数据,此时包含Token数据连同所述输入内容的提交数据请求将一同发给WAF;
WAF接收来自客户端的提交数据请求,从所述提交数据请求中读取Token并验证有效性,若通过验证,则将所述提交数据请求放行转发给所述用户源站处理,若Token不存在或无效,则拦截所述提交数据请求,不将所述提交数据请求转发给所述用户源站处理,并向所述客户端返回错误。
本申请在实现上可以主要由两部分构成:
第一部分:如图1所示,可在WAF中部署CSRF模块(csrf_module),实现生成Token、改写响应页面(插入Token、JS模块)、验证Token、拦截非法请求等功能;
第二部分:运行在客户端浏览器的JS模块(auti_csrf.js),实现读取Token数据,遍历页面中可供用户提交数据的点,插入Token内容,以便用户提交输入数据时,将Token一起发送给WAF,协助WAF对Token的验证,防范诸如的CSRF攻击的安全风险。
本申请提供一种网络攻击防御方法,该方法可以应用于安全控制端,包括:
步骤S1,从客户端接收访问请求,将所述访问请求转发到服务端;
步骤S2,接收所述服务端基于所述访问请求返回的响应页面,在所述响应页面中插入令牌(Token)和js文件后,将所述响应页面发送到所述客户端,其中,所述js文件用于供客户端在所述响应页面中输入的提交数据请求中插入所述令牌;
步骤S3,从所述客户端接收所述提交数据请求,从所述提交数据请求中提取令牌,验证所述提取的令牌是否有效,
若否,步骤S4,拦截所述提交数据请求。
本申请的一种实施例中的网络攻击防御方法可以实现于WAF中。通过在WAF端,修改响应页面Reponse,即在页面中插入Token和js文件后发送给客户端;在客户端,运行js文件,实现提交数据请求中的Token动态插入;在WAF端,截获提交数据请求,验证Token有效性,当没有Token或为无效Token,该方案对用户透明,不需要对用户源站Web应用做任何改动,即可实现防范诸如的CSRF攻击的安全风险,有效拦截来自黑客的攻击。
在本申请一实施例中,步骤S3中的验证所述提取的令牌是否有效之后,还包括:若是,将所述提交数据请求转发到所述服务端。
本实施例中对令牌验证通过的提交数据请求是安全的,可以将其转发到所述服务端。
本申请的一实施例中,步骤S2中的在所述响应页面中插入令牌和js文件之前,包括:
步骤S21,生成唯一的令牌;
相应的,步骤S2中的在所述响应页面中插入令牌和js文件之后,还包括:
步骤S22,将所述令牌保存入令牌库中。
本实施例中生成全局唯一的令牌,并将令牌保存入令牌库,可以保证后续验证令牌的可靠性。
本申请的一实施例中,步骤S3中的,验证所述提取的令牌是否有效,包括:
步骤S31,通过比较所述提取的令牌与所述令牌库中的令牌是否一致,验证所述提取的令牌是否有效。
本实施例中,通过比较所述提取的令牌与所述令牌库中的令牌是否一致,若一致,则令牌有效,若不一致,则令牌无效,进一步保证令牌验证的可靠性。
本申请的一实施例中,在生成唯一的令牌时可以使得所述令牌携带有对应的时间戳,由此可以对其提取的令牌进行验证。步骤S31,在验证所述提取的令牌是否有效时,可以采用如下的方式:比较所述提取的令牌与所述令牌库中的令牌是否一致,并根据所述提取的令牌所携带的时间戳判断所述提取的令牌是否过期,若所述提取的令牌与所述令牌库中的令牌一致,且所述提取的令牌未过期,则确定所述所述提取的令牌有效。
本实施例中,通过生成带有时间戳的唯一的令牌,验证令牌时,如果所述提取的令牌与所述令牌库中的令牌一致,且提取令牌的时间戳未过期,则验证所述令牌有效,否则验证所述令牌无效,从而进一步提高令牌验证的可靠性。
本申请的一实施例中,步骤S2中的,在所述响应页面中插入令牌和js文件,包括:
根据所述响应页面的URL路径,判断所述响应页面中是否需要插入令牌和js文件;
若是,在所述响应页面中插入令牌和js文件。
本实施例中,可以将安全风险较高的响应页面归入预先配置好待控制页面的列表,该待控制页面即为需要插入令牌和js文件的页面。当从服务端接收到响应页面后,判断所述响应页面是否在预先配置好待控制页面的列表中,例如,可以将安全风险较高的响应页面的URL记入所述列表中,若在列表中,则判定该响应页面需要插入令牌和js文件,由此在所述响应页面中插入令牌和js文件,否则,则不需要做插入,从而实现有目的而高效地对需要的响应页面作安全控制。
在响应页面中插入令牌和js文件时,可以是在所述响应页面的头部(Header)插入令牌和js文件,由此当客户端的浏览器显示响应页面的内容时,会自动加载js文件,在提交数据请求中携带验证需要使用的令牌。例如,可以先在响应页面的头部插入auti_csrf.js文件的链接,完成js文件的插入,然后随机生成唯一的令牌,并加入时间戳,使得该令牌携带有时间戳用于进行验证,防止重放攻击,进而将该令牌插入响应页面的头部,从而获得用于发送到所述客户端的响应页面。同时,该生成的令牌保存入令牌库中,用于在收到客户端的提交数据请求时进行令牌验证。
本申请的另一实施例中,在从所述提交数据请求中提取令牌,验证所述提取的令牌是否有效时,可以根据所述提交数据请求的URL路径,判断所述接收的提交数据请求是否需要进行令牌验证;若是,从所述提交数据请求中提取令牌,验证所述提取的令牌是否有效。
本实施例中,可以将安全风险较高的提交数据请求归入预先配置好待控制提交数据请求的列表,该待控制提交数据请求即为需要进行令牌验证的提交数据请求。当从客户端接收到提交数据请求后,判断所述提交数据请求是否在预先配置好待控制提交数据请求的列表中,例如,可以将安全风险较高的提交数据请求的URL记入所述列表中,若在列表中,则判定该提交数据请求需要进行令牌验证,进而从所述提交数据请求中提取令牌,验证所述提取的令牌是否有效,否则,则不需要从所述提交数据请求中提取令牌,验证所述提取的令牌是否有效,从而实现有目的而高效地对需要的提交数据请求作安全控制。
在实际场景中,不安全的提交数据请求除了无法通过令牌验证的提交数据请求之外,还包括未携带令牌的提交数据请求。由此,在从所述提交数据请求中提取令牌,验证所述提取的令牌是否有效时,可以先检查所述提交数据请求中是否存在令牌,若否,表示该提交数据请求中没有携带令牌,属于不安全的提交数据请求,因此可以直接拦截所述提交数据请求;若是,则可以从所述提交数据请求中提取令牌,采用前述的方式验证所述提取的令牌是否有效。
如图2所示的一种实施例中,上述网络攻击防御方法可以由WAF内部的CSRF模块实现,其对HTTP协议的Request请求的处理流程可以如下:
1.加载URL配置,指定在哪些URL请求的响应页面中,需要插入CSRF Token,用户重要的操作,正常情况下都是从这些响应页面发起的;
2.接收客户端发送的访问请求,将所述访问请求转发给所述用户源站,到用户源站处理访问请求的响应页面;
3.判断接收到的响应页面的URL路径,是否需要插入CSRF Token,若不需要则直接将响应页面返回给客户端浏览器;
4.若需要,在接收到的响应页面中插入CSRF JS文件,如可以在响应页面的Header部分,插入auti_csrf.js文件链接,当客户端浏览器显示响应页面内容时,会自动加载并运行auti_csrf.js代码;
5.随机生成Token,字符串构成,一次有效并加入时间戳,防止重放攻击;
6.可以将Token插入响应页面的头部,指定Token的名字和内容。
<meta name="x_csrf_token_name"content="csrf_abc"/>
<meta name="x_csrf_token_value"content="9c5f466b0004304b"/>
7.保存Token,将Token存储集中Session库中,与当前用户请求相关;
8.将修改后的响应页面即将插入Token和JS文件的响应页面返回给用户。
图3示出了WAF内部的CSRF模块,对Response响应的处理流程,该处理流程可以如下:
1.加载URL配置,指定哪些URL的提交数据请求,需要验证CSRF Token,这些URL的提交数据请求对应的服务端处理,属于重要的操作,需要防止CSRF攻击;
2.截获来自客户端的的HTTP提交数据请求;
3.根据HTTP提交数据请求中的URL路径判断,是否需要验证CSRF Token,若不需要,则将HTTP提交数据请求直接转发给服务端;
4.检查HTTP提交数据请求中是否存在Token,包括请求Get、Post数据,以及Header,若不存在Token,则拦截HTTP提交数据请求,并向客户端返回错误信息;
5.若存在Token,根据配置,提取Token数据;
6.验证Token有效性,从所述Session库读取用户对应的Token,并验证与上述提取的Token是否一致,时间戳是否过期等;
7.若Token正确,则将HTTP提交数据请求转发给服务端,进行正常处理;若验证不通过,则拒绝访问即不将HTTP提交数据请求转发给服务端,并向所述客户端返回错误提示。
在实际场景中,安全控制端在实现网络攻击防御的过程中,客户端也会与其配合进行相应的处理,以实现对网络攻击的防御。在本申请的一种实施例中,客户端在实现网络攻击防御时,可以包括如下的处理步骤:
步骤S10,向安全控制端发送访问请求,从所述安全控制端接收插入令牌和js文件后的响应页面。在实际场景中,安全控制端会将访问请求发送至服务端,服务端则会根据该访问请求生成并返回未插入令牌和js文件的响应页面,安全控制端在收到返回的响应页面之后,即可插入令牌和js文件。
步骤S20,显示所述响应页面,客户端的浏览器在显示响应页面时,会加载该响应页面上的内容,由此会运行加入在响应页面中的js文件。通过运行js文件,客户端在所述响应页面的提交数据请求中插入所述令牌,将插入所述令牌的提交数据请求发送至所述安全控制端。
本实施例中通过在客户端运行的js文件,实现提交数据请求中的Token动态插入,以便用户提交输入数据时,将Token一起发送给WAF,协助WAF对Token的验证,不需要对用户源站Web应用做任何改动,即可实现防范诸如的CSRF攻击的安全风险,有效拦截来自黑客的攻击。
本申请一实施列中,步骤S20,通过运行js文件,在所述响应页面的提交数据请求中插入所述令牌,包括:
通过运行js文件,在显示的响应页面中确定用于触发提交数据请求的位置,并在所述位置中插入所述令牌。由此,本实施例可以通过遍历页面内容,在页面内容中可向用户源站提交请求的位置,自动插入Token,实现Token的有效、可靠插入。
在实际场景中,用于触发提交数据请求的位置可以包括响应页面中包含的Form表单、Href链接、Ajax异步请求等,由此本申请的客户端的网络攻击防御方法一实施列中,所述输入所述提交数据请求的位置包括Form表单、Href链接、Ajax异步请求中的一种或任意组合。
本实施例中,针对不同的响应页面,可以通过Form表单、Href链接、Ajax异步请求中的一种或任意组合的位置定位方式,实现对不同内容的响应页面中令牌插入点的准确定位。其中,在显示的响应页面中确定这些用于触发提交数据请求的位置时,可以采用如下的方式:遍历响应页面的DOM树形结构,由于DOM树形结构采用了树形的结构表示页面中包含的对象,因此可以快速确定对象之间的嵌套关系,在所述DOM树形结构包含的对象中确定Form表单、Href链接、Ajax异步请求等用于触发提交数据请求的位置。
本申请可以从云环境下Web应用的HTTP流量入口WAF作为切入点,通过捕获客户端向Web应用发送的访问请求(HTTP Reqest)和Web应用向客户端返回的响应页面(Response数据),生成Token,并将Token插入返回给客户端的响应页面中,同时在返回给客户端的响应页面插入JavaScript代码;当JavaScript代码在客户端的浏览器运行时,JavaScript代码从返回给客户端的响应页面中提取Token,并将提取到Token插入响应页面中Form表单、Herf链接以及Ajax异步请求等提交数据请求的位置中后,将提交数据请求的位置处的用户输入的内容和插入的Token作为提交数据请求向WAF进行提交;WAF收到HTTP Request后,读取并验证Token是否有效,完成Token验证。缺少Token或无效Token,WAF将提交数据请求阻断,不会将提交数据请求转发到服务端。
如图4所示的一种实施列中,当被修改的响应页面,在客户端浏览器运行时,auti_csrf.js文件将会被自动加载并运行,具体流程可以如下:
1.可以从接收到的响应页面的头(Header)部,读取CSRF Token的名称和内容;后面处理就是将Token加入接收到的响应页面中可供用户向后台提交数据的“点”,包括:Form表单、Href链接、Ajax异步请求的XMLHttpRequest.send等;
2.可以遍历响应页面的DOM树形结构,找到插入Token的点;
(1)例如,当响应页面中包含Form表单时:可以读取Form表单列表,得到相关表单对象,然后在相关表单对象中插入隐藏input框,即动态创建对象,设置名称及值,如:
<input hidden name="csrf_abc"value="9c5f466b0004304b"/>
(2)例如,当响应页面中包含Href链接时:可以读取Href链接列表,读取Href链接列表的URL链接地址,在URL链接地址中插入Token参数,如:csrf_abc=9c5f466b0004304b。
(3)例如,当响应页面中包含Ajax异步请求的XMLHttpRequest.send时:通过重载XMLHttpSend方法,在header中插入Token。
至此,用户在此响应页面向后台发起的提交数据请求,都会带上CSRF Token。
根据本申请的另一方面,还提供了一种网络攻击防御设备,该网络攻击防御设备可以实现于安全控制端,包括:
接收装置,用于从客户端接收访问请求,将所述访问请求转发到服务端;
插入装置,用于接收所述服务端基于所述访问请求返回的响应页面,在所述响应页面中插入令牌和js文件后,将所述响应页面发送到所述客户端,其中,所述js文件用于供客户端在其显示的所述响应页面中输入的提交数据请求中插入所述令牌;
拦截装置,用于从所述客户端接收所述提交数据请求,从所述提交数据请求中提取令牌,验证所述提取的令牌是否有效,若否,拦截所述提交数据请求。
本申请实施例提供的网络攻击防御设备可以实现于WAF中。通过在WAF端,修改响应页面Reponse,即在页面中插入Token和js文件后发送给客户端;在客户端,运行js文件,实现提交数据请求中的Token动态插入;在WAF端,截获提交数据请求,验证Token有效性,当没有Token或为无效Token,该方案对用户透明,不需要对用户源站Web应用做任何改动,即可实现防范诸如的CSRF攻击的安全风险,有效拦截来自黑客的攻击。
在本申请一实施例中,网络攻击防御设备可以还包括放行装置,用于在验证所述提取的令牌是否有效之后,若是,将所述提交数据请求转发到所述服务端。
本实施例中对令牌验证通过的提交数据请求是安全的,可以将其转发到所述服务端。
本申请一实施例的网络攻击防御设备中,所述插入装置,还用于在所述响应页面中插入令牌和js文件之前,生成唯一的令牌;
在所述响应页面中插入令牌和js文件之后,将所述令牌保存入令牌库中。
本实施例中生成全局唯一的令牌,并将令牌保存入令牌库,可以保证后续验证令牌的可靠性。
本申请一实施例的网络攻击防御设备中,所述拦截装置,用于通过比较所述提取的令牌与所述令牌库中的令牌是否一致,验证所述提取的令牌是否有效。
本实施例中,通过比较所述提取的令牌与所述令牌库中的令牌是否一致,若一致,则令牌有效,若不一致,则令牌无效,进一步保证令牌验证的可靠性。
本申请一实施例的网络攻击防御设备中,所述插入装置在生成唯一的令牌时可以使得所述令牌携带有对应的时间戳,由此安全控制端可以对其提取的令牌进行验证。所述拦截装置在验证所述提取的令牌是否有效时,可以采用如下方式:比较所述提取的令牌与所述令牌库中的令牌是否一致,并根据所述提取的令牌所携带的时间戳判断所述提取的令牌是否过期,若所述提取的令牌与所述令牌库中的令牌一致,且所述提取的令牌未过期,则确定所述所述提取的令牌有效。
本实施例中,通过生成带有时间戳的唯一的令牌,验证令牌时,如果所述提取的令牌与所述令牌库中的令牌一致,且提取令牌的时间戳未过期,则验证所述令牌有效,否则验证所述令牌无效,从而进一步提高令牌验证的可靠性。
本申请一实施例的网络攻击防御设备中,所述插入装置在所述响应页面中插入令牌和js文件时,根据所述响应页面的URL路径,判断所述响应页面中是否需要插入令牌和js文件;若是,在所述响应页面中插入令牌和js文件。
本实施例中,可以将安全风险较高的响应页面归入预先配置好待控制页面的列表,该待控制页面即为需要插入令牌和js文件的页面。当网络攻击防御设备从服务端接收到响应页面后,判断所述响应页面是否在预先配置好待控制页面的列表中,例如,可以将安全风险较高的响应页面的URL记入所述列表中,若在列表中,则判定该响应页面需要插入令牌和js文件,由此在所述响应页面中插入令牌和js文件,否则,则不需要做插入,从而实现有目的而高效地对需要的响应页面作安全控制。
在响应页面中插入令牌和js文件时,可以是在所述响应页面的头部(Header)插入令牌和js文件,由此当客户端的浏览器显示响应页面的内容时,会自动加载js文件,在提交数据请求中携带验证需要使用的令牌。例如,网络攻击防御设备可以先在响应页面的头部插入auti_csrf.js文件的链接,完成js文件的插入,然后随机生成唯一的令牌,并加入时间戳,使得该令牌携带有时间戳用于进行验证,防止重放攻击,进而将该令牌插入响应页面的头部,从而获得用于发送到所述客户端的响应页面。同时,该生成的令牌保存入令牌库中,用于在收到客户端的提交数据请求时进行令牌验证。
本申请一实施例的网络攻击防御设备中,拦截装置,用于根据所述提交数据请求的URL路径,判断所述接收的提交数据请求是否需要进行令牌验证;若是,从所述提交数据请求中提取令牌,验证所述提取的令牌是否有效。
本实施例中,可以将安全风险较高的提交数据请求归入预先配置好待控制提交数据请求的列表,该待控制提交数据请求即为需要进行令牌验证的提交数据请求。当安全控制端从客户端接收到提交数据请求后,判断所述提交数据请求是否在预先配置好待控制提交数据请求的列表中,例如,可以将安全风险较高的提交数据请求的URL记入所述列表中,若在列表中,则判定该提交数据请求需要进行令牌验证,进而从所述提交数据请求中提取令牌,验证所述提取的令牌是否有效,否则,则不需要从所述提交数据请求中提取令牌,验证所述提取的令牌是否有效,从而实现有目的而高效地对需要的提交数据请求作安全控制。
在实际场景中,不安全的提交数据请求除了无法通过令牌验证的提交数据请求之外,还包括未携带令牌的提交数据请求。由此,在从所述提交数据请求中提取令牌,验证所述提取的令牌是否有效时,可以先检查所述提交数据请求中是否存在令牌,若否,表示该提交数据请求中没有携带令牌,属于不安全的提交数据请求,因此可以直接拦截所述提交数据请求;若是,则可以从所述提交数据请求中提取令牌,采用前述的方式验证所述提取的令牌是否有效。
在实际场景中,作为安全控制端的网络攻击防御设备在实现上述网络攻击防御的处理时,客户端也会与其配合进行相应的处理,以实现对网络攻击的防御。在本申请的一种实施例中,所述客户端包括:
发送装置,用于向安全控制端发送访问请求,从所述安全控制端接收插入令牌和js文件后的响应页面。在实际场景中,安全控制端会将访问请求发送至服务端,服务端则会根据该访问请求生成并返回未插入令牌和js文件的响应页面,安全控制端在收到返回的响应页面之后,即可插入令牌和js文件。
插入装置,用于显示所述响应页面,客户端的浏览器在显示响应页面时,会加载该响应页面上的内容,由此插入装置会运行加入在响应页面中的js文件。通过运行js文件,在所述响应页面的提交数据请求中插入所述令牌,将插入所述令牌的提交数据请求发送至所述安全控制端。
本实施例中通过在客户端运行的js文件,实现提交数据请求中的Token动态插入,以便用户提交输入数据时,将Token一起发送给WAF,协助WAF对Token的验证,不需要对用户源站Web应用做任何改动,即可实现防范诸如的CSRF攻击的安全风险,有效拦截来自黑客的攻击。
本申请一实施例的客户端中,所述插入装置,用于通过运行js文件在所述显示的响应页面中确定用于触发提交数据请求的位置,并在所述位置中插入所述令牌。由此,本实施例中可以通过遍历页面内容,在页面内容中可向用户源站提交请求的位置,自动插入Token,实现Token的有效、可靠插入。
在实际场景中,用于触发提交数据请求的位置可以包括响应页面中包含的Form表单、Href链接、Ajax异步请求等,由此本申请一实施例的客户端中,所述输入所述提交数据请求的位置包括Form表单、Href链接、Ajax异步请求中的一种或任意组合。
本实施例中,针对不同的响应页面,可以通过Form表单、Href链接、Ajax异步请求中的一种或任意组合的位置定位方式,实现对不同内容的响应页面中令牌插入点的准确定位。其中,在显示的响应页面中确定这些用于触发提交数据请求的位置时,可以采用如下的方式:遍历响应页面的DOM树形结构,由于DOM树形结构采用了树形的结构表示页面中包含的对象,因此可以快速确定对象之间的嵌套关系,在所述DOM树形结构包含的对象中确定Form表单、Href链接、Ajax异步请求等用于触发提交数据请求的位置。
根据本申请的另一面,还提供一种计算设备,包括:
处理器;以及
被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器:
从客户端接收访问请求,将所述访问请求转发到服务端;
接收所述服务端基于所述访问请求返回的响应页面,在所述响应页面中插入令牌和js文件后,将所述响应页面发送到所述客户端,其中,所述js文件用于供客户端在其显示的所述响应页面中输入的提交数据请求中插入所述令牌;
从所述客户端接收所述提交数据请求,从所述提交数据请求中提取令牌,验证所述提取的令牌是否有效,若否,拦截所述提交数据请求。
根据本申请的另一面,还提供一种计算设备,其中,包括:
处理器;以及
被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器前述任意一个实施例的方法和/或技术方案。
综上所述,本申请可应用于公有云环境下的Web应用的诸如CSRF等安全问题,通过在流量入口如WAF上,增加Token如CSRFToken的生成和验证功能,同时配合在返回给客户端的HTML页面中插入的JavaScript代码,实现Token捕获及自动插入,完成Token提交与验证。只有包含合法Token的请求才能送达后台服务器,非法请求将被阻断,达到防御CSRF等安全风险的目的。该方案对用户透明,不需要Web应用修改代码。利用WAF验证CSRF Token的有效性,阻断恶意请求,保护Web应用安全。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
需要注意的是,本申请可在软件和/或软件与硬件的组合体中被实施,例如,可采用专用集成电路(ASIC)、通用目的计算机或任何其他类似硬件设备来实现。在一个实施例中,本申请的软件程序可以通过处理器执行以实现上文所述步骤或功能。同样地,本申请的软件程序(包括相关的数据结构)可以被存储到计算机可读记录介质中,例如,RAM存储器,磁或光驱动器或软磁盘及类似设备。另外,本申请的一些步骤或功能可采用硬件来实现,例如,作为与处理器配合从而执行各个步骤或功能的电路。
另外,本申请的一部分可被应用为计算机程序产品,例如计算机程序指令,当其被计算机执行时,通过该计算机的操作,可以调用或提供根据本申请的方法和/或技术方案。而调用本申请的方法的程序指令,可能被存储在固定的或可移动的记录介质中,和/或通过广播或其他信号承载媒体中的数据流而被传输,和/或被存储在根据所述程序指令运行的计算机设备的工作存储器中。在此,根据本申请的一个实施例包括一个装置,该装置包括用于存储计算机程序指令的存储器和用于执行程序指令的处理器,其中,当该计算机程序指令被该处理器执行时,触发该装置运行基于前述根据本申请的多个实施例的方法和/或技术方案。
对于本领域技术人员而言,显然本申请不限于上述示范性实施例的细节,而且在不背离本申请的精神或基本特征的情况下,能够以其他的具体形式实现本申请。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本申请的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本申请内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。装置权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。

Claims (10)

1.一种网络攻击防御方法,包括:
从客户端接收访问请求,将所述访问请求转发到服务端;
接收所述服务端基于所述访问请求返回的响应页面,在所述响应页面中插入令牌和js文件后,将所述响应页面发送到所述客户端,其中,所述js文件用于供客户端在所述响应页面中输入的提交数据请求中插入所述令牌;
从所述客户端接收所述提交数据请求,从所述提交数据请求中提取令牌,验证所述提取的令牌是否有效,若否,拦截所述提交数据请求。
2.根据权利要求1所述的方法,其中,在所述响应页面中插入令牌和js文件之前,包括:
生成唯一的令牌;
在所述响应页面中插入令牌和js文件之后,还包括:
将所述令牌保存入令牌库中。
3.根据权利要求2所述的方法,其中,验证所述提取的令牌是否有效,包括:
通过比较所述提取的令牌与所述令牌库中的令牌是否一致,验证所述提取的令牌是否有效。
4.根据权利要求3所述的方法,其中,验证所述提取的令牌是否有效,包括:
比较所述提取的令牌与所述令牌库中的令牌是否一致,并根据所述提取的令牌所携带的时间戳判断所述提取的令牌是否过期;
若所述提取的令牌与所述令牌库中的令牌一致,且所述提取的令牌未过期,则确定所述提取的令牌有效。
5.根据权利要求1至4任一项所述的方法,其中,在所述响应页面中插入令牌和js文件,包括:
根据所述响应页面的URL路径,判断所述响应页面中是否需要插入令牌和js文件;
若是,在所述响应页面中插入令牌和js文件。
6.根据权利要求1所述的方法,其中,在所述响应页面中插入令牌和js文件,包括:
在所述响应页面的头部插入令牌和js文件。
7.根据权利要求1至4所述的方法,其中,从所述提交数据请求中提取令牌,验证所述提取的令牌是否有效,包括:
根据所述提交数据请求的URL路径,判断所述提交数据请求是否需要进行令牌验证;
若是,从所述提交数据请求中提取令牌,验证所述提取的令牌是否有效。
8.根据权利要求7所述的方法,其中,从所述提交数据请求中提取令牌,验证所述提取的令牌是否有效,包括:
检查所述提交数据请求中是否存在令牌;
若否,拦截所述提交数据请求;若是,从所述提交数据请求中提取令牌,验证所述提取的令牌是否有效。
9.一种网络攻击防御设备,包括:
接收装置,用于从客户端接收访问请求,将所述访问请求转发到服务端;
插入装置,用于接收所述服务端基于所述访问请求返回的响应页面,在所述响应页面中插入令牌和js文件后,将所述响应页面发送到所述客户端,其中,所述js文件用于供客户端在所述响应页面中输入的提交数据请求中插入所述令牌;
拦截装置,用于从所述客户端接收所述提交数据请求,从所述提交数据请求中提取令牌,验证所述提取的令牌是否有效,若否,拦截所述提交数据请求。
10.一种计算设备,包括用于存储计算机程序指令的存储器和用于执行计算机程序指令的处理器,其中,当该计算机程序指令被该处理器执行时,触发所述设备执行权利要求1至8中任一项所述的方法。
CN201810970420.0A 2018-08-24 2018-08-24 网络攻击防御方法及设备 Pending CN110858836A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810970420.0A CN110858836A (zh) 2018-08-24 2018-08-24 网络攻击防御方法及设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810970420.0A CN110858836A (zh) 2018-08-24 2018-08-24 网络攻击防御方法及设备

Publications (1)

Publication Number Publication Date
CN110858836A true CN110858836A (zh) 2020-03-03

Family

ID=69636144

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810970420.0A Pending CN110858836A (zh) 2018-08-24 2018-08-24 网络攻击防御方法及设备

Country Status (1)

Country Link
CN (1) CN110858836A (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120023377A1 (en) * 2010-07-20 2012-01-26 Robert Garskof Apparatus and Methods for Preventing Cross-Site Request Forgery
CN102480490A (zh) * 2010-11-30 2012-05-30 国际商业机器公司 一种用于防止csrf攻击的方法和设备
CN105743869A (zh) * 2014-12-12 2016-07-06 阿里巴巴集团控股有限公司 Csrf攻击防范方法、网站服务器及浏览器
US20170041144A1 (en) * 2015-08-07 2017-02-09 Adobe Systems Incorporated Cross-site request forgery defense
CN106790007A (zh) * 2016-12-13 2017-05-31 武汉虹旭信息技术有限责任公司 基于XSS和CSRF的Web攻击防御系统及其方法
US10050792B1 (en) * 2017-02-14 2018-08-14 Cloudflare, Inc. Providing cross site request forgery protection at an edge server

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120023377A1 (en) * 2010-07-20 2012-01-26 Robert Garskof Apparatus and Methods for Preventing Cross-Site Request Forgery
CN102480490A (zh) * 2010-11-30 2012-05-30 国际商业机器公司 一种用于防止csrf攻击的方法和设备
CN105743869A (zh) * 2014-12-12 2016-07-06 阿里巴巴集团控股有限公司 Csrf攻击防范方法、网站服务器及浏览器
US20170041144A1 (en) * 2015-08-07 2017-02-09 Adobe Systems Incorporated Cross-site request forgery defense
CN106790007A (zh) * 2016-12-13 2017-05-31 武汉虹旭信息技术有限责任公司 基于XSS和CSRF的Web攻击防御系统及其方法
US10050792B1 (en) * 2017-02-14 2018-08-14 Cloudflare, Inc. Providing cross site request forgery protection at an edge server

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
刘雅楠: "Web前端攻击及安全防护技术研究与实现", 《中国优秀硕士学位论文全文库信息科技辑》 *

Similar Documents

Publication Publication Date Title
Alwan et al. Detection and prevention of SQL injection attack: a survey
US10057280B2 (en) Methods and systems of detecting and analyzing correlated operations in a common storage
US9112828B2 (en) Method for defending against session hijacking attacks and firewall
CN102571846B (zh) 一种转发http请求的方法及装置
Xing et al. Integuard: Toward automatic protection of third-party web service integrations
CN105635126B (zh) 恶意网址访问防护方法、客户端、安全服务器及系统
US9032519B1 (en) Protecting websites from cross-site scripting
CN108989355B (zh) 一种漏洞检测方法和装置
Tang et al. Fortifying web-based applications automatically
EP3281143A1 (en) Modifying web page code to include code to protect output
CN106790007A (zh) 基于XSS和CSRF的Web攻击防御系统及其方法
US9210184B2 (en) Determining the vulnerability of computer software applications to attacks
CN110782374A (zh) 基于区块链的电子取证方法及系统
CN109933980A (zh) 一种漏洞扫描方法、装置和电子设备
CN104967628A (zh) 一种保护web应用安全的诱骗方法
CN110851838A (zh) 一种基于互联网的云测试系统及安全测试方法
CN113496024B (zh) 一种Web页面的登录方法、装置、存储介质及电子设备
CN111949955B (zh) web系统单点登录方法、装置、设备及可读存储介质
CN105574724B (zh) 安全支付防护方法、安全应用客户端、安全服务器及系统
CN117040804A (zh) 网站的网络攻击检测方法、装置、设备、介质和程序产品
CN107294994B (zh) 一种基于云平台的csrf防护方法和系统
CN110858836A (zh) 网络攻击防御方法及设备
CN109218332B (zh) 一种埋点式钓鱼网站监测方法
JP6041634B2 (ja) 改竄検知装置及び改竄検知方法
Gupta et al. Web Penetration Testing

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40024928

Country of ref document: HK

RJ01 Rejection of invention patent application after publication

Application publication date: 20200303

RJ01 Rejection of invention patent application after publication