首页 / 专利库 / 电脑安全 / 跨站请求伪造 / 一种防御跨站请求伪造CSRF攻击的方法、系统和装置

一种防御跨站请求伪造CSRF攻击的方法、系统和装置

阅读:1016发布:2020-06-15

专利汇可以提供一种防御跨站请求伪造CSRF攻击的方法、系统和装置专利检索,专利查询,专利分析的服务。并且本 发明 实施例 公开了一种防御跨站 请求 伪造CSRF攻击的方法、系统和装置。包括: 网站 服务器 向登录成功的客户端发送会话cookie,所述会话cookie包括token值;客户端根据源网站服务器的完整域名,读取与该完整域名对应的会话cookie以及该会话cookie中的token值,将该会话cookie携带在Http请求的包头中,将该token值携带在http请求的包体里,向目标网站服务器发送该http请求;目标网站服务器将cookie中的token值和从http请求包体中读取的token值进行比较,如果不一致、或无法从cookie中读取token值,则不进行业务处理。应用本发明能够防御CSRF攻击。,下面是一种防御跨站请求伪造CSRF攻击的方法、系统和装置专利的具体信息内容。

1.一种防御跨站请求伪造(CSRF)攻击的方法,其特征在于,该方法包括:
网站服务器向登录成功的客户端发送会话cookie,客户端接收所述会话cookie,识别所述网站服务器的完整域名,保存所述会话cookie与所述网站服务器的完整域名之间的对应关系,所述会话cookie包括随机口令(token)值;
客户端在向目标网站服务器提交http请求时,根据请求该客户端发送该http请求的源网站服务器的完整域名,读取与该源网站服务器的完整域名对应的会话cookie,并读取该会话cookie中携带的token值,将该会话cookie携带在Http请求的包头中,将该token值携带在http请求的包体里,向该目标网站服务器提交该http请求;
目标网站服务器接收客户端发来的Http请求,从所述http请求的包头中读取会话cookie,从所述Http请求的包体里读取token值,从所述会话cookie中读取token值,将从所述会话cookie中读取的token值和从所述http请求包体中读取的token值进行比较,如果一致,则根据所述Http请求进行业务处理,如果不一致、或无法从所述cookie中读取token值,则不进行所述业务处理。
2.根据权利要求1所述的方法,其特征在于,该方法还包括:在从所述会话cookie中读取的token值和从所述http请求中读取的token值不一致时,所述目标网站服务器向所述客户端反馈token值错误的提醒消息。
3.根据权利要求1所述的方法,其特征在于,该方法还包括:所述token的字符串长度大于预定阈值
4.根据权利要求1所述的方法,其特征在于,该方法还包括,客户端在向目标网站服务器提交http请求时,接收用户输入的验证码,将所述验证码携带在所述http请求中。
5.一种防御跨站请求伪造(CSRF)攻击的系统,其特征在于,该系统包括客户端和网站服务器;
所述客户端,用于接收网站服务器发送的会话cookie,识别所述网站服务器的完整域名,保存所述会话cookie与所述网站服务器的完整域名之间的对应关系,所述会话cookie包括随机口令(token)值,在向目标网站服务器提交http请求时,根据请求该客户端发送该http请求的源网站服务器的完整域名,读取与该源网站服务器的完整域名对应的会话cookie,并读取该会话cookie中携带的token值,将会话cookie携带在http请求的包头中,将token值携带在http请求的包体里,向该目标网站服务器提交该http请求;
所述网站服务器,用于向登录成功的客户端发送会话cookie,接收客户端发来的Http请求,从http请求的包头中读取会话cookie,从Http请求的包体里读取token值,从所述会话cookie中读取token值,将从所述会话cookie中读取的token值和从所述http请求包体中读取的token值进行比较,如果一致,则根据所述Http请求进行业务处理,如果不一致、或无法从所述cookie中读取token值,则不进行所述业务处理。
6.根据权利要求5所述的系统,其特征在于,所述客户端包括浏览器。
7.一种防御跨站请求伪造(CSRF)攻击的客户端,其特征在于,所述客户端包括接收模、识别模块、保存模块、http请求构造模块和发送模块;
所述接收模块,用于接收网站服务器发送的会话cookie,所述会话cookie包括随机口令(token)值;
所述识别模块,用于识别所述网站服务器的完整域名;
所述保存模块,用于保存所述会话cookie与所述网站服务器的完整域名之间的对应关系;
所述http请求构造模块,用于根据请求该客户端发送http请求的源网站服务器的完整域名,读取与该源网站服务器的完整域名对应的会话cookie,并读取该会话cookie中携带的token值,将会话cookie携带在http请求的包头中,将token值携带在http请求的包体里;
所述发送模块,用于向网站提交所述http请求。
8.一种防御跨站请求伪造(CSRF)攻击的服务器,其特征在于,该服务器包括发送模块、接收模块、安全模块和业务处理模块;
所述发送模块,用于向登录成功的客户端发送会话cookie,该会话cookie中包括随机口令(token)值;
所述接收模块,用于接收客户端发送的Http请求;
所述安全模块,用于从http请求的包头中读取会话cookie,从Http请求的包体里读取token值,从所述会话cookie中读取token值,将从所述会话cookie中读取的token值和从所述http请求包体中读取的token值进行比较,判断从所述会话cookie中读取的token值与从所述http请求中读取的token值是否一致;
所述业务处理模块,用于在从所述会话cookie中读取的token值与从所述http请求包体中读取的token值一致时,根据所述http请求进行业务处理,在从所述会话cookie中读取的token值与从所述http请求包体中读取的token值不一致、或无法从所述会话cookie中读取token值时,不进行所述业务处理。

