跨站请求处理方法、装置及电子设备与流程

文档序号:20917208发布日期:2020-05-29 13:41阅读:252来源:国知局
跨站请求处理方法、装置及电子设备与流程

本申请涉及通信技术领域,尤其涉及一种跨站请求处理方法、装置及电子设备。



背景技术:

跨站请求伪造(cross-siterequestforgery,csrf)是一种对网站的恶意利用,其通过伪装来自受信任用户的请求来利用受信任的网站来实现对目标地址的恶意攻击。在主流浏览器的跨域数据访问业务中存在非常多的场景采用jsonp作为数据传输协议。但是,由于请求是跨域的,不能像传统的web应用程序把数据提交到web服务器(使用html表单)过程中,在页面上植入csrftoken,因此对于一些写操作的场景,例如向一个用户转账,直接使用jsonp会有较大的安全风险。此外,jsonp协议只能用get方式提交,因此参数只能写在url中,很容易被截获和伪造,并且受到url长度限制,在一些请求体比较大的场景中也不能使用。

如果使用异步javascript和xml(asynchronousjavascriptandxml,ajax)协议传输数据,受其同源性的制约,没有办法发起跨域的请求,例如页面a.taobao.com/a.html中不能通过ajax请求访问b.taobao.com域名下的服务。



技术实现要素:

本发明提供了一种跨站请求处理方法、装置及电子设备,能够在有效防止csrf的前提下对跨站请求业务进行处理。

为达到上述目的,本发明的实施例采用如下技术方案:

第一方面,提供了一种跨站请求处理方法,包括:

获取浏览器中从业务处理页面发起的跨站请求,所述跨站请求用于向与发起所述跨站请求的地址不同源的目标地址获取业务数据;

将所述跨站请求转换为与所述目标地址同源的同源请求,并在所述同源请求中携带用于防止跨站请求伪造的校验令牌;

将所述同源请求发送至所述目标地址的服务端,以使所述服务端基于所述校验令牌对所述同源请求进行处理;

接收所述服务端反馈的处理请求结果以及新生成的校验令牌,并将所述处理请求结果反馈至所述业务处理页面,将新生成的校验令牌更新替换掉当前使用的校验令牌。

第二方面,提供了一种跨站请求处理装置,包括:

跨站请求获取模块,用于获取浏览器中从业务处理页面发起的跨站请求,所述跨站请求用于向与发起所述跨站请求的地址不同源的目标地址获取业务数据;

请求转换模块,用于将所述跨站请求转换为与所述目标地址同源的同源请求,并在所述同源请求中携带用于防止跨站请求伪造的校验令牌;

同源请求发送模块,用于将所述同源请求发送至所述目标地址的服务端,以使所述服务端基于所述校验令牌对所述同源请求进行处理;

请求反馈接收模块,用于接收所述服务端反馈的处理请求结果以及新生成的校验令牌,并将所述处理请求结果反馈至所述业务处理页面,将新生成的校验令牌更新替换掉当前使用的校验令牌。

第三方面,提供了一种电子设备,包括:

存储器,用于存储程序;

处理器,耦合至所述存储器,用于执行所述程序,所述程序运行时执行本发明提供的跨站请求处理方法。

本发明提供了一种跨站请求处理方法、装置及电子设备,在浏览器中的业务处理页面发起跨站请求时,通过对跨站请求进行转换,变为与目标地址同源的同源请求,并且在该同源请求中携带用于防止跨站请求伪造的校验令牌;然后,将同源请求发送至目标地址的服务端,以使服务端基于校验令牌对同源请求进行处理;最后,接收服务端反馈的处理请求结果以及新生成的校验令牌,并将处理请求结果反馈至业务处理页面,将新生成的校验令牌更新替换掉当前使用的校验令牌,从而绕过了跨站请求不能进行csrf校验的缺陷,以及同源请求不支持跨域请求的限制,在有效防止csrf的前提下对跨站请求业务进行处理。

上述说明仅是本申请技术方案的概述,为了能够更清楚了解本申请的技术手段,而可依照说明书的内容予以实施,并且为了让本申请的上述和其它目的、特征和优点能够更明显易懂,以下特举本申请的具体实施方式。

附图说明

通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本申请的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:

图1为本发明实施例的跨站请求处理逻辑示意图;

