首页> 中国专利> 一种防止跨站请求伪造攻击的方法及系统

一种防止跨站请求伪造攻击的方法及系统

摘要

本发明适用于网络安全技术领域,提供了一种防止跨站请求伪造攻击的方法及系统,该方法包括:客户端在接收到浏览器的页面消息时,生成HTTP请求;客户端根据从服务端获取的策略文件对HTTP请求中的cookie信息进行过滤处理;客户端将过滤处理后的HTTP请求发送至服务端。在本发明中,由于策略文件由服务端提供,服务端准确定义其希望收到来自哪些页面的请求,客户端根据策略文件对HTTP请求进行真伪判断,确保了不被策略文件允许的请求不会携带用户的cookie,服务端不希望接受的请求不会被客户端发出,保证了客户端的网络安全。

著录项

  • 公开/公告号CN105100084A

    专利类型发明专利

  • 公开/公告日2015-11-25

    原文格式PDF

  • 申请/专利权人 中国科学院计算技术研究所;

    申请/专利号CN201510394384.4

  • 发明设计人 高云鹏;孙毓忠;

    申请日2015-07-07

  • 分类号H04L29/06(20060101);H04L29/08(20060101);

  • 代理机构11006 北京律诚同业知识产权代理有限公司;

  • 代理人祁建国;刘健

  • 地址 100190 北京市海淀区中关村科学院南路6号

  • 入库时间 2023-12-18 12:35:43

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2018-03-30

    授权

    授权

  • 2015-12-23

    实质审查的生效 IPC(主分类):H04L29/06 申请日:20150707

    实质审查的生效

  • 2015-11-25

    公开

    公开

说明书

技术领域

本发明涉及网络安全,主要是浏览器安全与web应用安全,尤其涉及一种 防止跨站请求伪造攻击的方法及系统。

背景技术

现有技术中的网站服务器与用户客户端之间主要通过HTTP(HyperText TransferProtocol,超文本传输协议)协议进行通信。根据HTTP协议的定义, 该协议是一个无状态的协议,即服务器与客户端的每一次通信事物都是彼此独 立的,服务器与客户端的下一次通信时,并不知道前一次通信的信息。但在实 际应用中,又需要服务器与客户端之间连续、有状态地相互通信,因此cookie 技术作为一种最常见的解决方案被引入了进来。

为了保持服务器与客户端之间有状态的连接,需要服务器有能力识别来自 不同客户端的请求,因此需要在服务器或客户端保存用户连接的信息以便服务 器识别。而即使选择在服务器保存用户连接信息,也需要在客户端保存一段短 小的标识文本。因此,HTTP协议规定了保存在客户端的一段用于说明用户连接 信息或标识的文本,被称为cookie。当用户第一次登录网站时,服务器会通过响 应报头的set-cookie字段在浏览器建立该服务器网域的cookie。之后,在设置 cookie到cookie过期的时间内,从该浏览器发送到该网域的所有请求都会被浏 览器自动地在报头的cookie字段中加入该用户在该网域的cookie。这样当服务 器收到一个带有cookie信息的请求时,服务器便可以通过该信息识别用户。

由于cookie是服务器用于识别用户的关键信息,因此cookie也成为了多种 网络攻击的目标。与跨站脚本攻击等直接盗取用户cookie的攻击方式不同,跨 站请求伪造(crosssiterequestforgery,CSRF)攻击并不直接获取用户cookie,而 是通过浏览器自动添加cookie的机制,借用用户的cookie达到攻击的目的。在 用户不知情的情况下,CSRF攻击者伪造了一条用户的请求,通过一些手段使该 请求在用户的浏览器上发出。由于该请求携带了用户的cookie,因此会成功地被 服务器执行。跨站请求伪造攻击可以让攻击者获取或修改其他用户的账户信息, 因此主要破坏了信息安全的保密性与完整性。