说明书全文

一种防御跨站请求伪造CSRF攻击的方法、系统和装置

技术领域

[0001] 本发明涉及网络技术领域,尤其涉及一种防御跨站请求伪造(CSRF)攻击的方法、系统和装置。

背景技术

[0002] 跨站请求伪造(CSRF)攻击,是指攻击者利用用户在一网站下的登录态信息,向与该一网站属于相同根域的任意网站发送请求,从而以用户的名义发送邮件、或修改信息、或购买商品等。其中,属于相同根域的不同网站的一级域名相同,但二级域名不同。
[0003] 现有技术中,如果用户成功登录根域下的一个网站,则认为该用户在该根域下的任一网站都处于登录态,因此如果攻击者冒充该用户向该根域下的网站发送购买商品、修改用户资料等请求,则该根域下的网站将根据该请求进行相应的业务处理。
[0004] 具体地,由于同一根域下的不同网站的登录信息相同,而登录信息都保存在会话cookie中,因此,攻击者可以通过在http请求中携带用户已经成功登录的网站的cookie值,来冒充该用户,向与该用户已经成功登录的网站的一级域名相同的目标网站发送http请求。
[0005] 例如,假设用户A登录了自己的个人网络空间,并且,该用户A处于个人网络空间的登录态时,访问了某危险网站A,该危险网站A中有一个图片,该图片的src是修改用户资料的url,即。由于HTML的img标签可以自动执行,以GET的方式发送http请求,因此,当用户A登录该危险网站A时,该危险网站A将以GET的方式向管理用户资料的服务器发送修改该用户A用户资料的Http请求,管理用户资料的服务器收到该危险网站A发送的Http请求后,判断该用户A当前是否处于个人网络空间所属根域的登录态,如果是,则依据该Http请求修改该用户A的用户资料,否则,拒绝修改该用户A的用户资料。
[0006] 目前,防御CSRF攻击的一种方法是,对重要的写操作,例如修改用户资料等,管理用户资料的服务器只根据以POST请求方式发送的用户资料修改请求进行用户资料的修改。
[0007] 然而,即便是管理用户资料的服务器只根据以POST请求的方式发送的用户资料修改请求进行用户资料的修改,攻击者仍然可以使用伪造FORM表单请求的方式篡改用户资料。
[0008] 例如,在危险网站A中嵌入有如下的内嵌框架(iframe):
[0009]
[0010] 由于iframe也是可以自动执行的,因此,如果用户A在处于某一网站的登录态时登录所述危险网站A,则一样可以触发CSRF攻击,即该危险网站冒充登录的用户A,向管理用户资料的服务器以POST请求的方式发送用户资料修改请求,从而篡改用户资料。
[0011] 可见,由于现有技术中,当用户成功登录根域下的一个网站后,该根域下的各个网站均认为该用户处于登录态,如果接收到攻击者冒充用户发送的请求,则会进行相应的处理,因此,难以防御CSRF攻击。

