一种基于云平台的CSRF防护方法和系统与流程

文档序号:12037883阅读:290来源:国知局
一种基于云平台的CSRF防护方法和系统与流程

本发明涉及计算机网络数据安全领域,特别涉及一种基于云平台的csrf防护方法和系统。



背景技术:

随着全球广域网(worldwideweb,web)应用技术的高速发展,互联网上出现一种劫持其他终端用户在登录状态时对其所处应用系统执行恶意操作的攻击方法——跨站请求伪造(cross-siterequestforgery,csrf)。该攻击方法可以在受害者不知情的状态下执行web应用上的功能操作,具体可表现为当受害者成功登录某web应用系统,在使用期间受害者请求访问了攻击者构造的链接页面,在页面加载的同时攻击者已经利用事先构造好的代码完成了csrf攻击,成功利用受害者的用户权限执行了web应用系统的功能操作,使得用户的隐私信息及权利产生了威胁。

csrf防御主要可以从服务端、用户端和安全设备三个层面进行。服务端的防御具体又可分为(1)referer验证:在超文本传输协议报文(hypertexttransferprotocol,http)头中有一个referer字段,记录http请求的来源地址,访问一个安全受限的页面的请求必须来自同一个网站,当用户要提交一个请求时,请求的referer值需是提交按钮(触发请求)所在的页面的统一资源定位符(uniformresourcelocator,url)。(2)token验证:在请求中放入攻击者不能伪造的信息,并且该信息不在cookie中,开发者可以在http请求中以参数的形式加入一个随机产生的token,并且在服务器建立一个拦截器来验证这个token。如果请求中没有token或者token中内容不正确的话,表示可能是攻击者发动的攻击。(3)验证码:每次用户提交都在表单上填写一个图片上的随机字符串作为验证码。(4)其他验证方法:通过可扩展超文本传输请求(xmlhttprequest,xhr)这个类,一次性给所有该类请求加上csrftoken这个http头属性,并且把token值放入其中。

然而这些防护方法仍存在一些弊端:(1)token跟踪方法需要对web页面进行文档对象模型(documentobjectmodel,dom)解析,定位表单位置,修改表单请求内容等一系列复杂操作,防护效率低;(2)其他防护方法根据业务功能来配置防护地址,业务功能的变化会影响到防护功能的使用,且配置内容需要逐个抓取业务地址,配置过程繁琐。



技术实现要素:

为了解决现有技术的问题,本发明实施例提供了一种基于云平台的csrf(cross-siterequestforgery,跨站请求伪造)防护方法和系统。所述技术方案如下:

一方面,一种基于云平台的csrf防护方法,包括以下步骤:

接收待分析的请求包;

检查请求包登录状态,对未登录或已登录但不包含请求参数的请求包直接放行;

对已登录且包含请求参数的请求包进行检验;

根据检验结果判断对请求包是直接放行还是清除缓存后放行。

进一步的,检验已登录且包含请求参数步骤包括:

判断请求包的referer字段是否为空;

如果请求包的referer为空,则进一步判断该请求包的请求方式;

若为post请求,则对请求包清除缓存后放行;

若为get请求,则进行敏感操作的识别。

进一步的,如果请求包的referer字段不为空,则对该referer字段是否为可信域进行判断;

若referer字段为可信域,则对请求包直接放行;

若referer字段为非可信域,则进一步判断该请求包的请求方式;

若为post请求,则对请求包清除缓存后放行;

若为get请求,则进行敏感操作的识别。

进一步的,敏感操作识别的具体步骤包括:

判断请求包是否为敏感操作,对不是敏感操作的请求包直接放行,对是敏感操作的请求包清除缓存后放行。

具体的,敏感操作包括增加、删除、修改、查询。

进一步的,防护方法还包括:

在检查请求包登录状态前,先判断请求包是否为鉴权请求包;

如果不是鉴权请求包,则进一步检查请求包的登录状态。

另一方面,一种基于云平台的csrf防护系统,包括:

登录状态模块,用于接收待分析的请求包并检查请求包的登录状态,将未登录或已登录但不包含请求参数的请求包直接放行,将已登录且包含请求参数的请求包发送给检验模块;

检验模块,用于检验已登录且包含请求参数的请求包;

防护处理模块,用于根据检验结果,对请求包清除缓存后放行。

具体的,检验模块具体包括:

referer字段判断模块,用于判断请求包的referer字段是否为空,并将referer字段为空的请求包发送给请求方式判断模块,将referer字段不为空的请求包发送给可信域判断模块;

可信域判断模块,用于判断referer字段不为空的请求包的referer字段是否为可信域,并将referer字段不是可信域的请求包发送给请求方式判断模块,将referer字段是可信域的请求包直接放行;

请求方式判断模块,用于判断请求包的请求方式为post请求还是get请求,然后将post请求发送给防护处理模块,将get请求发送给敏感操作判断模块;

敏感操作判断模块,用于判断请求包是否为敏感操作,将不是敏感操作的请求包直接放行,将是敏感操作的请求包发送给防护处理模块。

进一步的,敏感操作包括增加、删除、修改、查询。

具体的,登录状态模块具体包括:

接收模块,用于接收待分析的请求包;

登录状态检查模块,用于检查接收到的待分析的请求包的登录状态,并将未登录的请求包直接放行,将已登录的请求包发给参数条件检查模块;

请求参数检查模块,用于检查已登录的请求包是否含有请求参数,并将已登录且不包含请求参数的请求包直接放行,将已登录且包含请求参数的请求包发送给检验模块。

进一步的,登录状态模块还包括:

鉴权统一资源定位符模块,用于判断接收到的待分析的请求包是否为鉴权请求包,并将非鉴权请求包发送给登录状态检查模块。

本发明实施例提供的技术方案带来的有益效果是:本发明的基于云平台的csrf防护方法和系统,通过判断请求访问系统的登录权限,能够减少公开的操作接口误拦行为,提高检测效率,降低对云平台性能的影响;通过识别请求方式、配置敏感操作参数和请求的referer进行相关的处理可实现对整个网站进行csrf防护,配置简单方便,对运营人员的专业要求低。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明提供的基于云平台的csrf防护方法的一种实施方式的流程图;

图2是图1中步骤s103的具体流程图;

图3是图1中加入步骤s301的流程图;

图4是本发明提供的基于云平台的csrf防护系统100的一种实施方式的结构图;

图5是图4中检验模块102的具体结构图;

图6是图4中登录状态模块101的具体结构图;

图7是图6中加入鉴权统一资源定位符模块1014的结构图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。

如图1所示是本发明提供的基于云平台的csrf(cross-siterequestforgery,跨站请求伪造)防护方法的一种实施方式,包括以下步骤:

步骤s101,接收待分析的请求包。

本实施例中,当浏览器等客户端通过超文本传输协议(hypertexttransferprotocol,http)向全球广域网(worldwideweb,web)服务器发出访问请求时,云平台首先接收到待分析的请求包。

步骤s102,检查请求包登录状态,对未登录或已登录但不包含请求参数的请求包直接放行。

由于csrf攻击只有以已登录用户为对象才能攻击成功,对不在登录状态的用户无法构成威胁,因此本发明在进行csrf防护时,首先对用请求包的登录状态进行检查判断。对于未登录的请求包,因为没有攻击威胁,可以直接放行该请求包;对于已登录的请求包,由于请求参数用来表示请求包是否需要进行csrf防护,不包含请求参数表明请求包不需要进行防护处理,直接放行请求包即可;包含请求参数的请求包表明需要进行防护处理,进入步骤s103,对已登录且包含请求参数的请求包进行检验,继续进行防护。

步骤s103,对已登录且包含请求参数的请求包进行检验。

对于处于登录状态且包含请求参数的请求包,这样的请求包具有潜在的攻击威胁,需要再行进一步的检验。这样能够减少公开操作接口的误栏行为,提高检测效率。