现有技术中该项缺陷是由对用户请求鉴伪的职责规定不当导致的,并且现 有技术只让客户端或只让服务器进行请求真伪的判断,而客户端并不能获知一 个从某页面到另一页面的请求是否是服务器期望的,服务器也不能获知来自客 户端的请求是在怎样的上下文下被生成的,不能有效地防止CSRF攻击。

综上可知,现有技术在实际使用上显然存在不便与缺陷,所以有必要加以 改进。

发明内容

针对上述的缺陷,本发明的目的在于提供一种防止跨站请求伪造攻击的方 法及系统,其通过服务端提供的策略文件来判断客户端请求是否伪造,确保了 不被策略文件允许的请求不会携带用户的cookie,保证了客户端的网络安全,解 决了现有技术中服务端不了解客户端请求发出的上下文以及客户端不了解服务 端希望接受哪些请求的问题。

为了实现上述目的,本发明提供一种防止跨站请求伪造攻击的方法,所述 方法包括如下步骤:

客户端在接收到浏览器的页面消息时,生成HTTP请求;

所述客户端根据从服务端获取的策略文件对所述HTTP请求中的cookie信 息进行过滤处理;

所述客户端将过滤处理后的所述HTTP请求发送至所述服务端。

根据本发明的方法,所述客户端根据从服务端获取的策略文件对所述HTTP 请求中的cookie信息进行过滤处理的步骤包括:

所述客户端在本地文件系统中查找所述HTTP请求的关联策略文件;

所述客户端未查找到所述关联策略文件或者所述本地文件系统中的所述关 联策略文件的时间戳比所述服务端中的所述关联策略文件的最新时间戳小,从 所述服务端更新所述策略文件。

根据本发明的方法,所述客户端在本地文件系统中查找所述HTTP请求的 关联策略文件的步骤之后包括:

所述客户端从所述服务端获取所述关联策略文件的最新时间戳;

所述客户端中将本地文件系统中的所述关联策略文件的时间戳与从所述服 务端获取的所述关联策略文件的最新时间戳进行对比。

根据本发明的方法,所述客户端根据从服务端获取的策略文件对所述HTTP 请求中的cookie信息进行过滤处理的步骤还包括:

所述客户端根据所述HTTP请求中的来源地址信息、目标地址信息作为关 键字在策略文件中查找处理结果信息;

并根据所述查找到的处理结果信息,决定是否删除或修改所述HTTP请求 中的cookie信息。

根据本发明的方法,所述客户端根据所述HTTP请求中的来源地址信息、 目标地址信息作为关键字在策略文件中查找处理结果信息的步骤包括:

所述客户端根据所述HTTP请求中的目标地址信息在所述策略文件中查找 对应的策略条目,所述策略文件包括多个由来源地址信息、目标地址信息以及 处理结果信息组成的策略条目;

所述客户端判断所述HTTP请求中的来源地址信息与查找到的策略条目中 的来源地址信息是否匹配;

若匹配则所述查找到的策略条目中的处理结果信息为所需的处理方式。

本发明相应提供一种防止跨站请求伪造攻击的系统,所述系统包括客户端 以及服务端,所述客户端包括:

请求生成模块,用于在接收到浏览器的页面消息时,生成HTTP请求;

处理模块,用于根据从所述服务端获取的策略文件对所述HTTP请求中的 cookie信息进行过滤处理;

请求发送模块,用于将过滤处理后的所述HTTP请求发送至所述服务端。

根据本发明的系统,所述处理模块还包括策略文件更新单元,

所述策略文件更新单元用于在本地文件系统中查找所述HTTP请求的关联 策略文件,以及用于在未查找到所述关联策略文件或者所述本地文件系统中的 所述关联策略文件的时间戳比所述服务端中的所述关联策略文件的最新时间戳 小,从所述服务端更新所述策略文件。

根据本发明的系统,所述策略文件更新单元包括:

时间戳获取子单元,用于从所述服务端获取所述关联策略文件的最新时间 戳;

时间戳对比子单元,用于将本地文件系统中的所述关联策略文件的时间戳 与从所述服务端获取的所述关联策略文件的最新时间戳进行对比。

