一种针对React框架的防止跨站请求伪造CSRF攻击的方法及系统与流程

文档序号:17771680发布日期:2019-05-28 19:30阅读:1599来源:国知局
一种针对React框架的防止跨站请求伪造CSRF攻击的方法及系统与流程

本发明涉及计算机软件技术领域,并且更具体地,涉及一种针对react框架的防止跨站请求伪造(cross-siterequestforgery,csrf)攻击的方法及系统。



背景技术:

在科学技术日新月异发展的今天,计算机在人们的日常生活中发挥重要的作用,但是计算机在带来便利的同时也伴随着安全威胁。网络是人与世界交互的媒介,通过网络人们可以在网上购物,娱乐,办公,传递信息等,无形之中,人们在网上产生大量的数据,包括很多重要的数据,如个人隐私、具有商业价值的企业资料、国家机密。在这些重要数据的诱惑下,一些不法分子在网上实施各种网络攻击,以达到盗窃数据或权限的目的。其中,csxf攻击是网络上最常见的攻击手段之一。

csrf跨站请求伪造,也被称为“oneclickattack”或者sessionriding,也被称为xsrf,是一种挟制用户在当前已登录的web应用程序上执行非本意的操作的攻击方法。跟跨网站脚本(xss)相比,xss利用的是用户对指定网站的信任,csrf利用的是网站对用户网页浏览器的信任。因为csrf攻击利用的是冲着浏览器分不清发起请求是不是真正的用户本人。也就是说,简单的身份验证只能保证请求发自某个用户的浏览器,却不能保证请求本身是用户自愿发出的。攻击者盗用了你的身份,以你的名义发送恶意请求。csrf能够做的事情包括:以你名义发送邮件,发消息,盗取你的账号,甚至于购买商品,虚拟货币转账......,造成的问题包括:个人隐私泄露以及财产安全。

传统防止csrf攻击的方法有三种:

一、用户操作限制——验证码机制,添加验证码来识别是不是用户主动去发起这个请求,由于一定强度的验证码机器无法识别,因此危险网站不能伪造一个完整的请求。这种方式简单粗暴,低成本,可靠,能防范99.99%的攻击者。

缺点是对用户不友好。

二、请求来源限制——验证httpreferer字段,在http请求头中有一个字段叫referer,它记录了请求的来源地址。服务器需要做的是验证这个来源地址是否合法,如果是来自一些不受信任的网站,则拒绝响应。这种方式零成本,简单易实现。缺点是,由于这个方法严重依赖浏览器自身,因此安全性全看浏览器;兼容性不好,每个浏览器对于referer的具体实现可能有差别;并不一定可靠,在一些古老的垃圾浏览器中,referer可以被篡改;对用户不友好,referer值会记录下用户的访问来源,有些用户认为这样会侵犯到他们自己的隐私权。因此有些用户可能会开启浏览器防止跟踪功能,不提供referer,从而导致正常用户请求被拒绝。

三、额外验证机制——token的使用,服务器验证前台传过来的token,从而验证请求的有效性和安全性,这种方式非常容易实现,对用户来说十分友好后。缺点是后台无法充分验证token的安全性,容易被攻击者伪造。



技术实现要素:

本发明提出一种针对react框架的防止跨站请求伪造csrf攻击的方法及系统,以解决如何防止csrf攻击的问题。

为了解决上述问题,根据本发明的一个方面,提供了一种针对react框架的防止跨站请求伪造csrf攻击的方法,其特征在于,所述方法包括:

接收前端发送的请求,根据所述请求随机生成第一token数据;

利用加密算法生成密钥对,利用所述密钥对中的公钥对所述第一token数据进行加密,以生成第一密文数据,并将所述第一token数据和第一密文数据发送至前端作为第二token数据和第二密文数据;

接收前端发送的所述第二token数据和第二密文数据作为第三token数据和第三密文数据;

对所述第三token数据和第三密文数据进行验证,并根据验证结果进行相应的操作。

优选地,其中所述加密算法为非对称加密算法。

优选地,其中所述对所述第三token数据和第三密文数据进行验证,包括:

对所述第三token数据和第三密文数据进行正向散列验证;