在本实施方式中,对于已登录且包含请求参数的请求包的检验包括对请求包的referer字段是否为空的判断、referer字段是否为可信域的判断、请求包请求方式判断以及请求包敏感操作判断。

步骤s104,根据检验结果判断对请求包执行直接放行或者清除缓存后放行的操作。

通过上述几种判断操作后,根据检验结果将没有csrf攻击威胁的请求包直接放行,将可能具有csrf攻击威胁的请求包清除缓存后放行。清除数据包的缓存信息相当于退出登录状态,因此此次攻击行为也会失败,这样就可以阻止csrf攻击;同时清除缓存信息相当于数据包没有任何权限,在执行不需要权限执行的操作时,也不会影响该功能的使用,这样也不会影响一些特殊接口的使用。

如图2所示,具体而言,步骤s103具体包括如下步骤:

步骤s1031,判断请求包的referer字段是否为空。

当浏览器通过超文本传输协议向全球广域网服务器发送请求时,请求数据包的头部一般会包含有referer字段,该字段包含有该请求的来源页面的链接地址,云平台通过该字段可以获得请求包的来源页面的统一资源定位符(uniformresourcelocator,url),并以此判断请求包的安全性。

在本实施例中,当云平台完成检查请求包的登录状态后,通过对已登录且包含请求参数的请求包的referer字段是否为空进行判断,如果请求包的referer字段不为空,则进行步骤s1032;如果请求包的referer字段为空,则进行步骤s1033。

步骤s1032,判断referer字段是否为可信域。如果云平台判断已登录且包含请求参数的请求包的referer字段不为空,则继续判断该请求包中的referer字段是否为可信域。如果referer字段为可信域,则进行步骤s1035将请求包直接放行;如果referer字段不是可信域,则进行步骤s1033。

云平台将已知安全可靠的网站保存在referer字段的白名单中,在白名单中的referer字段即为可信域。referer字段是可信域的请求包,表示云平台能够信任请求包的来源网站,请求包的安全性有保障,是csrf攻击的可能性很小。所以对于这样的请求包,云平台可以直接放行,不用再做其他处理。

步骤s1033,判断请求包的请求方式。

referer字段为空,请求包可能来自于攻击页面;或者虽然referer字段不为空,但referer字段不在云平台的可信域中,则说明云平台虽然能够知晓请求包的来源页面,但来源页面的安全性并不被云平台信任。这两种情况下请求包很大可能是通过其他网站的页面发起的,不是当前网站的功能操作发起的请求,对于此类请求很大可能是攻击行为。所以为了避免上述两种情况下的请求包存在csrf攻击,云平台对于这类的请求包,首先判断请求包的请求方式为get请求或在post请求。如果请求包的请求方式为get请求,则进行步骤s1034;如果请求包的请求方式为post请求,则进行步骤s1036。

超文本传输协议请求包的请求方式有get、head、post、put、delete、opinions及trace等类型,其中较为常用的主要是get请求和post请求。所以在此步骤中本发明主要判断区分请求包是get请求还是post请求,暂不考虑其他类型的请求包。通常情况下get请求用于从服务器获取数据,post请求用于向服务器发送数据。get请求在网站的功能操作中更普及,资源加载及连接点击请求都是直接通过get请求发起,因此还需要进一步判断请求包是否为增、删、改、查等敏感操作,并据此做防护处理,而对post请求则不需进行此步骤。

步骤s1034,敏感操作识别。

判断get请求的请求包是否为敏感操作,对不是敏感操作的请求包进行步骤1035,对是敏感操作的请求包进行步骤1036。

云平台对get请求方式的请求包继续判断该请求包是否为敏感操作。如果请求包不是敏感操作,则进行步骤s1023;如果请求包是敏感操作,则进行步骤s1034。

敏感操作是指请求包中有对用户信息、账号密码等敏感信息的增加、删除、修改、查找等行为,因为这些行为直接涉及到用户的信息安全、财产安全,csrf攻击也多以此为目的,所以对于是敏感操作的请求包需要重点进行防护。