根据本发明的系统,所述处理模块还包括Cookie信息过滤处理单元,

所述Cookie信息过滤处理单元用于根据所述HTTP请求中的来源地址信息、 目标地址信息作为关键字在策略文件中查找处理结果信息,以及用于根据查找 到的处理结果信息决定是否删除或修改所述HTTP请求中的cookie信息。

根据本发明的系统,所述Cookie信息过滤处理单元包括:

策略条目查询子单元,用于根据所述HTTP请求中的目标地址信息在所述 策略文件中查找对应的策略条目,所述策略文件包括多个由来源地址信息、目 标地址信息以及处理结果信息组成的策略条目;

匹配子单元,用于判断所述HTTP请求中的来源地址信息与查找到的策略 条目中的来源地址信息是否匹配,若匹配则所述查找到的策略条目中的处理结 果信息为所需的处理方式。

本发明通过在客户端维护来自服务端的策略文件,并根据该策略文件内容 决定是否保留由客户端生成的每一个HTTP请求的cookie信息进行过滤处理, 最后将过滤后的HTTP请求发送至服务端。由于策略文件由服务端提供,服务 端准确定义其希望收到来自哪些页面的请求,客户端根据策略文件对HTTP请 求进行真伪判断,确保了不被策略文件允许的请求不会携带用户的cookie,服务 端不希望接受的请求不会被客户端发出,保证了客户端的网络安全。解决了现 有技术中服务端不了解客户端请求发出的上下文以及客户端不了解服务端希望 接受哪些请求的问题。

附图说明

图1是本发明一种防止跨站请求伪造攻击的系统的原理框图;

图2是本发明一种防止跨站请求伪造攻击的方法的流程图;

图3是本发明防止跨站请求伪造攻击的方法一种具体实施例的流程图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实 施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅 仅用以解释本发明,并不用于限定本发明。

本发明提供了一种防止跨站请求伪造攻击的方法及系统,目标是保护客户 端不受CSRF攻击。CSRF攻击成功的根本原因在于:当服务端接收到一个客户 端请求时,服务端难以通过该客户端请求的内容判断该请求发出的场合(即该 请求是如何由浏览器发出的);而当浏览器端发出一个请求时,尽管浏览器端 知道该请求发出的场合,但并不清楚请求对象网站的安全规则,因此会无差别 地将cookie字段加入到请求内容中。本发明提供的方法及系统,通过由服务端 提供一个请求过滤的策略文件,由浏览器端按照策略文件的内容在请求发出前 进行过滤,以及维护本地策略文件时刻保持最新状态的更新规则,确保了每一 个由浏览器端发出的请求都符合请求目标网站的安全规则。

如图1所示,本发明提供一种防止跨站请求伪造攻击的系统,该系统包括 客户端100和服务端200。用户通过客户端100的浏览器来访问应用站点,该服 务端2000为应用站点部署的服务器。其中,该客户端100包括:请求生成模块 10、处理模块20以及请求发送模块30。

请求生成模块10,用于在接收到浏览器的页面消息时,生成HTTP请求。 当用户使用客户端100浏览网页时,客户端100会根据网页的脚本语句或用户 在网页上触发的事件(如点击),生成HTTP请求。

处理模块20,用于根据从服务端200获取的策略文件对HTTP请求中的 cookie信息进行过滤处理。

请求发送模块30,用于将过滤处理后的HTTP请求发送至服务端200。从 而确保了不被策略文件允许的请求不会携带用户的cookie,保证服务端200不希 望接受的请求不会被客户端100发出,保证了客户端100的网络安全。

如图1所示,处理模块20包括策略文件更新单元21和Cookie信息过滤处 理单元22。

策略文件更新单元21,用于在本地文件系统中查找所述HTTP请求的关联 策略文件,以及用于在未查找到关联策略文件或者本地文件系统中的关联策略 文件的时间戳比服务端中的关联策略文件的最新时间戳小,从服务端200更新 策略文件。时间戳越小,则该策略文件的修改时间越早,该策略文件较旧;时 间戳越大,则该策略文件的修改时间越晚,该策略文件较新。