图2为本发明实施例的跨站请求处理系统结构示意图;

图3为本发明实施例的跨站请求处理方法流程图一;

图4为本发明实施例的跨站请求处理方法流程图二;

图5为本发明实施例的跨站请求处理方法流程图三;

图6为本发明实施例的跨站请求处理装置结构图一;

图7为本发明实施例的跨站请求处理装置结构图二;

图8为本发明实施例的电子设备的结构示意。

具体实施方式

下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。

本发明实施例改善了现有技术在浏览器中从业务处理页面发起跨站请求时,无法在请求中嵌入csrftoken,从而导致目标地址服务端不能对跨站请求做csrf校验,以至于整个处理操作存在较大安全风险的缺陷,其核心思想是,在业务处理页面发起跨站请求时,可先将跨站请求转换为与目标地址同源的同源请求,然后就可以在该同源请求中嵌入csrftoken,从而使得目标地址服务端在获取到该同源请求后可以对该同源请求进行csrf校验,而实际上也是对原始的跨站请求进行csrf校验。这样,服务端可以基于对csrftoken的校验结果执行对原始的跨站请求执行处理业务逻辑,从而保证整个业务处理逻辑不受csrf攻击,实现安全操作。

基于上述跨站请求处理的方案思想,图1为本发明实施例提供的跨站请求处理逻辑示意图。该处理逻辑包括:

当判断在浏览器中的某个业务处理页面存在发起跨站请求的需求时,可以预先在该业务处理页面中嵌入一个与跨站请求的目标地址同源的一个桥接页面,比如可以在业务处理页面中通过加载一个iframe标签,然后利用该iframe标签在业务处理页面中加载桥接页面。由于这个桥接页面与目标地址同源,因此可以不受同源策略限制,自由向目标地址发送get/post请求。

当业务处理页面通过postmessageapi发起跨站请求时,桥接页面对该请求进行拦截,并将其转换为与目标地址同源的同源请求,比如ajax请求。同时在该同源请求中嵌入csrftoken。

桥接页面将同源请求发送至服务端网关后,先由服务端对csrftoken进行csrf校验,若校验通过,则执行对应的业务逻辑获得执行结果,然后执行下一步;若校验不通过,则生成相应的错误信息,然后执行下一步。服务端生成一个新的csrftoken,并和上一步中生成结果一起拼装成最终的结果,即返回值,通过服务端网关返回给请求方,即桥接页面。桥接页面接收到返回值之后,首先用返回值中的csrftoken替换当前缓存的token,保证下次发送请求时使用的token是有效的。然后把token以外的返回结果再通过postmessageapi发送给业务处理页面。业务处理页面通过postmessageapi收到来自桥接页面的消息,解析出其中的返回结果,从而完成一次请求的过程。

在图1所示的逻辑中,从③桥接页面发送同源请求至服务端到⑥桥接页面接收到服务端反馈返回值的过程与现有技术中同源请求的处理过程基本相似。

而本方案较现有技术的核心改进点在于,通过在业务处理页面加载与目标地址同源的桥接页面,以将跨站请求转换为与目标地址同源的同源请求,从而可以在同源请求中嵌入csrftoken,实现服务端对同源请求进行csrf校验,进而实现对原始的跨站请求的csrf校验,解决跨站请求场景中的csrf安全风险问题。

基于图1所示的跨站请求处理逻辑,如图2所示,为本发明实施例提供的跨站请求处理系统的结构示意图。该系统包括:浏览器210、目标地址服务端220。其中:

浏览器210中内置有跨站请求处理装置230,该处理装置在接收到浏览器210中业务处理页面发出的跨站请求后,将该请求转换成与目标地址同源的同源请求,并且在该同源请求中增加了csrftoken。

目标地址服务端220可以为业务处理页面发起的跨站请求所指向的目标地址对应的服务端。在实际应用场景中,该服务端可以为多个,分别对应不同的目标地址域。目标地址服务端220在接收到跨站请求处理装置230发出的同源请求后,基于请求中包含的csrftoken执行业务逻辑,并将处理结果和新生成的csrftoken以返回值的形式反馈给跨站请求处理装置230。跨站请求处理装置230从返回值中提取出csrftoken刷新替换掉本地存储的csrftoken,同时将处理结果反馈给业务处理页面。