发明内容

[0012] 有鉴于此,本发明提供了一种防御跨站请求伪造CSRF攻击的方法、系统和装置,从而防御CSRF攻击。
[0013] 本发明的技术方案具体是这样实现的:
[0014] 一种防御跨站请求伪造(CSRF)攻击的方法,该方法包括:
[0015] 网站服务器向登录成功的客户端发送会话cookie,客户端接收所述会话cookie,识别所述网站服务器的完整域名,保存所述会话cookie与所述网站服务器的完整域名之间的对应关系,所述会话cookie包括随机口令(token)值;
[0016] 客户端在向目标网站服务器提交http请求时,根据请求该客户端发送该http请求的源网站服务器的完整域名,读取与该源网站服务器的完整域名对应的会话cookie,并读取该会话cookie中携带的token值,将该会话cookie携带在Http请求的包头中,将该token值携带在http请求的包体里,向该目标网站服务器提交该http请求;
[0017] 目标网站服务器接收客户端发来的Http请求,从所述http请求的包头中读取会话cookie,从所述Http请求的包体里读取token值,从所述会话cookie中读取token值,将从所述会话cookie中读取的token值和从所述http请求包体中读取的token值进行比较,如果一致,则根据所述Http请求进行业务处理,如果不一致、或无法从所述cookie中读取token值,则不进行所述业务处理。
[0018] 一种防御跨站请求伪造(CSRF)攻击的系统,该系统包括客户端和网站服务器;
[0019] 所述客户端,用于接收网站服务器发送的会话cookie,识别所述网站服务器的完整域名,保存所述会话cookie与所述网站服务器的完整域名之间的对应关系,所述会话cookie包括随机口令(token)值,在向目标网站服务器提交http请求时,根据请求该客户端发送该http请求的源网站服务器的完整域名,读取与该源网站服务器的完整域名对应的会话cookie,并读取该会话cookie中携带的token值,将会话cookie携带在http请求的包头中,将token值携带在http请求的包体里,向该目标网站服务器提交该http请求;
[0020] 所述网站服务器,用于向登录成功的客户端发送会话cookie,接收客户端发来的Http请求,从http请求的包头中读取会话cookie,从Http请求的包体里读取token值,从所述会话cookie中读取token值,将从所述会话cookie中读取的token值和从所述http请求包体中读取的token值进行比较,如果一致,则根据所述Http请求进行业务处理,如果不一致、或无法从所述cookie中读取token值,则不进行所述业务处理。
[0021] 一种防御跨站请求伪造(CSRF)攻击的客户端,所述客户端包括接收模、识别模块、保存模块、http请求构造模块和发送模块;
[0022] 所述接收模块,用于接收网站服务器发送的会话cookie,所述会话cookie包括随机口令(token)值;
[0023] 所述识别模块,用于识别所述网站服务器的完整域名;
[0024] 所述保存模块,用于保存所述会话cookie与所述网站服务器的完整域名之间的对应关系;
[0025] 所述http请求构造模块,用于根据请求该客户端发送http请求的源网站服务器的完整域名,读取与该源网站服务器的完整域名对应的会话cookie,并读取该会话cookie中携带的token值,将会话cookie携带在http请求的包头中,将token值携带在http请求的包体里;
[0026] 所述发送模块,用于向网站提交所述http请求。
[0027] 一种防御跨站请求伪造(CSRF)攻击的服务器,该服务器包括发送模块、接收模块、安全模块和业务处理模块;
[0028] 所述发送模块,用于向登录成功的客户端发送会话cookie,该会话cookie中包括随机口令(token)值;
[0029] 所述接收模块,用于接收客户端发送的Http请求;
[0030] 所述安全模块,用于从http请求的包头中读取会话cookie,从Http请求的包体里读取token值,从所述会话cookie中读取token值,将从所述会话cookie中读取的token值和从所述http请求包体中读取的token值进行比较,判断从所述会话cookie中读取的token值与从所述http请求中读取的token值是否一致;
[0031] 所述业务处理模块,用于在从所述会话cookie中读取的token值与从所述http请求包体中读取的token值一致时,根据所述http请求进行业务处理,在从所述会话cookie中读取的token值与从所述http请求包体中读取的token值不一致、或无法从所述会话cookie中读取token值时,不进行所述业务处理。
[0032] 由上述方案可见,本发明中,网站服务器向登录成功的客户端发送会话cookie,其中携带有token值,客户端在向目标网站服务器提交http请求时,会读取请求该客户端发送该http请求的源网站服务器发来的会话cookie,以及该cookie中携带的token值,将所述会话cookie和所述token值携带在http请求中发给目标网站服务器,而目标网站服务器在接收到客户端发来的Http请求时,会从该Http请求中读取会话cookie和token值,并读取所述会话cookie中的token,将直接从所述Http请求中读取的token值、和直接从所述会话cookie中读取的token值进行比较,只有在两者一致时,才会根据所述http请求进行业务处理,如果两者不一致、或无法从所述cookie中读取token值,则不进行所述业务处理。可见,如果http请求不是从已登录的目标网站服务器发出的,则一方面,客户端在构造http请求时,无法读取目标网站服务器的cookie、也无法从目标网站服务器的cookie中读取出token值,因此,客户端无法构造http请求,进而无法向目标网站服务器发送能够得到正确响应的http请求,因此,能够防止CSRF攻击,另一方面,如果客户端伪造了token值携带在http请求中,则在目标服务器对Http请求中的cookie和token值进行检验时,也将检验不通过,也不会为其提供相应的业务处理,因此也能够防止CSRF攻击。附图说明
[0033] 图1是本发明提供的防御CSRF攻击的方法流程图
[0034] 图2是本发明提供的防御CSRF攻击的系统组成示意图。
[0035] 图3是本发明提供的防御CSRF攻击的客户端结构图。
[0036] 图4是本发明提供的防御CSRF攻击的服务器结构图。