当用户发送请求时,利用所述密钥对中的私钥对所述第一密文数据进行解密,以获取解密后的token数据,并利用所述解密后的token数据和第一token数据进行验证。

优选地,其中所述对所述第三token数据和第三密文数据进行正向散列验证,包括:

利用加密算法对所述第三token数据进行加密,以生成第四密文数据,并将所述第四密文数据和第一密文数据进行比较,若一致,则验证结果指示请求正常,反之,则验证结果指示请求异常;

优选地,其中所述利用所述解密后的token数据和第一token数据进行验证,包括:

将所述解密后的token数据和第一token数据进行比较,若一致,则验证结果指示请求正常;反之,则验证结果指示请求异常。

优选地,其中所述根据验证结果进行相应的操作,包括:

若所述验证结果指示请求正常,则正常返回输出数据;

若所述验证结果指示请求异常,则表明受到csrf攻击,抛出csrf攻击异常数据。

优选地,其中所述方法还包括:

利用react组件化开发的特性,对后台返回的密文数据统一封装在request组件中,以使得前端开发者无需在每个业务层考虑token的接收和发送问题。

根据本本发明的另一个方面,提供了一种针对react框架的防止跨站请求伪造csrf攻击的系统,其特征在于,所述系统包括:

第一token数据生成单元,用于接收前端发送的请求,根据所述请求随机生成第一token数据;

第一密文数据生成单元,用于利用加密算法生成密钥对,利用所述密钥对中的公钥对所述第一token数据进行加密,以生成第一密文数据,并将所述第一token数据和第一密文数据发送至前端作为第二token数据和第二密文数据;

数据接收单元,用于接收前端发送的所述第二token数据和第二密文数据作为第三token数据和第三密文数据;

数据处理单元,用于对所述第三token数据和第三密文数据进行验证,并根据验证结果进行相应的操作。

优选地,其中所述加密算法为非对称加密算法。

优选地,其中所述数据处理单元,对所述第三token数据和第三密文数据进行验证,包括:

正向散列验证模块,用于对所述第三token数据和第三密文数据进行正向散列验证;

token数据验证模块,用于当用户发送请求时,利用所述密钥对中的私钥对所述第一密文数据进行解密,以获取解密后的token数据,并利用所述解密后的token数据和第一token数据进行验证。

优选地,其中所述正向散列验证模块,对所述第三token数据和第三密文数据进行正向散列验证,包括:

利用加密算法对所述第三token数据进行加密,以生成第四密文数据,并将所述第四密文数据和第一密文数据进行比较,若一致,则验证结果指示请求正常,反之,则验证结果指示请求异常;

优选地,其中所述token数据验证模块,利用所述解密后的token数据和第一token数据进行验证,包括:

将所述解密后的token数据和第一token数据进行比较,若一致,则验证结果指示请求正常;反之,则验证结果指示请求异常。

优选地,其中所述数据处理单元,根据验证结果进行相应的操作,包括:

若所述验证结果指示请求正常,则正常返回输出数据;

若所述验证结果指示请求异常,则表明受到csrf攻击,抛出csrf攻击异常数据。

优选地,其中所述系统还包括:

封装单元,用于利用react组件化开发的特性,对后台返回的密文数据统一封装在request组件中,以使得前端开发者无需在每个业务层考虑token的接收和发送问题。

本发明提供了一种针对react框架的防止跨站请求伪造csrf攻击的方法及系统,包括:接收前端发送的请求,根据所述请求随机生成第一token数据;利用加密算法生成密钥对,利用所述密钥对中的公钥对所述第一token数据进行加密,以生成第一密文数据,并将所述第一token数据和第一密文数据发送至前端作为第二token数据和第二密文数据;接收前端发送的所述第二token数据和第二密文数据作为第三token数据和第三密文数据;对所述第三token数据和第三密文数据进行验证,并根据验证结果进行相应的操作。本发明采用密码算法对token进行加密,能够防止攻击者利用token伪造发起csrf攻击,极大提高了程序的安全性;利用react组件化开发的特性,使用token验证机制,前后台协作,给用户无感知的防止csxf攻击的方式,整个验证过程对用户时无感知的,非常容易实现,而且对用户来说十分友好。

附图说明

通过参考下面的附图,可以更为完整地理解本发明的示例性实施方式:

图1为根据本发明实施方式的针对react框架的防止跨站请求伪造csrf攻击的方法100流程图;以及

图2为根据本发明实施方式的针对react框架的防止跨站请求伪造csrf攻击的系统200的结构示意图。

具体实施方式

现在参考附图介绍本发明的示例性实施方式,然而,本发明可以用许多不同的形式来实施,并且不局限于此处描述的实施例,提供这些实施例是为了详尽地且完全地公开本发明,并且向所属技术领域的技术人员充分传达本发明的范围。对于表示在附图中的示例性实施方式中的术语并不是对本发明的限定。在附图中,相同的单元/元件使用相同的附图标记。

除非另有说明,此处使用的术语(包括科技术语)对所属技术领域的技术人员具有通常的理解含义。另外,可以理解的是,以通常使用的词典限定的术语,应当被理解为与其相关领域的语境具有一致的含义,而不应该被理解为理想化的或过于正式的意义。

图1为根据本发明实施方式的针对react框架的防止跨站请求伪造csrf攻击的方法100流程图。如图1所示,本发明的实施方式提供的针对react框架的防止跨站请求伪造csrf攻击的方法,采用密码算法对token进行加密,能够防止攻击者利用token伪造发起csrf攻击,极大提高了程序的安全性;利用react组件化开发的特性,使用token验证机制,前后台协作,给用户无感知的防止csxf攻击的方式,整个验证过程对用户时无感知的,非常容易实现,而且对用户来说十分友好。本发明的实施方式提供的针对react框架的防止跨站请求伪造csrf攻击的方法100从步骤101处开始,在步骤101接收前端发送的请求,根据所述请求随机生成第一token数据。

优选地,在步骤102利用加密算法生成密钥对,利用所述密钥对中的公钥对所述第一token数据进行加密,以生成第一密文数据,并将所述第一token数据和第一密文数据发送至前端作为第二token数据和第二密文数据。

优选地,其中所述加密算法为非对称加密算法。

在本发明的实施方式中,使用react作为前端框架的基础上,利用多种加密算法,对请求的token进行校验。加密算法包括:非对称密码算法。所谓非对称,就是指该算法需要一对密钥,使用其中一个加密,则需要用另一个才能解密。利用密码算法对token进行加密,可以防止攻击者利用token伪造发起csrf攻击。

后台根据接收的前端发送的请求随机生成第一token数据,由密钥对生成工具生成一对密钥,即公钥和私钥,第一token数据使用公钥加密后得到第一密文数据发送给前台,前台接收的token和密文数据为第二token数据和第二密文数据。

优选地,在步骤103接收前端发送的所述第二token数据和第二密文数据作为第三token数据和第三密文数据。

优选地,在步骤104对所述第三token数据和第三密文数据进行验证,并根据验证结果进行相应的操作。

优选地,其中所述对所述第三token数据和第三密文数据进行验证,包括:

对所述第三token数据和第三密文数据进行正向散列验证;

当用户发送请求时,利用所述密钥对中的私钥对所述第一密文数据进行解密,以获取解密后的token数据,并利用所述解密后的token数据和第一token数据进行验证。

优选地,其中所述对所述第三token数据和第三密文数据进行正向散列验证,包括:

利用加密算法对所述第三token数据进行加密,以生成第四密文数据,并将所述第四密文数据和第一密文数据进行比较,若一致,则验证结果指示请求正常,反之,则验证结果指示请求异常;

优选地,其中所述利用所述解密后的token数据和第一token数据进行验证,包括:

将所述解密后的token数据和第一token数据进行比较,若一致,则验证结果指示请求正常;反之,则验证结果指示请求异常。

优选地,其中所述根据验证结果进行相应的操作,包括:

若所述验证结果指示请求正常,则正常返回输出数据;

若所述验证结果指示请求异常,则表明受到csrf攻击,抛出csrf攻击异常数据。

在本发明的实施方式中,前端将现有的第二token数据和第二密文数据发送至后台作为第三token数据和第三密文数据。然后,后台对所述第三token数据和第三密文数据进行验证,具体包括:

(1)后台对所述第三token数据和第三密文数据进行正向散列验证,包括:利用加密算法对所述第三token数据进行加密,以生成第四密文数据,并将所述第四密文数据和第一密文数据进行比较。若一致,则验证结果指示请求正常,反之,则验证结果指示请求异常。对于token数据被修改,但密文数据未被修改的情况,此时即可得到验证。

(2)当用户发送请求时,利用所述密钥对中的私钥对所述第一密文数据进行解密,以获取解密后的token数据,并将所述解密后的token数据和第一token数据进行比较进行验证,若一致,则验证结果指示请求正常;反之,则验证结果指示请求异常。对于token数据和密文数据均被修改的情况,此时即可得到验证。当用户提交表单时,后台接口获取到cookie中的加密后的token,使用私钥进行解密,将解密后的token与第一次生成的token进行比较,若一致,则表明请求正常。否则,表明受到csrf攻击。

若验证成功,则正常返回输出数据;反之,抛出csrf攻击异常。

优选地,其中所述方法还包括:

利用react组件化开发的特性,对后台返回的密文数据统一封装在request组件中,以使得前端开发者无需在每个业务层考虑token的接收和发送问题。

本发明的实施方式提供的针对react框架的防止跨站请求伪造csrf攻击的系统200,包括:第一token数据生成单元201、第一密文数据生成单元202、数据接收单元203和数据处理单元204。优选地,所述第一token数据生成单元201,用于接收前端发送的请求,根据所述请求随机生成第一token数据。

优选地,所述第一密文数据生成单元202,用于利用加密算法生成密钥对,利用所述密钥对中的公钥对所述第一token数据进行加密,以生成第一密文数据,并将所述第一token数据和第一密文数据发送至前端作为第二token数据和第二密文数据。

优选地,其中所述加密算法为非对称加密算法。

优选地,所述数据接收单元203,用于接收前端发送的所述第二token数据和第二密文数据作为第三token数据和第三密文数据。

优选地,所述数据处理单元204,用于对所述第三token数据和第三密文数据进行验证,并根据验证结果进行相应的操作。

优选地,其中所述数据处理单元,对所述第三token数据和第三密文数据进行验证,包括:正向散列验证模块和token数据验证模块。

所述正向散列验证模块,用于对所述第三token数据和第三密文数据进行正向散列验证。

优选地,其中所述正向散列验证模块,对所述第三token数据和第三密文数据进行正向散列验证,包括:利用加密算法对所述第三token数据进行加密,以生成第四密文数据,并将所述第四密文数据和第一密文数据进行比较,若一致,则验证结果指示请求正常,反之,则验证结果指示请求异常。

所述token数据验证模块,用于当用户发送请求时,利用所述密钥对中的私钥对所述第一密文数据进行解密,以获取解密后的token数据,并利用所述解密后的token数据和第一token数据进行验证。

优选地,其中所述token数据验证模块,利用所述解密后的token数据和第一token数据进行验证,包括:将所述解密后的token数据和第一token数据进行比较,若一致,则验证结果指示请求正常;反之,则验证结果指示请求异常。

优选地,其中所述数据处理单元,根据验证结果进行相应的操作,包括:若所述验证结果指示请求正常,则正常返回输出数据;若所述验证结果指示请求异常,则表明受到csrf攻击,抛出csrf攻击异常数据。

优选地,其中所述系统还包括:封装单元,用于利用react组件化开发的特性,对后台返回的密文数据统一封装在request组件中,以使得前端开发者无需在每个业务层考虑token的接收和发送问题。

本发明的实施例的针对react框架的防止跨站请求伪造csrf攻击的系统200与本发明的另一个实施例的针对react框架的防止跨站请求伪造csrf攻击的方法100相对应,在此不再赘述。

已经通过参考少量实施方式描述了本发明。然而,本领域技术人员所公知的,正如附带的专利权利要求所限定的,除了本发明以上公开的其他的实施例等同地落在本发明的范围内。

通常地,在权利要求中使用的所有术语都根据他们在技术领域的通常含义被解释,除非在其中被另外明确地定义。所有的参考“一个/所述/该[装置、组件等]”都被开放地解释为所述装置、组件等中的至少一个实例,除非另外明确地说明。这里公开的任何方法的步骤都没必要以公开的准确的顺序运行,除非明确地说明。

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