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

防御网络攻击方法及服务器、客户端

文献发布时间:2023-06-19 19:37:02


防御网络攻击方法及服务器、客户端

技术领域

本申请涉及互联网技术领域,特别涉及一种防御网络攻击方法及服务器、客户端。

背景技术

跨站请求伪造(Cross-Site Request Forgery,CSRF)是一种网络攻击方式,通常攻击者在用户登录的状态下,通过超文本传输协议(Hyper Text Transfer Protocol,HTTP)方式发起伪造的访问请求,造成受害者个人信息的泄露,或者使受攻击站点的安全受到威胁。在相关技术中,通常通过在客户端的请求中添加身份令牌,服务端通过验证身份令牌来判断请求的合法性,以此防御CSRF攻击。但是,在通过跨站攻击(Cross Site Script,XSS)发起攻击时,由于能向客户端注入恶意脚本,并通过该恶意脚本获取到身份令牌,因此目前无法有效防御CSRF攻击。

发明内容

本申请提供一种防御网络攻击方法及服务器、客户端、电子设备、存储介质,通过将身份令牌存放到沙箱的方式,可以保障身份令牌的安全性,有效防御基于XSS方式盗取身份令牌发起的CSRF等网络攻击,保障了信息安全。

第一方面,本申请提供了一种防御网络攻击方法,可应用于服务器,该防御网络攻击方法包括:响应于客户端发送的访问请求,获取与所述访问请求对应的目标身份令牌;生成目标脚本,所述目标脚本用于指示所述客户端在接收到所述目标身份令牌的情况下将所述目标身份令牌存放在沙箱;将所述目标身份令牌和所述目标脚本发送到所述客户端。

第二方面,本申请提供了一种防御网络攻击方法,可应用于客户端,该防御网络攻击方法包括:向服务器发送访问请求;接收所述服务器返回的目标身份令牌和目标脚本;其中,所述目标身份令牌是所述服务器响应所述访问请求获得的,所述目标脚本是所述服务器在生成所述目标身份令牌的情况下,为指示所述客户端将所述目标身份令牌存放在沙箱中生成的脚本;通过所述目标脚本,将所述目标身份令牌存放在所述沙箱中。

第三方面,本申请提供了一种服务器,该服务器包括:获取模块,用于响应于客户端发送的访问请求,获取与所述访问请求对应的目标身份令牌;脚本生成模块,用于生成目标脚本,所述目标脚本用于指示所述客户端在接收到所述目标身份令牌的情况下将所述目标身份令牌存放在沙箱;第一发送模块,用于将所述目标身份令牌和所述目标脚本发送到所述客户端。

第四方面,本申请提供了一种客户端,该客户端包括:

第二发送模块,用于向服务器发送访问请求;接收模块,用于接收所述服务器返回的目标身份令牌和目标脚本;其中,所述目标身份令牌是所述服务器响应所述访问请求获得的,所述目标脚本是所述服务器在生成所述目标身份令牌的情况下,为指示所述客户端将所述目标身份令牌存放在沙箱中生成的脚本;存放模块,用于通过所述目标脚本,将所述目标身份令牌存放在所述沙箱中。

第五方面,本申请提供了一种电子设备,该电子设备包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的一个或多个计算机程序,一个或多个所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行上述的防御网络攻击方法。

第六方面,本申请提供了一种计算机可读存储介质,其上存储有计算机程序,其中,所述计算机程序在被处理器/处理核执行时实现上述的防御网络攻击方法。

本申请所提供的实施例,响应于客户端发送的访问请求,获取与访问请求对应的目标身份令牌;生成目标脚本,目标脚本用于指示客户端在接收到目标身份令牌的情况下将目标身份令牌存放在沙箱,并将目标身份令牌和目标脚本发送到客户端。在本申请实施例中,服务器针对客户端的访问请求为其提供相应的目标身份令牌,以便基于目标身份令牌对客户端后续发送的操作请求进行合法性验证,从而能够较为准确便捷地识别出非法客户端,保障了网络信息安全,另外,服务器还生成目标脚本,并将目标身份令牌和目标脚本发送到客户端,使得客户端能够基于该目标脚本将目标身份令牌存放在沙箱中,为目标身份令牌提供了一个相对安全的存放环境,降低了基于跨站攻击等方式盗取该目标身份令牌的可能性,保障了目标身份令牌的安全,能够有效地防御网络攻击。

应当理解,本部分所描述的内容并非旨在标识本申请的实施例的关键或重要特征,也不用于限制本申请的范围。本申请的其它特征将通过以下的说明书而变得容易理解。

附图说明

附图用来提供对本申请的进一步理解,并且构成说明书的一部分,与本申请的实施例一起用于解释本申请,并不构成对本申请的限制。通过参考附图对详细示例实施例进行描述,以上和其他特征和优点对本领域技术人员将变得更加显而易见,在附图中:

图1为本申请实施例提供的一种防御网络攻击方法的流程图;

图2为本申请实施例提供的一种防御网络攻击方法的流程图;

图3为本申请实施例提供的一种防御网络攻击方法的流程图;

图4为本申请实施例提供的一种防御网络攻击方法的流程图;