具体的,在客户端100生成HTTP请求之后,客户端100检查该HTTP请 求的目标URL,根据在目标URL的域名在本地文件系统中查找是否有相对应的 策略文件。本地的策略文件可以默认都存放在某一目录中,并按照固定的文件 名格式(如“policy_域名.sqlite”)。这样只要知道了某个请求的目标URL的域 名字段,就可以据此获得其本地策略文件的路径和文件名,进而获知该本地策 略文件是否存在以及其最近修改日期。如果客户端100的本地文件系统中的关 联策略文件的修改时间比服务端200中的关联策略文件的修改时间早,则客户 端100需要从服务端200更新策略文件,保证客户端100使用的策略文件是最 新的。客户端100可以向服务端20020发起文件下载的请求,将服务端200的 策略文件下载到本地的默认路径,并覆盖本地的策略文件(如果本地文件系统 有策略文件)。

Cookie信息过滤处理单元22,用于根据所述HTTP请求中的来源地址信息、 目标地址信息作为关键字在策略文件中查找处理结果信息,以及用于根据查找 到的处理结果信息决定是否删除或修改所述HTTP请求中的cookie信息。具体 的,策略文件包括多个由来源地址信息、目标地址信息以及处理结果信息组成 的策略条目。Cookie信息过滤处理单元22根据查找到的处理结果信息对HTTP 请求进行处理。如果结果是安全,则对HTTP请求不做修改;如果结果是不安 全,则删除该HTTP请求中的cookie字段;如果结果有其他描述,例如仅删除 cookie中的某些值,则删除该请求中cookie字段内的相应值。由于CSRF攻击 需要借助用户合法的cookie才能成功,因此如果该HTTP请求是合法请求,则 其策略条目会在策略文件中显示为“允许”,从而其cookie字段会被保留;如 果该HTTP请求是非法请求,则其策略条目不会在策略文件中出现(也即不能 根据HTTP请求中的来源地址信息、目标地址信息作为关键字在策略文件中查 找到处理结果信息),或者显示为“不允许”,因此其cookie字段被删除。而 当服务端200接收到客户端100发来的一个不含cookie字段的HTTP请求时, 由于无法判断用户身份,服务端200不会进行与该用户身份相关的操作,从而 避免了CSRF攻击。

如图1所示,策略文件更新单元21还包括时间戳获取子单元211和时间戳 对比子单元212。

时间戳获取子单元211,用于从服务端200获取关联策略文件的最新时间戳。 具体的,客户端100根据HTTP请求的目标的域名,向对应域的授时接口发出 一条GET请求,获得该域的策略文件的最新时间戳。该授时接口可以为一个网 页脚本,其URL可以为域名下的固定位置,例如“域名/time.jsp”,其功能为 接受一个GET请求,之后读取本域的策略文件(例如“域名/policy_域名.sqlite”) 的修改日期,然后将该日期值添加到响应报文中,将响应报文发送给GET请求 来源客户端。

时间戳对比子单元212,用于将本地文件系统中的关联策略文件的时间戳与 从服务端200获取的所述关联策略文件的最新时间戳进行对比。

如图1所示,Cookie信息过滤处理单元22还包括策略条目查询子单元221 和匹配子单元222。

策略条目查询子单元221,用于根据HTTP请求中的目标地址信息在策略文 件中查找对应的策略条目,策略文件包括多个由来源地址信息、目标地址信息 以及处理结果信息组成的策略条目。

匹配子单元222,用于判断HTTP请求中的来源地址信息与查找到的策略条 目中的来源地址信息是否匹配,若匹配则查找到的策略条目中的处理结果信息 为所需的处理方式。具体的,策略文件的内容由若干个格式为“来源地址,目 标地址,处理结果”的策略条目组成,其中来源地址用正则表达式表达,客户 端100根据该次HTTP请求的目标地址在策略文件中查找相应的策略条目,在 查找到相应策略条目后,检查该HTTP请求的来源地址是否与该条目的来源地 址正则表达式匹配,若匹配,该条目的处理结果字段即为所需的处理方式。