进一步地,跨站请求处理装置230可以在业务处理页面中加载与跨站请求所对应的目标地址同源的桥接页面来实现将跨站请求转换为同源请求,以及在请求中增添csrftoken的过程。

下面通过多个实施例来进一步说明本申请的技术方案。

实施例一

基于上述跨站请求处理的方案思想,如图3所示,其为本发明实施例示出的跨站请求处理方法流程图一,该方法可通过图2中所示的跨站请求处理装置230执行完成。如图3所示,该跨站请求处理方法包括如下步骤:

s310,获取浏览器中从业务处理页面发起的跨站请求,跨站请求用于向与发起跨站请求的地址不同源的目标地址获取业务数据。

其中,本方案中的跨站请求是指发起页面请求的原地址与目标地址不是同源地址。该跨站请求可采用包括:jsonp或者跨域资源共享(cross-originresourcesharing)的数据传输协议的请求。这些数据传输协议普遍不支持在请求中嵌入csrftoken,因此目标地址服务端在接收到请求后无法对其进行csrf校验。

通常,浏览器中业务处理页面发起跨站请求至目标地址时,是通过postmessageapi发送跨站请求。因此,通过监听postmessageapi可以拦截获得到上述跨站请求。

s320,将跨站请求转换为与目标地址同源的同源请求,并在同源请求中携带用于防止跨站请求伪造的校验令牌。

为了能够在跨站的页面请求中增加csrftoken,本方案在业务处理页面发起跨站请求后不直接发出该请求,而是将其转换为与目标地址同源的同源请求后再发送至目标地址的服务端,如此,就可以在同源请求中携带用于防止跨站请求伪造的校验令牌(csrftoken)。

其中,同源请求可采用包括如异步javascript和xml的数据传输协议。

s330,将同源请求发送至目标地址的服务端,以使服务端基于校验令牌对同源请求进行处理。

具体地,如图4所示,服务端基于校验令牌对同源请求进行处理的过程包括如下步骤:

s410,基于校验令牌对同源请求进行跨站请求伪造校验;如果校验通过,则进入步骤s420;如果校验未通过,则进入步骤s430。

s420,基于同源请求执行处理业务逻辑,并将执行结果作为处理请求结果。

如果csrf校验通过,则认为原始的跨站请求是安全的,此时目标地址服务端可以根据同源请求中的请求体内容执行处理业务逻辑,并得到执行结果。

s430,将校验产生的错误信息作为处理请求结果;

如果csrf校验未通过,则认为原始的跨站请求存在安全风险,此时目标地址服务端会拒绝执行同源请求,并得到相应的错误信息。

s440,生成新的校验令牌。

目标地址服务端在执行步骤s420或430的同时,还可以在本地生成一个新的校验令牌,用于替换请求端当前使用的校验令牌。

s340,接收服务端反馈的处理请求结果以及新生成的校验令牌,并将处理请求结果反馈至业务处理页面,将新生成的校验令牌更新替换掉当前使用的校验令牌。

服务端将处理请求结果以及新生成的校验令牌反馈至请求端,请求端在接收到反馈结果后,会将其中包含的处理请求结果反馈至业务处理页面,以使得业务处理页面根据这些处理请求结果执行后面的加载过程;同时,请求端还将反馈结果中包含的新生成的校验令牌更新替换掉当前使用的校验令牌,以待下次发送同源请求时使用。

本发明提供了一种跨站请求处理方法,在浏览器中的业务处理页面发起跨站请求时,通过对跨站请求进行转换,变为与目标地址同源的同源请求,并且在该同源请求中携带用于防止跨站请求伪造的校验令牌;然后,将同源请求发送至目标地址的服务端,以使服务端基于校验令牌对同源请求进行处理;最后,接收服务端反馈的处理请求结果以及新生成的校验令牌,并将处理请求结果反馈至业务处理页面,将新生成的校验令牌更新替换掉当前使用的校验令牌,从而绕过了跨站请求不能进行csrf校验的缺陷,以及同源请求不支持跨站请求的限制,在有效防止csrf的前提下对跨站请求业务进行处理。

实施例二