具体实施方式

[0037] 图1是本发明提供的防御CSRF攻击的方法流程图。
[0038] 如图1所示,该方法包括:
[0039] 步骤101,网站服务器向登录成功的客户端发送会话cookie,所述会话cookie包括随机口令(token)值。
[0040] 步骤102,客户端接收所述会话cookie,识别所述网站服务器的完整域名,保存所述会话cookie与所述网站服务器的完整域名之间的对应关系。
[0041] 步骤103,客户端在向目标网站服务器提交http请求时,根据请求该客户端发送该http请求的源网站服务器的完整域名,读取与该源网站服务器的完整域名对应的会话cookie、以及该会话cookie中携带的token值,将该会话cookie和该token值携带在该http请求中,向目标网站服务器提交该http请求。
[0042] 其中,将会话cookie和token值携带在该http请求中具体包括:将会话cookie携带在Http请求的包头中,将token值携带在http请求的包体里。
[0043] 步骤104,目标网站服务器接收客户端发来的Http请求,从http请求的包头中读取会话cookie,从Http请求的包体里读取token值,从所述会话cookie中读取token值,将从所述会话cookie中读取的token值和从所述http请求包体中读取的token值进行比较,如果一致,执行步骤105,如果不一致、或无法从所述cookie中读取token值,则执行步骤106。
[0044] 步骤105,则根据所述Http请求进行业务处理。
[0045] 步骤106,不进行所述业务处理。
[0046] 本步骤中,在从会话cookie中读取的token值和从http请求中读取的token值不一致时,目标网站服务器可以向所述客户端反馈token值错误的提醒消息。
[0047] 为了避免token值被破解,token的字符串长度需要大于预定阈值
[0048] 为了进一步提高安全性,客户端在向目标网站服务器提交http请求时,可以向用户显示需要输入的验证码,并接收用户输入的验证码,将所述验证码也携带在所述http请求中,目标网站服务器进一步通过对所述验证码进行验证,来防御CSRF攻击。
[0049] 根据本发明提供的上述方法,本发明还提供了相应的系统和装置,具体请参见图2~图4。
[0050] 图2是本发明提供的防御CSRF攻击的系统组成示意图。
[0051] 如图2所示,该系统包括客户端201和网站服务器202。
[0052] 客户端201,用于接收网站服务器发送的会话cookie,识别所述网站服务器的完整域名,保存所述会话cookie与所述网站服务器的完整域名之间的对应关系,所述会话cookie包括随机口令(token)值,在向目标网站服务器提交http请求时,根据请求该客户端201发送该http请求的源网站服务器的完整域名,读取与该源网站服务器的完整域名对应的会话cookie、以及该会话cookie中携带的token值,将会话cookie携带在Http请求的包头中,将token值携带在http请求的包体里,向该目标网站服务器提交该http请求。
[0053] 网站服务器202,用于向登录成功的客户端发送会话cookie,接收客户端发来的Http请求,从http请求的包头中读取会话cookie,从Http请求的包体里读取token值,从所述会话cookie中读取token值,将从所述会话cookie中读取的token值和从所述http请求包体中读取的token值进行比较,如果一致,则根据所述Http请求进行业务处理,否则,不进行所述业务处理。
[0054] 典型地,所述客户端可以是网页浏览器。
[0055] 图3是本发明提供的防御CSRF攻击的客户端结构图。
[0056] 如图3所示,该客户端包括接收模块301、识别模块302、保存模块303、http请求构造模块304和发送模块305。
[0057] 接收模块301,用于接收网站服务器发送的会话cookie,所述会话cookie包括token值。
[0058] 识别模块302,用于识别所述网站服务器的完整域名。
[0059] 保存模块303,用于保存所述会话cookie与所述网站服务器的完整域名之间的对应关系。
[0060] http请求构造模块304,用于根据请求该客户端发送http请求的源网站服务器的完整域名,读取与该源网站服务器的完整域名对应的会话cookie、以及该会话cookie中携带的token值,将会话cookie携带在Http请求的包头中,将token值携带在http请求的包体里。
[0061] 发送模块305,用于向目标网站服务器提交所述http请求。
[0062] 图4是本发明提供的防御CSRF攻击的服务器结构图。
[0063] 如图4所示,该服务器包括发送模块401、接收模块402、安全模块403和业务处理模块404。
[0064] 发送模块401,用于向登录成功的客户端发送会话cookie,该会话cookie中包括token值。
[0065] 接收模块402,用于接收客户端发送的Http请求。
[0066] 安全模块403,用于从http请求的包头中读取会话cookie,从Http请求的包体里读取token值,从所述会话cookie中读取token值,将从所述会话cookie中读取的token值和从所述http请求包体中读取的token值进行比较,判断从所述会话cookie中读取的token值与从所述http请求包体中读取的token值是否一致。
[0067] 业务处理模块404,用于在从所述会话cookie中读取的token值与从所述http请求包体中读取的token值一致时,根据所述http请求进行业务处理,在从所述会话cookie中读取的token值与从所述http请求包体中读取的token值不一致、或无法从所述会话cookie中读取token值时,不进行所述业务处理。
[0068] 以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