在本发明中,客户端100用于提供网络浏览器的功能,并在HTTP请求生 成之后,对其进行CSRF过滤处理,之后再发出请求。该客户端100包括策略 文件更新单元21和Cookie信息过滤处理单元22,策略文件更新单元21用于检 查本地策略文件的时间戳,通过GET请求获取服务器端策略文件的时间戳,并 通过比较时间戳决定是否需要更新文件。最后通过文件下载获得服务器端最新 的策略文件并覆盖本地文件。Cookie信息过滤处理单元22用于将本次请求的来 源地址、目标地址作为关键字在策略文件中查找,根据查找到的处理结果,决 定是否删除本次请求中的cookie字段内容。服务端200用于提供网站服务器端 的功能,并在其域名下的固定位置提供策略文件和授时接口。

如图2所示,本发明相应提供一种防止跨站请求伪造攻击的方法,该方法 通过图1中的系统实现。该方法包括:

步骤S201,客户端在接收到浏览器的页面消息时,生成HTTP请求。本步 骤通过如图1所示的请求生成模块10实现。

步骤S202,客户端根据从服务端获取的策略文件对HTTP请求中的cookie 信息进行过滤处理。本步骤通过如图1所示的处理模块20实现。

步骤S203,客户端将过滤处理后的HTTP请求发送至服务端。本步骤通过 如图1所示的请求发送模块30实现。

优选的是,客户端根据从服务端获取的策略文件对HTTP请求中的cookie 信息进行过滤处理的步骤包括:客户端在本地文件系统中查找HTTP请求的关 联策略文件;客户端未查找到关联策略文件或者本地文件系统中的关联策略文 件的时间戳比服务端中的关联策略文件的最新时间戳小,从服务端更新策略文 件。

优选的是,客户端在本地文件系统中查找HTTP请求的关联策略文件的步 骤之后包括:客户端从服务端获取关联策略文件的最新时间戳;客户端中将本 地文件系统中的关联策略文件的时间戳与从服务端获取的关联策略文件的最新 时间戳进行对比。

优选的是,客户端根据从服务端获取的策略文件对HTTP请求中的cookie 信息进行过滤处理的步骤还包括:客户端根据HTTP请求中的来源地址信息、 目标地址信息作为关键字在策略文件中查找处理结果信息;并根据查找到的处 理结果信息,决定是否删除或修改HTTP请求中的cookie信息。

优选的是,客户端根据HTTP请求中的来源地址信息、目标地址信息作为 关键字在策略文件中查找处理结果信息的步骤包括:客户端根据HTTP请求中 的目标地址信息在策略文件中查找对应的策略条目,策略文件包括多个由来源 地址信息、目标地址信息以及处理结果信息组成的策略条目;客户端判断HTTP 请求中的来源地址信息与查找到的策略条目中的来源地址信息是否匹配;若匹 配则查找到的策略条目中的处理结果信息为所需的处理方式。

图3是本发明防止跨站请求伪造攻击的方法一种具体实施例的流程图。该 流程包括以下步骤:

步骤S301,客户端生成HTTP请求。当用户使用客户端100浏览网页时, 客户端会根据网页的脚本语句或用户在网页上触发的事件(如点击),生成HTTP 请求。在本发明中,客户端生成HTTP请求后不会立刻执行,而是引入以下步 骤的处理流程。

步骤S302,在本地文件系统中检查是否有与HTTP请求相对应的策略文件。 若有则进入步骤S303,否则进入步骤S305。在客户端100生成HTTP请求之后, 客户端检查该HTTP请求的目标URL,根据在目标URL的域名在本地文件系统 中查找是否有相对应的策略文件。本地的策略文件可以默认都存放在某一目录 中,并按照固定的文件名格式(如“policy_域名.sqlite”)。这样只要知道了某 个请求的目标URL的域名字段,就可以据此获得其本地策略文件的路径和文件 名,进而获知该本地策略文件是否存在以及其最近修改日期。