如图5所示,为本发明实施例的跨站请求处理方法流程图三,本实施例中通过在业务处理页面中嵌入一个桥接页面从而实现将跨站请求转换为与目标地址同源的同源请求以及将同源请求发送至目标地址的服务端的处理过程。如图5所示,该跨站请求处理方法包括如下步骤:

s510,在业务处理页面中加载至少一个iframe标签,在iframe标签中加载与目标地址同源的桥接页面。

在浏览器中业务处理页面初始化时,业务处理页面通过预先设置的javascript程序库额外加载一个iframe,在iframe中会加载与跨站请求的目标地址同源的一个桥接页面。由于这个桥接页面与目标地址同源,因此可以不受同源策略限制,自由向目标地址发送get/post请求。

另外,桥接页面初始化时还会做两件事:注册成为postmessageapi的监听者,等待业务处理页面发起的消息;缓存目标地址域下发的csrftoken,待下次发送同源请求时使用。

s520,通过桥接页面监听用于传送页面请求的应用程序接口,并获取跨站请求。

通常,浏览器中业务处理页面发起跨站请求至目标地址时,是通过postmessageapi发送跨站请求,因此,通过桥接页面监听postmessageapi可以拦截获得到上述跨站请求。

s530,通过在业务处理页面中加载的桥接页面将跨站请求转换为与目标地址同源的同源请求,该桥接页面与目标地址同源。

业务处理页面通过本方案提供的javascript程序库发起跨站请求,该请求会被转浏览器中的postmessageapi调用,从而被iframe中的桥接页面接收,相当于业务处理页面向桥接页面发起了一个跨站请求。然后,桥接页面收集请求数据参数,把这些参数和缓存的csrftoken拼装成一个如ajax请求作为同源请求。

s540,通过桥接页面将同源请求发送至目标地址的服务端。

例如,将生成的上述ajax请求发送至目标地址的服务端。

s550,接收服务端反馈的处理请求结果以及新生成的校验令牌,并将处理请求结果反馈至业务处理页面,将新生成的校验令牌更新替换掉当前使用的校验令牌。

iframe中的桥接页面收到目标地址的服务端反馈的返回值之后,首先用返回值中的csrftoken替换当前缓存的csrftoken,保证下次发送请求时使用的csrftoken是有效的。然后把csrftoken以外的返回结果再通过postmessageapi发送给业务处理页面。业务处理页面通过postmessageapi收到来自桥接页面的消息,解析出其中的返回结果,从而完成一次请求的过程。

进一步地,在实际应用场景中,在浏览器中同一业务处理页面可能会有多个跨站请求同时发起,加载一个iframe可能是不够的,因此本方案中针对同一业务处理页面初始化的过程中,可以同时加载多个iframe,并对应加载多个桥接页面以满足并发的跨站请求的发起需求。

本实施例与图3所示方法相比较,进一步地,通过在业务处理页面加载至少一个iframe,进而通过该iframe加载同源桥接页面的方式来绕开同源策略,可以解决如ajax请求中无法实现跨域的问题。

进一步地,桥接页面使用如ajax的同源方式发送请求,当采用post的方式时可以不受get方式请求对请求体大小的限制,可以解决请求体大小的问题。

进一步地,桥接页面每次发送请求时都会带上服务端下发的csrftoken,而服务端每次收到请求时都会校验csrftoken的有效性,因此可以解决csrf安全风险,防止恶意用户伪造请求。

实施例三

如图6所示,为本发明实施例的跨站请求处理装置结构图一,该跨站请求处理装置可设置在图2所示的跨站请求处理系统中,用于执行如图3所示的方法步骤,其包括:

跨站请求获取模块610,用于获取浏览器中从业务处理页面发起的跨站请求,跨站请求用于向与发起跨站请求的地址不同源的目标地址获取业务数据;

请求转换模块620,用于将跨站请求转换为与目标地址同源的同源请求,并在同源请求中携带用于防止跨站请求伪造的校验令牌;

同源请求发送模块630,用于将同源请求发送至目标地址的服务端,以使服务端基于校验令牌对同源请求进行处理;

请求反馈接收模块640,用于接收服务端反馈的处理请求结果以及新生成的校验令牌,并将处理请求结果反馈至业务处理页面,将新生成的校验令牌更新替换掉当前使用的校验令牌。