步骤s1035,直接放行请求包。

对于非敏感操作,这样的请求包由于不具有攻击意义,可以忽略,云平台将请求包直接放行即可。

步骤s1036,清除请求包中的缓存数据(cookie等)后放行请求包。

云平台将post请求方式的请求包或是敏感操作的get请求方式的请求包中的缓存数据清除后,即可对请求包放行。

对于post请求方式的请求包,referer字段不在白名单时,这个请求很大可能是通过其他网站的页面发起的,此类请求是攻击行为的可能性很大,需给予拦截;但同时也要考虑到有可能是某些不需要用户权限就可执行的特殊公共接口的请求包。

对于是敏感操作的get请求方式的请求包,可能包括两种情况:(1)该功能操作需要用户权限来执行,并可影响用户的数据;(2)该功能操作不需要任何权限就可以执行,为公用的功能操作。

此时清除缓存数据相当于退出了登录状态,因此即使请求包是csrf攻击,此次攻击也会执行失败,也就阻止了该攻击行为。同时清除缓存数据后等同于没有任何权限,对执行不需要权限执行的操作来说,不会影响功能的使用,也不影响一些特殊接口的使用。

如图3所示,在本发明提供的基于云平台的csrf防护方法的实施方式中,在步骤s102检查请求包登录状态,对未登录或已登录但不包含请求参数的请求包直接放行前,还包括:

步骤s301,判断请求包是否为鉴权请求包。

云平台在检查请求包的登录状态前,先对请求包是否为鉴权请求包进行判断。如果不是鉴权请求包,则进行步骤s102检查请求包登录状态,对未登录或已登录但不包含请求参数的请求包直接放行;如果是鉴权请求包,则进行步骤s302会话标识处理。

鉴权(authentication)是指验证用户是否拥有访问系统的权利,鉴权统一资源定位符(uniformresourcelocator,url)即指登录的统一资源定位符,鉴权请求包则指携带有鉴权统一资源定位符的请求包。只有当请求包不是鉴权请求包时才需要进行csrf防护处理,对于鉴权请求包,将采用步骤s302会话标识处理。步骤s302会话标识处理不在本发明的内容中,在此不再赘述。

本发明提供的基于云平台的csrf防护系统100的一种实施方式如图4所示,包括:登录状态模块101、检验模块102和防护处理模块103。

登录状态模块101用于接收待分析的请求包并检查请求包的登录状态,将未登录或已登录但不包含请求参数的请求包直接放行,将已登录且包含请求参数的请求包发送给检验模块102;检验模块102用于检验已登录且包含请求参数的请求包;防护处理模块103用于根据检验结果,对请求包清除缓存后放行。

当csrf防护系统100收到由浏览器等客户端发来的超文本传输协议请求包后,首先通过登录状态模块101接收待分析的请求包,并对请求包的登录状态进行检查判断。因为csrf攻击只有以已登录用户为对象才能攻击成功,对不在登录状态的用户无法构成威胁,所以对未登录的请求包直接放行即可;对于已登录的请求包,登录状态模块101进一步检查请求包中是否包含请求参数,请求参数用来表示已登录的请求包是否需要进行csrf防护,对于已登录但不包含请求参数的请求包,由于没有csrf防护请求参数,说明无需对其进行防护,所以也可以将其直接放行。已登录且包含请求参数的请求包说明需要进行防护处理,将其发往检验模块102进行进一步的处理。检验模块102收到已登录且包含请求参数的请求包后,对请求包进行referer字段是否为空的判断、referer字段是否为可信域的判断、请求包请求方式判断以及请求包敏感操作判断。检验模块102通过上述几种判断操作后,根据检验结果将没有csrf攻击威胁的请求包直接放行,将可能具有csrf攻击威胁的请求包发往防护处理模块103对请求包清除缓存后放行。清除数据包的缓存信息相当于退出登录状态,因此此次攻击行为也会失败,这样就可以阻止csrf攻击;同时清除缓存信息相当于数据包没有任何权限,在执行不需要权限执行的操作时,也不会影响该功能的使用,这样也不会影响一些特殊接口的使用。