步骤S303,客户端根据该请求的目标的域名,向对应域的授时接口发出一 条GET请求,获得该域的策略文件的最新时间戳。该授时接口可以为一个网页 脚本,其URL可以为域名下的固定位置,例如“域名/time.jsp”,其功能为接 受一个GET请求,之后读取本域的策略文件(例如“域名/policy_域名.sqlite”) 的修改日期,然后将该日期值添加到响应报文中,将响应报文发送给GET请求 来源客户端。

步骤S304,客户端判断本地策略文件的时间戳是否小于GET请求获得的策 略文件的时间戳。若本地时间戳小于GET请求获得的时间戳,则执行步骤S305; 本地时间戳不小于GET请求获得的时间戳,则执行步骤S306。在本步骤中,时 间戳越小,则该策略文件的修改时间越早,该策略文件较旧;时间戳越大,则 该策略文件的修改时间越晚,该策略文件较新。

步骤S305,客户端更新本地的策略文件。具体的,由于客户端本地的策略 文件不存在或其时间戳比服务器端的策略文件的时间戳更旧,因此需要更新, 保证客户端使用的策略文件是最新的。客户端可以向服务端发起文件下载的请 求,将服务端的策略文件下载到本地的默认路径,并覆盖本地的策略文件(如 果本地文件系统有策略文件)。

步骤S306,客户端读取本地的策略文件并进行查询。在本步骤中,策略文 件的内容由若干个格式为“来源地址信息,目标地址信息,处理结果信息”的 策略条目组成,其中来源地址用正则表达式表达。客户端根据该次HTTP请求 的目标地址在策略文件中查找相应的条目。在查找到相应条目后,检查该HTTP 请求的来源地址是否与该条目的来源地址正则表达式匹配,若匹配,该条目的 处理结果字段即为所需的处理方式。

步骤S307,客户端根据查找到的处理结果对HTTP请求进行过滤处理。具 体的,客户端根据步骤S306中查找到的处理结果信息对HTTP请求进行处理, 如果结果是安全,则对请求不做修改;如果结果是不安全,则删除该请求中的 cookie字段;如果结果有其他描述,例如仅删除cookie中的某些值,则删除该 请求中cookie字段内的相应值。

步骤S308,客户端将处理完毕的请求发送到服务端。

步骤S309,服务端接收到该请求并进行相应处理。

由于CSRF攻击需要借助用户合法的cookie才能成功,因此如果该HTTP 请求是合法请求,则其策略条目会在策略文件中显示为“允许”,从而其cookie 字段会被保留;如果该HTTP请求是非法请求,则其策略条目不会在策略文件 中出现(也即不能根据HTTP请求中的来源地址信息、目标地址信息作为关键 字在策略文件中查找到处理结果信息),或者显示为“不允许”,因此其cookie 字段被删除。而当服务端接收到客户端发来的一个不含cookie字段的HTTP请 求时,由于无法判断用户身份,服务端不会进行与该用户身份相关的操作,从 而避免了CSRF攻击。

综上所述,本发明通过在客户端维护来自服务端的策略文件,并根据该策 略文件内容决定是否保留由客户端生成的每一个HTTP请求的cookie信息进行 过滤处理,最后将过滤后的HTTP请求发送至服务端。由于策略文件由服务端 提供,服务端准确定义其希望收到来自哪些页面的请求,客户端根据策略文件 对HTTP请求进行真伪判断,确保了不被策略文件允许的请求不会携带用户的 cookie,服务端不希望接受的请求不会被客户端发出,保证了客户端的网络安全。 解决了现有技术中服务端不了解客户端请求发出的上下文以及客户端不了解服 务端希望接受哪些请求的问题。

当然,本发明还可有其它多种实施例,在不背离本发明精神及其实质的情 况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但 这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号