进一步地,上述请求转换模块620,可具体用于通过在业务处理页面中加载的桥接页面将跨站请求转换为与目标地址同源的同源请求,该桥接页面与目标地址同源;

同源请求发送模块630,可具体用于通过桥接页面将同源请求发送至目标地址的服务端。

进一步地,上述跨站请求获取模块610可具体用于,通过桥接页面监听用于传送页面请求的应用程序接口,并获取跨站请求。

进一步地,如图7所示,在图6所示的跨站请求处理装置中还可包括:

桥接页面加载模块710,用于在业务处理页面中加载至少一个iframe标签,在iframe标签中加载与目标地址同源的桥接页面。

进一步地,上述跨站请求可采用包括:jsonp或者跨域资源共享的数据传输协议;

进一步地,上述同源请求可采用包括:异步javascript和xml的数据传输协议。

本发明提供了一种跨站请求处理装置,在浏览器中的业务处理页面发起跨站请求时,通过对跨站请求进行转换,变为与目标地址同源的同源请求,并且在该同源请求中携带用于防止跨站请求伪造的校验令牌;然后,将同源请求发送至目标地址的服务端,以使服务端基于校验令牌对同源请求进行处理;最后,接收服务端反馈的处理请求结果以及新生成的校验令牌,并将处理请求结果反馈至业务处理页面,将新生成的校验令牌更新替换掉当前使用的校验令牌,从而绕过了跨站请求不能进行csrf校验的缺陷,以及同源请求不支持跨站请求的限制,在有效防止csrf的前提下对跨站请求业务进行处理。

进一步地,通过在业务处理页面加载至少一个iframe,进而通过该iframe加载同源桥接页面的方式来绕开同源策略,可以解决如ajax请求中无法实现跨域的问题。

进一步地,桥接页面使用如ajax的同源方式发送请求,当采用post的方式时可以不受get方式请求对请求体大小的限制,可以解决请求体大小的问题。

进一步地,桥接页面每次发送请求时都会带上服务端下发的csrftoken,而服务端每次收到请求时都会校验csrftoken的有效性,因此可以解决csrf安全风险,防止恶意用户伪造请求。

实施例四

前面实施例描述了跨站请求处理装置的整体架构,该装置的功能可借助一种电子设备实现完成,如图8所示,其为本发明实施例的电子设备的结构示意图,具体包括:存储器810和处理器820。

存储器810,用于存储程序。

除上述程序之外,存储器810还可被配置为存储其它各种数据以支持在电子设备上的操作。这些数据的示例包括用于在电子设备上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。

存储器810可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(sram),电可擦除可编程只读存储器(eeprom),可擦除可编程只读存储器(eprom),可编程只读存储器(prom),只读存储器(rom),磁存储器,快闪存储器,磁盘或光盘。

处理器820,耦合至存储器810,用于执行存储器810中的程序,所述程序运行时执行如图3至图5中任意一种跨站请求处理方法。

上述的具体处理操作已经在前面实施例中进行了详细说明,在此不再赘述。

进一步,如图8所示,电子设备还可以包括:通信组件830、电源组件840、音频组件850、显示器860等其它组件。图8中仅示意性给出部分组件,并不意味着电子设备只包括图8所示组件。

通信组件830被配置为便于电子设备和其他设备之间有线或无线方式的通信。电子设备可以接入基于通信标准的无线网络,如wifi,2g或3g,或它们的组合。在一个示例性实施例中,通信组件830经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,通信组件830还包括近场通信(nfc)模块,以促进短程通信。例如,在nfc模块可基于射频识别(rfid)技术,红外数据协会(irda)技术,超宽带(uwb)技术,蓝牙(bt)技术和其他技术来实现。

电源组件840,为电子设备的各种组件提供电力。电源组件840可以包括电源管理系统,一个或多个电源,及其他与为电子设备生成、管理和分配电力相关联的组件。

音频组件850被配置为输出和/或输入音频信号。例如,音频组件850包括一个麦克风(mic),当电子设备处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器810或经由通信组件830发送。在一些实施例中,音频组件850还包括一个扬声器,用于输出音频信号。

显示器860包括屏幕,其屏幕可以包括液晶显示器(lcd)和触摸面板(tp)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与触摸或滑动操作相关的持续时间和压力。

本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。

最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1