图5为本申请实施例提供的一种防御网络攻击方法的流程示意图;

图6为本申请实施例提供的一种防御网络攻击方法的流程示意图;

图7为本申请实施例提供的一种服务器的框图;

图8为本申请实施例提供的一种客户端的框图;

图9为本申请实施例提供的一种电子设备的框图。

具体实施方式

为使本领域的技术人员更好地理解本申请的技术方案,以下结合附图对本申请的示范性实施例做出说明,其中包括本申请实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本申请的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。

在不冲突的情况下,本申请各实施例及实施例中的各特征可相互组合。

如本文所使用的,术语“和/或”包括一个或多个相关列举条目的任何和所有组合。

本文所使用的术语仅用于描述特定实施例,且不意欲限制本申请。如本文所使用的,单数形式“一个”和“该”也意欲包括复数形式,除非上下文另外清楚指出。还将理解的是,当本说明书中使用术语“包括”和/或“由……制成”时,指定存在所述特征、整体、步骤、操作、元件和/或组件,但不排除存在或添加一个或多个其它特征、整体、步骤、操作、元件、组件和/或其群组。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。

除非另外限定,否则本文所用的所有术语(包括技术和科学术语)的含义与本领域普通技术人员通常理解的含义相同。还将理解,诸如那些在常用字典中限定的那些术语应当被解释为具有与其在相关技术以及本申请的背景下的含义一致的含义,且将不解释为具有理想化或过度形式上的含义,除非本文明确如此限定。

在相关技术中,服务器通常直接将生成的身份令牌(Token)发送到客户端,客户端接收到Token之后,直接保存和使用,因此,存在通过XSS攻击获取Token,进而基于Token发起网络攻击的风险,客户端无法有效地防御网络攻击。

在本申请中,服务器生成Token之后,还会生成目标脚本,并把Token和目标脚本发送到客户端,其中,目标脚本的本质为一堆代码,里面包括了若干指令;客户端收到Token和目标脚本之后,通过执行目标脚本(即执行脚本中的指令),可以在客户端生成沙箱,并将Token存放到该沙箱中,从而降低了通过XSS攻击获取Token的可能性,提升了Token的安全性,使得客户端对网络攻击的防御能力得到增强。

根据本申请实施例的防御网络攻击方法,服务器针对客户端的访问请求为其提供相应的目标身份令牌,以便基于目标身份令牌对客户端后续发送的操作请求进行合法性验证,从而能够较为准确便捷地识别出非法客户端,保障了网络信息安全,另外,服务器还会生成目标脚本,并将目标身份令牌和目标脚本发送到客户端,使得客户端能够基于该目标脚本将目标身份令牌存放在独立隔离的环境中,为目标身份令牌提供了一个相对安全的存放环境,降低了基于跨站攻击等方式盗取该目标身份令牌的可能性,保障了目标身份令牌的安全,降低了网络攻击的风险。

根据本申请实施例的防御网络攻击方法可以由终端设备或服务器等电子设备执行,终端设备可以为车载设备、用户设备(User Equipment,UE)、移动设备、用户终端、终端、蜂窝电话、无绳电话、个人数字助理(Personal Digital Assistant,PDA)、手持设备、计算设备、车载设备、可穿戴设备等,所述方法可以通过处理器调用存储器中存储的计算机可读程序指令的方式来实现。服务器可以是独立的物理服务器、由多个服务器组成的服务器集群或者能够进行云计算的云服务器。

第一方面,本申请实施例提供一种防御网络攻击方法,应用于服务器。

图1为本申请实施例提供的一种防御网络攻击方法的流程图,该方法可以应用于服务器。参照图1,该方法包括:

在步骤S11中,响应于客户端发送的访问请求,获取与访问请求对应的目标身份令牌。

在一些可选的实现方式中,客户端(Client)是指与服务器(Service)相对应,为用户提供本地服务的程序(例如,提供页面浏览服务的各类浏览器),服务器则通常用于响应客户端发起的各类请求(response),并返回相应的资源数据。而且,客户端通常安装在客户机上,客户机包括可以承载浏览器的各类终端设备。

在一些可选的实现方式中,访问请求通常是客户端为连接服务器所发起的请求,响应于该访问请求,服务器会获取与该访问请求对应的目标身份令牌(Token)。该目标身份令牌可用于后续服务器与客户端在交互过程中对客户端的操作请求的合法性进行验证,以准确识别合法的操作请求,并针对合法的操作请求返回操作响应数据,而针对非法的操作请求,则拒绝反馈操作响应数据。

需要说明的是,在步骤S11中,获取目标身份令牌可以包括两种方式,一种是已经预先生成目标身份令牌,直接根据访问请求获取对应的目标身份令牌即可,另一种是还未生成目标身份令牌,需要即时性地生成与访问请求对应的目标身份令牌。

示例性地,访问请求包括用户信息,获取与访问请求对应的目标身份令牌,包括:根据用户信息,从预设存储空间获取与访问请求对应的目标身份令牌。

示例性地,访问请求包括用户信息,获取与访问请求对应的目标身份令牌,包括:基于预设的令牌生成算法,根据用户信息生成与该访问请求对应的目标身份令牌。