如图5所示,检验模块102具体包括:referer字段判断模块1021、可信域判断模块1022、请求方式判断模块1023和敏感操作判断模块1024。

referer字段判断模块1021用于判断请求包的referer字段是否为空,并将referer字段为空的请求包发送给请求方式判断模块1023,将referer字段不为空的请求包发送给可信域判断模块1022;可信域判断模块1022用于判断referer字段不为空的请求包的referer字段是否为可信域,并将referer字段不是可信域的请求包发送给请求方式判断模块1023,将referer字段是可信域的请求包直接放行;请求方式判断模块1023用于判断请求包的请求方式为post请求还是get请求,然后将post请求发送给防护处理模块103,将get请求发送给敏感操作判断模块1024;敏感操作判断模块1024用于判断请求包是否为敏感操作,将不是敏感操作的请求包直接放行,将是敏感操作的请求包发送给防护处理模块103。

当检验模块102收到登录状态检查模块101发来的已登录且包含请求参数的请求包后,首先交给referer字段判断模块1021处理。referer字段判断模块1021对请求包包头进行识别,查找请求包包头的referer字段是否为空(包头是否包含referer字段),并将referer字段为空的请求包发送给请求方式判断模块1023。对请求包包头的referer字段不为空的请求包发送给可信域判断模块1022,可信域判断模块1022判断请求包的referer字段是否是可信域。对于referer字段是可信域的请求包,可信域判断模块1022将请求包直接放行,对于referer字段不是可信域的请求包,可信域判断模块1022将请求包发送给请求方式判断模块1023。请求方式判断模块1023收到referer字段为空或者referer字段不是可信域的请求包后判断请求包类型,并将post请求的请求包发送给防护处理模块103,将get请求发送给敏感操作判断模块1024。敏感操作判断模块1024收到get请求的请求包后判断该请求包是否为增加、修改、删除、查找等敏感操作,如果get请求的请求包不是这些敏感操作,则直接放行请求包;如果get请求的请求包是这些敏感操作则将请求包发送给防护处理模块103。

防护处理模块103收到来自于请求方式判断模块1023发来的post请求的请求包或者敏感操作判断模块1024发来的是敏感操作的get请求的请求包后,清除请求包中的缓存数据,然后即可将请求包放行。

如图6所示,登录状态模块101具体包括:接收模块1011、登录状态检查模块1012和请求参数检查模块1013。

接收模块1011用于接收待分析的请求包;登录状态检查模块1012用于检查接收到的待分析的请求包的登录状态,并将未登录的请求包直接放行,将已登录的请求包发给参数条件检查模块1013;请求参数检查模块1013用于检查已登录的请求包是否含有csrf防护请求参数,并将已登录且不包含csrf防护请求参数的请求包直接放行,将已登录且包含csrf防护请求参数的请求包发送给检验模块102。

如图7所示,登录状态模块101还包括:鉴权统一资源定位符模块1014。

鉴权统一资源定位符模块1014用于判断接收到的待分析的请求包是否为鉴权请求包,并将非鉴权请求包发送给登录状态检查模块1012。

在登录状态检查模块1012对请求包登录状态进行检查前,需要先通过鉴权统一资源定位符模块1014对是否是鉴权请求包进行判断,对于鉴权请求包,进行其他处理(会话标识处理);不是鉴权请求包,才发往登录状态检查模块1012,继续进行防护处理。

本发明的基于云平台的csrf防护方法和系统,通过判断请求访问系统的登录权限,能够减少公开的操作接口误拦行为,提高检测效率,不影响云平台的性能;通过识别请求方式、配置敏感操作参数和对请求的referer进行相关的处理可实现对整个网站进行csrf防护,配置简单方便,对运营人员的专业要求低。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。

以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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