例如,从访问请求中获取用户信息,并将用户信息以及预设的一个或多个令牌参数(包括分隔符、特殊字符、固定签名、时间戳等)进行组合和加密处理,生成对应的目标身份令牌。

需要说明的是,同一客户端在每次访问服务器时,服务器所生成的目标身份令牌可能不同,这与身份令牌的有效期、身份令牌的更新方式等相关,本申请实施例对此不作限制。

在步骤S12中,生成目标脚本。

在一些可选的实现方式中,目标脚本用于指示客户端在接收到目标身份令牌的情况下将目标身份令牌存放在沙箱。其中,沙箱(Sandbox)创建了一个安全隔离环境,处于沙箱环境中的数据和运行结果不会对外部环境/外部对象产生影响,并且,通过设置沙箱的访问权限,可以防止外部环境/外部对象从沙箱中获取相关信息。在本申请实施例中,通过设置沙箱的访问权限,使得基于XSS代码无法从沙箱中获取目标身份令牌。

需要说明的是,目标脚本可以为代码,其中包括多种指令等,在一些可选的实现方式中,当客户端接收到目标脚本之后,执行该目标脚本(即相当于执行目标脚本中的指令),执行结果为生成沙箱,并将目标身份令牌存放到该沙箱中。

在一些可选的实现方式中,步骤S12生成目标脚本,包括:基于沙箱创建指令、代理创建指令、令牌插入指令、删除指令中的至少之一生成目标脚本;其中:沙箱创建指令用于创建沙箱;代理创建指令用于基于沙箱创建代理,且代理用于代理沙箱的全局对象,代理设置有对全局对象的拦截操作;令牌插入指令用于根据预设的令牌插入方法将目标身份令牌存放在沙箱,其中,令牌插入指令的作用域为代理的代理对象;删除指令用于指示在基于令牌插入指令将目标身份令牌存放到沙箱的情况下将令牌插入指令对应的代码删除。

需要说明的是,令牌插入指令对应的代码,不仅包括令牌插入指令本身的代码,还包括令牌插入方法对应的代码,以避免恶意脚本通过令牌插入指令和/或调用令牌插入方法盗取目标身份令牌(例如,通过令牌插入指令和/或调用令牌插入方法将目标身份令牌存放到预先建立的恶意沙箱中,再从恶意沙箱中获取该目标身份令牌)。

示例性地,设置沙箱创建指令为用于创建内嵌框架(iframe)元素的指令,创建的iframe元素即为沙箱;生成代理创建指令,基于该代理创建指令所创建的代理Proxy用于代理iframe元素的全局对象window,并且设置Proxy中has方法的返回值为false(即对全局对象的拦截操作);定义令牌插入方法(addFun方法),并设置执行该令牌插入方法的令牌插入指令,以便客户端在执行令牌插入指令时,可以基于addFun方法将目标身份令牌存放在沙箱中,而且,令牌插入指令的作用域为代理的代理对象,在基于令牌插入指令执行with语句时,对应的全局对象为Proxy的代理对象,由于Proxy中设置了has方法,所以可以拦截基于with方法的属性值,避免泄露目标身份令牌;然后,设置删除指令,删除指令用于指示在基于令牌插入指令将目标身份令牌存放到沙箱的情况下将令牌插入指令对应的代码删除;最后,将沙箱创建指令、代理创建指令、令牌插入指令、删除指令进行封装,获得目标脚本。

示例性地,目标脚本包括沙箱创建指令和令牌插入指令,相应的,客户端在执行目标脚本时,首先执行沙箱创建指令创建一个沙箱,并执行令牌插入指令将目标身份令牌存放到该沙箱中。

示例性地,目标脚本包括令牌插入指令,且客户端中已经预先建立了沙箱(不限制基于何种方式建立沙箱),基于此,客户端执行目标脚本中的令牌插入指令,将目标身份令牌存放到该沙箱中。

需要说明的是,在一些可选的实现方式中,目标脚本中还可以包括对象指定指令,该对象指定指令的执行顺序位于令牌插入指令之后,主要用于在定义好addFun方法,并设置好令牌插入指令之后,当客户端执行该对象指定指令时,将iframe元素对外的全局对象取值为空对象(即沙箱之外的脚本在获取iframe元素的全局对象取值时,只能获取到空值或无效值),从而防止恶意脚本获取到沙箱的全局对象。

需要强调的是,在相关技术中,服务器并不会生成该目标脚本,从而也无法指示客户端基于目标脚本生成沙箱并将目标身份令牌存放到沙箱中,从而无法保障目标身份令牌的安全性。

在步骤S13中,将目标身份令牌和目标脚本发送到客户端。

其中,服务器可以将目标身份令牌和目标脚本打包成一个数据包发送到客户端,也可以分别将目标身份令牌和目标脚本发送到客户端,本申请实施例对此不做限制。

在一些可选的实现方式中,服务器可以将目标脚本插入到网页头部,再将网页发送到客户端,客户端接收网页后从网页头部获取目标脚本。

示例性地,基于内联脚本标签(例如,