在未修改浏览器上保护WEB应用的跨域交互的方法和系统.pdf

上传人:b*** 文档编号:970020 上传时间:2018-03-22 格式:PDF 页数:16 大小:988.29KB
返回 下载 相关 举报
摘要
申请专利号:

CN200910005958.9

申请日:

2009.01.22

公开号:

CN101788982A

公开日:

2010.07.28

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||实质审查的生效IPC(主分类):G06F 17/30申请日:20090122|||公开

IPC分类号:

G06F17/30

主分类号:

G06F17/30

申请人:

国际商业机器公司

发明人:

张夏天; 赵石顽; 袁泉; 付荣耀; 高伟

地址:

美国纽约

优先权:

专利代理机构:

北京市中咨律师事务所 11247

代理人:

于静;李峥

PDF下载: PDF下载
内容摘要

提供了一种用于在未修改浏览器上保护Web应用的跨域交互的系统和方法。所述系统包括:安全框架装置,其中所述安全框架装置由浏览器创建;其中,所述安全框架装置进一步包括:组件创建器,用于创建来自多个源的组件;以及监督模块,用于监督和控制在组件创建期间执行的脚本/代码以及在组件创建之后各个组件执行的调用和交互操作。根据本发明的实施例的所述系统和方法可以禁止来自组件的任意潜在的恶意操作,并且提供安全解决方案来监视和控制这些操作,从而同时兼顾功能性和安全性。

权利要求书

1: 一种用于在未修改浏览器上保护Web应用的跨域交互的系统,所述系统包括: 安全框架装置,其中所述安全框架装置由浏览器创建; 其中,所述安全框架装置进一步包括: 组件创建器,用于创建来自多个源的组件;以及 监督模块,用于监督和控制在组件创建期间执行的脚本/代码以及在组件创建之后各个组件执行的调用和交互操作。
2: 根据权利要求1所述的系统,其中所述系统进一步包括: 用于由浏览器向具有安全框架装置源代码的服务器请求安全框架装置的源代码的装置;以及 用于即时地运行所述源代码以创建所述安全框架装置的装置。
3: 根据权利要求1所述的系统,其中组件创建器进一步包括: 用于基于要创建的组件从相应的服务器获得该组件的脚本/代码的装置; 用于为所创建的每个组件生成一个随机串作为该组件的权标的装置,所述权标用于由所述安全框架装置确定组件的身份;以及 用于将所创建的权标和一个安全框架装置引用引擎放置在组件中的装置; 其中,所述安全框架装置进一步包括组件储存库,用于存储所创建的每个组件的引用、权标、主机、以及组件名称。
4: 根据权利要求1-3中任一项所述的系统,其中所述监督模块进一步包括调用代理,所述调用代理用于: 监视并控制组件之间进行的外部调用, 其中所述监督并控制进一步包括: 对由进行调用的组件提供的参数进行验证,所述参数包括调用者权标、目标组件、要调用的功能名称; 响应于所述参数合法,允许所述组件执行调用;以及 响应于所述参数不合法,拒绝所述调用。
5: 根据权利要求1-3中任一项所述的系统,其中所述监督模块进一步包括Ajax请求代理,所述Ajax请求代理用于: 监督并控制组件的Ajax请求,从而禁止直接的跨站Ajax请求; 其中所述监督并控制进一步包括: 检查所述Ajax请求中的目标主机是否是该组件所属的主机; 响应于所述目标主机是该组件所属的主机,则允许所述Ajax请求;以及 响应于所述目标主机不是该组件所属的主机,则拒绝所述Ajax请求。
6: 根据权利要求1-3中任一项所述的系统,其中所述监督模块进一步包括DOM树代理,所述DOM树代理用于: 监督并控制组件对于DOM树的访问,从而禁止直接的DOM树访问; 其中所述监督并控制进一步包括: 在组件被创建的时候将特定的经覆盖的DOM树节点提供给该组件,所述经覆盖的DOM树节点具有用于操作真实的DOM树节点的一些功能; 禁止组件对其它DOM树节点的访问;以及 在组件需要的时候向其提供其它经覆盖的DOM树节点。
7: 根据权利要求1-3中任一项所述的系统,其中所述监督模块进一步包括cookie代理,所述cookie代理用于: 监督并控制组件对cookie的访问,从而仅允许组件访问其自己的cookie; 其中所述监督并控制进一步包括: 检查该组件要访问的cookie是否是该组件自己的cookie; 响应于该组件要访问的cookie是该组件自己的cookie,则允许所述访问;以及 响应于该组件要访问的cookie不是该组件自己的cookie,则拒绝所述访问。
8: 根据权利要求1-3中任一项所述的系统,其中所述监督模块进一步包括恶意脚本过滤器,所述恶意脚本过滤器用于: 在创建组件之前检查组件的脚本/代码,以及检查在组件间传递的脚本/代码,以便从中挑出潜在的恶意代码; 其中所述检查进一步包括: 扫描源代码串以找到匹配的关键字,其中所述关键字指示出可以访问DOM树节点或cookie、与远程服务器进行通信、以及执行脚本的对象和功能,其从包括以下项目的组中选出:“document”、“this”、“XMLHTTPRequest”、“eval”、“window”、“location”、“history”、“parent”、“self”;以及 响应于发现所述关键字,将所述关键字屏蔽。
9: 根据权利要求1-3中任一项所述的系统,其中所述监督模块进一步包括: 用于提供一种覆盖的eval功能的装置,所述覆盖的eval功能用于替换初始的eval功能,其中所述功能可以将被拆开的串拼凑在一起,从而便于进行检查。
10: 根据权利要求1所述的系统,其中所述安全框架装置还包括:用于匹配预定的安全策略的装置以及/或者用于在出现不安全因素的时候警告用户的装置。
11: 一种用于在未修改浏览器上保护Web应用的跨域交互的方法,所述方法包括: 由浏览器创建安全框架装置; 由所述安全框架装置创建来自多个源的组件;以及 由所述安全框架装置监督和控制在组件创建期间执行的脚本/代码以及在组件创建之后各个组件执行的调用和交互操作。
12: 根据权利要求11所述的方法,其中由浏览器创建安全框架装置的所述步骤进一步包括: 由浏览器向具有安全框架装置源代码的服务器请求安全框架装置的源代码;以及 即时地运行所述源代码以创建所述安全框架装置。
13: 根据权利要求11所述的方法,其中由所述安全框架装置创建组件的所述步骤进一步包括: 基于要创建的组件从相应的服务器获得该组件的脚本/代码; 为所创建的每个组件生成一个随机串作为该组件的权标,所述权标用于由所述安全框架装置确定组件的身份; 将所创建的权标和一个安全框架装置引用引擎放置在组件中;以及 在所述安全框架装置中存储所创建的每个组件的引用、权标、主机、以及组件名称。
14: 根据权利要求11-13中任一项所述的方法,其中所述监督和控制在组件创建期间执行的脚本/代码以及在组件创建之后各个组件执行的调用和交互操作的所述步骤进一步包括: 监视并控制组件之间进行的外部调用, 其中监督并控制组件之间进行的外部调用的步骤进一步包括: 对由进行调用的组件提供的参数进行验证,所述参数包括调用者权标、目标组件、要调用的功能名称; 响应于所述参数合法,允许所述组件执行调用;以及 响应于所述参数不合法,拒绝所述调用。
15: 根据权利要求11-13中任一项所述的方法,其中所述监督和控制在组件创建期间执行的脚本/代码以及在组件创建之后各个组件执行的调用和交互操作的所述步骤进一步包括: 监督并控制组件的Ajax请求,从而禁止直接的跨站Ajax请求; 其中监督并控制组件的Ajax请求的所述步骤进一步包括: 检查所述Ajax请求中的目标主机是否是该组件所属的主机; 响应于所述目标主机是该组件所属的主机,则允许所述Ajax请求;以及 响应于所述目标主机不是该组件所属的主机,则拒绝所述Ajax请求。
16: 根据权利要求11-13中任一项所述的方法,其中所述监督和控制在组件创建期间执行的脚本/代码以及在组件创建之后各个组件执行的调用和交互操作的所述步骤进一步包括: 监督并控制组件对于DOM树的访问,从而禁止直接的DOM树访问; 其中监督并控制对于DOM树的访问的所述步骤进一步包括: 在组件被创建的时候将特定的经覆盖的DOM树节点提供给该组件,所述经覆盖的DOM树节点具有用于操作真实的DOM树节点的一些功能; 禁止组件对其它DOM树节点的访问;以及 在组件需要的时候向其提供其它经覆盖的DOM树节点。
17: 根据权利要求11-13中任一项所述的方法,其中所述监督和控制在组件创建期间执行的脚本/代码以及在组件创建之后各个组件执行的调用和交互操作的所述步骤进一步包括: 监督并控制组件对cookie的访问,从而仅允许组件访问其自己的cookie; 其中监督并控制组件对cookie的访问的所述步骤进一步包括: 检查该组件要访问的cookie是否是该组件自己的cookie; 响应于该组件要访问的cookie是该组件自己的cookie,则允许所述访问;以及 响应于该组件要访问的cookie不是该组件自己的cookie,则拒绝所述访问。
18: 根据权利要求11-13中任一项所述的方法,其中所述监督和控制在组件创建期间执行的脚本/代码以及在组件创建之后各个组件执行的调用和交互操作的所述步骤进一步包括: 在创建组件之前检查组件的脚本/代码,以及检查在组件间传递的脚本/代码,以便从中挑出潜在的恶意代码; 其中所述检查步骤进一步包括: 扫描源代码串以找到匹配的关键字,其中所述关键字指示出可以访问DOM树节点或cookie、与远程服务器进行通信、以及执行脚本的对象和功能,其从包括以下项目的组中选出:“document”、“this”、“XMLHTTPRequest”、“eval”、“window”、“location”、“history”、“parent”、“self”;以及 响应于发现所述关键字,将所述关键字屏蔽。
19: 根据权利要求11-13中任一项所述的方法,其中所述监督和控制在组件创建期间执行的脚本/代码以及在组件创建之后各个组件执行的调用和交互操作的所述步骤进一步包括: 提供一种覆盖的eval功能,其用于替换初始的eval功能,其中所述功能可以将被拆开的串拼凑在一起,从而便于进行检查。
20: 根据权利要求11所述的方法,其中所述方法进一步包括:匹配预定的安全策略以及/或者在出现不安全因素的时候警告用户。

说明书


在未修改浏览器上保护Web应用的跨域交互的方法和系统

    【技术领域】

    本发明一般地涉及Web应用,并且具体而言涉及一种用于在未修改浏览器上保护Web应用的跨域交互的方法和系统。

    背景技术

    现今,在Web应用领域,mashup逐渐成为一种重要的Web应用技术。术语“mashup”指的是一种Web应用,通过该应用可以把来自不止一个源的数据结合到单一集成工具中,从而创建一个新颖和独特的Web服务,而该服务之前没有被任一源所提供。比起单一源的服务和数据,mashup提供了更多价值。Mashup的一个示例是Google Maps。对于企业来说,利用mashup可以实现企业应用与外部应用的结合,以及内部数据与外部数据的结合。

    Mashup是一种创建应用的便利方式,其模糊了开发者和用户之间的界限。通过mashup,用户可以随需地创建其应用。存在几种不同的mashup类型。一些网站可以暴露其JavaScript API(应用编程接口),从而用户可以利用该API来开发强大的应用,例如Google Maps的API。还存在一种更灵活的mashup方式,例如ScissorsHands,其可以从不同web应用中剪切任意HTML、JavaScript和css(Cascading Style Sheets,层叠样式表)代码段,并将它们集成为一个新的应用。除了这些方式之外,还存在一种mashup方法,例如Netvibes、Google、以及Yahoo,其提供一个平台以及被称为widget(窗口小部件)或gadget(小配件)的组件。用户可以把这些组件中的某些或者所有组件一起放在平台上,并且可以在该平台的指导方针下开发新组件。

    Mashup的实现基于某些技术,例如动态HTML、JavaScript以及Ajax。这些技术针对开发更强大的应用和更友好的用户界面提供了很大的灵活性。然而,相应地,这些技术也引发了许多安全问题,其中的主要两种安全问题为:

    1)跨站脚本攻击(Cross‑Site Scripting,XSS)。XSS意味着:恶意攻击者在Web页面里插入恶意HTML代码,当用户浏览该页之时,嵌入其中的HTML代码会被执行,从而达到恶意用户的特殊目的。由此,恶意代码可以盗取系统中存储的cookie、访问受限信息、或者重写页面的一部分。这些攻击可能威胁到用户的隐私以及其它内容提供者的兴趣。

    2)跨站请求伪造(Cross‑Site Request Forgeries,CSRF)。CSRF通过伪装来自受信任用户的请求来利用受信任的网站。当用户登录到一项服务时,其中的恶意代码可以攻击服务器,因为服务器认为该连接是来自于可信的客户端代码。CSRF的常见特性在于:依靠用户标识危害网站;利用网站对用户标识的信任;以及欺骗用户的浏览器发送HTTP请求给目标站点。

    不幸的是,到目前为止,针对上述的mashup安全问题还没有很好的解决方案。具体而言,mashup的混合(hybrid)特性使得Web应用的功能性和安全性具有冲突。Mashup可以采用来自不同主机的代码、数据和内容,从而破坏了基本的web安全模型,所述模型限制浏览器不能在一个页面中访问不同主机。

    当前的浏览器安全机制采取的方式是:要么完全信任,要么完全不信任。也就是说,对于一个域而言,要么完全信任其中的脚本、代码、服务等,要么完全不信任它们。基于对浏览器的限制提出了被称为同源策略(Same‑Origin Policy,SOP)的安全机制。SOP仅允许一个页面访问来自同一域的其它内容。JavaScript对象XMLHttpRequest也在SOP的控制之下。尽管存在某些方法(Ajax代理、动态脚本标签、以及浏览器扩展和插件)可以避免SOP,但是这些方法在带来更多功能性的同时也带来了安全问题。

    出于安全原因,作为默认的mashup模型,Google将每个gadget封装在iFrame中,以便确保某一个gadget中的恶意代码无法攻击其它gadget。但是,该模型同样限制了gadget之间的通信。并且,iFrame对于所传递信息的长度有限制。对于mashup来说,其不便于融合来自各个源的不同应用。

    浏览器扩展和插件的实现很大程度上取决于客户端的操作。客户端的用户可能无法将浏览器扩展和插件正确地安装,或者可能在安装之后破坏其功能。因此,这是一种不可靠的解决方案。

    从上述内容可以看出,在现有技术中,在Web应用的跨域交互方面,还不存在可以同时获得强大的功能以及足够的安全性的解决方案。当前的安全模型导致了这样的情形:如果需要多样的和可扩展的功能,则安全性通常被牺牲。如果避开了SOP,并且允许来自第三方组件的访问,则该访问将能够访问当前域的所有内容。由此,在本领域中存在对于一种方法和系统的需要,其可以在未修改浏览器上保护Web应用的跨域交互,从而同时兼顾功能性和安全性。

    【发明内容】

    在本发明的第一方面中,提出了一种用于在未修改浏览器上保护Web应用的跨域交互的系统,所述系统包括:

    安全框架装置,其中所述安全框架装置由浏览器创建;

    其中,所述安全框架装置进一步包括:

    组件创建器,用于创建来自多个源的组件;以及

    监督模块,用于监督和控制在组件创建期间执行的脚本/代码以及在组件创建之后各个组件执行的调用和交互操作。

    在本发明的第二方面中,提出了一种用于在未修改浏览器上保护Web应用的跨域交互的方法,其中所述Web应用包括来自多个源的多个组件,所述方法包括:

    由浏览器创建安全框架装置;

    由所述安全框架装置创建来自多个源的组件;以及

    由所述安全框架装置监督和控制在组件创建期间执行的脚本/代码以及在组件创建之后各个组件执行的调用和交互操作。

    根据本发明的实施例的所述系统和方法可以禁止来自组件的任意潜在的恶意操作,并且提供安全解决方案来监视和控制这些操作,同时兼顾功能性和安全性。

    【附图说明】

    在附带的权利要求中阐明了被认为是本发明新颖特性的特征。然而,通过参考以下结合附图的说明性实施例的详细描述,将最好地理解本发明本身以及其优选使用模式、另外的目的和优点,在附图中:

    图1描述了根据本发明的一个实施例的一种用于在未修改浏览器上保护Web应用的跨域交互的系统的整体体系结构以及操作方式的示意性框图;

    图2描述了根据本发明的一个实施例的安全框架装置的结构的示意性框图;

    图3描述了根据本发明的一个实施例的单个组件的结构的示意性框图;以及

    图4描述了根据本发明一个实施例的一种用于在未修改浏览器上保护Web应用的跨域交互的方法的示意性流程图。

    需要注意,在全体附图中,相同或相似的标号指代的是相同或相似的单元或组件。

    【具体实施方式】

    在下文中将结合附图对本发明的示范性实施例进行描述。为了清楚和简明起见,在说明书中并未描述实际实现方式的所有特征。然而,应该了解,在开发任何这种实际实施例的过程中必须做出很多实现方式所特定的决定,以便实现开发人员的具体目标,例如符合与系统及业务相关的那些限制条件,其中,这些限制条件会随着实施方式的不同而改变。此外,还应该了解,虽然开发工作有可能是非常复杂和费时的,但对得益于这个公开内容的本领域技术人员来说,这种开发工作仅仅是例行的任务。

    此外,还需要说明的一点是,为了避免因不必要的细节而混淆了本发明,在附图中仅仅示出了与根据本发明的方案密切相关的装置结构和/或处理步骤,而省略了与本发明关系不大的其它细节。

    尽管在本说明书的上下文中以mashup为例来说明本发明的实施例以及应用方式,但是本发明的方案同样适用于其它具有类似特征的、需要在浏览器上执行跨域交互的Web应用。

    参见图1,描述了根据本发明的一个实施例的一种用于在未修改浏览器上保护Web应用的跨域交互的系统的整体体系结构以及操作方式的示意性框图。如图1所示,客户端浏览器100通过网络与具有组件代码/脚本的多个服务器140以及具有安全框架装置源代码的服务器150进行通信,其中所述网络例如可以是因特网或者内联网。根据本发明的一个实施例,当浏览器100准备在其中创建组件时,其首先向具有安全框架装置源代码的服务器150请求安全框架装置的源代码(包括HTML和JavaScript)。在获得源代码之后,浏览器100即时地运行该代码,从而在创建任意组件之前创建安全框架装置110。接着安全框架装置110请求组件清单文件并解析该文件。根据该清单文件,将由安全框架装置110创建各个组件120。由于各个组件来自不同的服务器140,因此安全框架装置110可以基于要创建的组件从相应的服务器140获得该组件的代码/脚本。

    安全框架装置110可以提供监督模块,用于从多个方面监督和控制在组件创建期间执行的脚本和代码以及各个组件120执行的调用和交互操作。例如,安全框架装置110可以将每个组件隔离,限制组件对DOM(Document Object Model,文档对象模型)树节点的访问,监督组件之间的调用,监督浏览器和远程资源之间的通信,以及过滤并覆盖(wrap)潜在危险的对象和功能。所述安全框架装置110还可以被用于匹配预定的安全策略以及/或者在出现不安全因素的时候警告用户。

    为了实现上述目的,安全框架装置110在创建组件之前过滤组件的源代码,以消除或替换危险的关键字,所述关键字可以指示出可以访问DOM树节点或cookie、与远程服务器进行通信、以及执行脚本的对象和功能。并且,安全框架装置110禁用所创建的组件的初始功能,并相应地提供覆盖的代理功能。在组件被创建之后,组件可以使用由安全框架装置110提供的经监督和覆盖的代码功能来实现对其它组件或者外部的访问或调用。

    参见图2描述了根据本发明的一个实施例的安全框架装置110的结构的示意性框图。安全框架装置110与其所创建的多个组件120进行通信,从而监督和控制它们的调用和通信操作。如图所示,安全框架装置110可以包括组件创建器210、组件储存库220、调用代理230、恶意脚本过滤器240、Ajax请求代理250、DOM树代理260、以及cookie代理270。

    为了支持组件之间的通信能力,各个组件应当向其它组件暴露某些功能。然而,如果一个组件可以获得另一组件的实例,则可能存在风险。为了解决这一问题,根据本发明的实施例,所有组件必须由安全框架装置110创建。在创建过程中,安全框架装置110为所创建的每一组件生成一个唯一的随机串,其被称为该组件的权标。安全框架装置110和该组件分别保存该权标作为标识符。此权标用于由安全框架装置110确定组件的身份,从而确保了其它组件无法冒充该组件进行调用。并且对该组件的引用只能被保存在安全框架装置110中,从而只有安全框架装置110才可以调用所述引用。这样,具有恶意代码的组件就无法攻击其它组件。

    组件创建器210用于根据其中的组件清单文件212来创建组件,为所创建的每个组件120生成一个随机串作为该组件的权标,以及将所创建的权标310和安全框架装置引用引擎320放置在组件120中。关于组件120的结构,将在下文中结合图3进行描述。

    在一个组件120被创建之后,它的引用、权标、主机、以及在清单文件212中声明的组件名称被存储在组件储存库220中。当该组件不再有用而被去除时,安全框架装置110将把与其有关的信息从组件储存库220中移除。

    为了支持组件之间的合法通信能力,安全框架装置110提供了调用代理230,用于监视并控制组件之间进行的外部调用。调用代理230可以检查组件进行的调用是否合法。如果否,则调用代理230可以拒绝该调用。

    当调用代理230从一组件120接收到调用时,它首先通过权标来认证调用者,然后通过调用代理230中的安全检查器232来检查安全策略233(安全策略233保存在安全检查器232中),以及决定是否允许该调用。如果该调用提供的调用参数合法,则允许该调用。接着调用代理230从组件储存库220中定位被调用者,从而进行调用的组件可以执行其调用功能。如果该调用提供的调用参数不合法,或者该调用不符合安全策略233,则拒绝该调用,并且可选地可以通知用户。

    调用代理230的功能例如可以具有这样的格式:

    function invoke(/*String*/caller_identifier,/*String*/target_componet,/*String*/function_name,/*Arrays*/parameters)

    该功能具有四个参数:具有串格式的调用者标识符(权标)、目标组件、要调用的功能名称、以及具有阵列格式的其它参数。基于此调用代理230,组件可以在安全框架装置110的监督下进行调用和通信。

    注意,在某些情形中,用于调用其它组件功能的HTML标签的脚本是由开发者事先编写的,例如onclick=”component.execute()”,该脚本在编写时并不知道某些参数(例如权标)的值。为了解决此问题,开发者可以用一个占位符来替换该参数,而当组件被创建时,由安全框架装置110用真实的参数值来替换该占位符。

    Ajax请求代理250用于监督并控制组件120的Ajax请求,从而禁止直接的跨站Ajax请求。Ajax请求代理250可以检查组件的脚本,以过滤“XMLHTTPRequest”关键字,从而使得组件无法通过XMLHTTPRequest对象直接发送Ajax请求,从而仅允许组件120访问其自己的主机。当一个组件启动Ajax请求时,Ajax请求代理250可以检查该请求中的目标主机是否是该组件所属的主机,即,组件与该主机属于相同域。如果是,则该Ajax请求可以被允许。如果否,则禁止该请求的发送。所述检查机制类似于对于在组件之间的通信的检查。

    另外,与攻击JavaScript对象相比,直接攻击页面文档是一种更流行的方法。在现有技术的Web应用交互中,恶意代码可以从DOM树盗取信息,以及甚至重写DOM树的某些节点。JavaScript脚本可以通过document对象或DOM树中的其它节点来访问DOM树。而实际上,JavaScript必须通过document对象或者HTML标签中的this对象来获得DOM树的节点。从而,安全框架装置110提供了DOM树代理260,用于监督并控制组件对于DOM树的访问。

    DOM树代理260用于监督并控制组件对于DOM树的访问,从而禁止直接的DOM树访问。DOM树代理260可以在组件被创建的时候根据组件的要求将某些经覆盖的DOM树节点提供给该组件,同时禁止组件对其它DOM树节点的访问,并且在组件需要的时候向其提供其它经覆盖的DOM树节点。所述经覆盖的DOM树节点具有用于操作真实的DOM树节点的某些功能。所述代理260将监视组件对于DOM树节点的访问,从而禁止了组件直接对DOM树的访问,以便将该访问限制在该组件所在的域中。

    注意,由于向组件提供的节点是经覆盖的节点,组件根本无法获得真实节点。其原因在于,只要组件能够访问真实的DOM树节点,它将可以遍历整个DOM树中的任意其它节点。除了使用DOM树代理260来获得覆盖DOM节点之外,组件还可以在其源节点中声明需要某些预先覆盖的DOM节点,从而安全框架装置110将在组件的创建期间将这些覆盖节点提供给组件作为组件的私有参数。这样,组件可以在无需向DOM树代理260检索这些节点的情况下操作这些节点。进一步地,根据本发明的实施例,由于所有组件是由安全框架装置110所创建,所以安全框架装置110可以扫描组件的脚本和HTML代码,并且将潜在危险的关键字(例如document、this)清除,或者在发现这些关键字之后通知用户。

    Cookie代理270监视并控制组件对cookie的访问,从而仅允许组件访问其自己的cookie。由于安全框架装置110需要过滤document对象,组件无法直接访问cookie对象。类似于DOM树代理260,cookie代理270可以监督组件对cookie的访问,从而确保组件仅可以访问其自己的cookie。Cookie代理270还可以用于检查网络钓鱼(phishing)链接。网络钓鱼是指:以电子邮件、伪装金融机构网页、间谍软件等方式诈骗用户的个人信息,意图引诱用户给出敏感信息(如用户名、口令、帐号ID、ATM PIN码或信用卡详细信息等),从而利用偷来的信息假冒用户身份。

    恶意脚本过滤器240用于在组件创建器210创建组件之前检查组件的脚本/代码,以及检查在组件间传递的脚本、HTML、CSS代码,以便从中挑出潜在的恶意代码。所述检查是通过扫描源代码串以找到匹配的关键字。所述关键字可以指示出可以访问DOM树节点或cookie、与远程服务器进行通信、以及执行脚本的对象和功能。所述关键字包括但不限于:“document”、“this”、“XMLHTTPRequest”、“eval”、“window”、“location”、“history”、“parent”、“self”。如果发现所述关键字,则将所述关键字屏蔽,或者可选地通知用户。

    以下是关于过滤“eval”关键字的原因。包括本发明的实施例在内,一些安全机制的实现基于过滤某些关键字。然而,通过使用eval功能可以避开过滤。例如,eval功能可以将关键字“document”拆成“do”+“cument”,从而通常的安全机制的过滤功能将失效。因此,从安全的角度考虑,eval功能是一种很危险的功能。由此,恶意脚本过滤器240可以扫描用于创建组件的脚本和HTML代码以及组件所传递的脚本和代码。当发现“eval”关键字时,将其屏蔽。可替换地,在本发明的另一实施例中,可以提供一种覆盖的eval功能,其用于替换初始的eval功能,例如“framework.eval”。该功能可以将被拆开的串拼凑在一起,从而便于恶意脚本过滤器240进行检查。

    在上述五种代理组件中,调用代理230、DOM树代理260、Cookie代理270解决了XSS风险,Ajax请求代理250去除了CSRF风险,以及恶意脚本过滤器240确保这些安全机制不会被避开。总之,根据本发明的实施例的所述系统可以禁止来自组件的任意潜在的恶意操作,并且提供安全解决方案来监视和控制这些操作。

    以上是对于根据本发明一个实施例的安全框架装置110的结构的具体描述。以下将参考图3描述了根据本发明的一个实施例的单个组件120的结构的示意性框图。组件120类似于gadget或widget,其是独立的功能单元。组件120可以包含某些HTML段、脚本和css。不同平台可以具有不同组件开发指导原则。一般而言,HTML和CSS描述组件的用户界面,而脚本保存组件的业务逻辑。组件120可以包括组件权标310、安全框架装置引用引擎320、以及一些覆盖DOM节点330。权标310是由安全框架装置110(图1)在创建该组件120的时候所生成的一个随机标识符,其被用于由安全框架装置110认证调用者(组件)的身份,从而确保了其它组件无法冒充该组件进行调用。即,当该组件120想要执行调用时,需要提供它的权标310,安全框架装置110将通过该权标310来验证进行调用的组件是否是合法的组件。

    安全框架装置引用引擎320与安全框架装置110相交互,用于监视和控制组件120的调用和通信,例如调用其它组件、访问DOM节点、对所属主机提出Ajax请求、访问cookie、以及某些其它功能。覆盖DOM节点330对应于系统的DOM树340中与该组件120对应的DOM子树350中的特定DOM节点,所述DOM节点具有用于操作真实的DOM节点的某些功能。这些特定DOM节点330是该组件所需的,其用于由组件120进行操作,且组件120仅可以操作这些对应的DOM节点。如果组件120需要对DOM树中的另一其它DOM节点进行操作,它需要向安全框架装置110请求获得与该节点相对应的覆盖DOM节点330,从而在获得安全框架装置110许可的情况下,组件120可以操作该DOM节点。组件对于DOM树节点的访问也将被监视,从而禁止了组件直接对DOM树的访问,以便将该访问限制在该组件所在的域中。

    以上参考附图说明了描述了根据本发明的一个实施例的一种用于在未修改浏览器上保护Web应用的跨域交互的系统。在同一发明构思下,还提出了根据本发明一个实施例的一种用于在未修改浏览器上保护Web应用的跨域交互的方法。

    图4描述了根据本发明一个实施例的一种用于在未修改浏览器上保护Web应用的跨域交互的方法的示意性流程图。所述Web应用可以包括来自多个源的多个组件。如图4所示,在框410,由浏览器创建安全框架装置。具体而言,所述创建步骤进一步包括:由浏览器向具有安全框架装置源代码的服务器请求安全框架装置的源代码;以及即时地运行所述源代码以创建所述安全框架装置。

    在安全框架装置被成功创建之后,在框420,由所述安全框架装置创建来自多个源的组件。具体而言,所述创建步骤进一步包括:基于要创建的组件从相应的服务器获得该组件的脚本/代码;为所创建的每个组件生成一个随机串作为该组件的权标,所述权标用于由所述安全框架装置确定组件的身份;将所创建的权标和一个安全框架装置引用引擎放置在组件中;以及在所述安全框架装置中存储所创建的每个组件的引用、权标、主机、以及组件名称。并且,在创建组件之前,所述安全框架可以通过其提供的监督机制来检查组件的脚本/代码,以便从中挑出潜在的恶意代码,其中所述检查进一步包括:扫描源代码串以找到匹配的关键字,其中所述关键字可以指示出可以访问DOM树节点或cookie、与远程服务器进行通信、以及执行脚本的对象和功能,其包括但不限于:“document”、“this”、“XMLHTTPRequest”、“eval”、“window”、“location”、“history”、“parent”、“self”;以及响应于发现所述关键字,将所述关键字屏蔽。

    在框430,由所述安全框架装置提供一种监督机制,用于监督和控制在组件创建期间执行的脚本/代码以及在组件创建之后各个组件执行的调用和交互操作。所述安全框架装置可以被用于匹配预定的安全策略以及/或者在出现不安全因素的时候警告用户。具体而言,所述监督机制可以进一步包括以下:

    框440:监视并控制组件之间进行的外部调用,其中所述监督并控制进一步包括:对由进行调用的组件提供的参数进行验证,所述参数包括调用者权标、目标组件、要调用的功能名称;响应于所述参数合法,允许所述组件执行调用;以及响应于所述参数不合法,拒绝所述调用。

    框450:监督并控制组件的Ajax请求,从而禁止直接的跨站Ajax请求,其中所述监督并控制进一步包括:检查所述Ajax请求中的目标主机是否是该组件所属的主机;响应于所述目标主机是该组件所属的主机,则允许所述Ajax请求;以及响应于所述目标主机不是该组件所属的主机,则拒绝所述Ajax请求。

    框460:监督并控制组件对于DOM树的访问,从而禁止直接的DOM树访问,其中所述监督并控制进一步包括:在组件被创建的时候将特定的经覆盖的DOM树节点提供给该组件,所述经覆盖的DOM树节点具有用于操作真实的DOM树节点的一些功能;禁止组件对其它DOM树节点的访问;以及在组件需要的时候向其提供其它经覆盖的DOM树节点。

    框470:监督并控制组件对cookie的访问,从而仅允许组件访问其自己的cookie,其中所述监督并控制进一步包括:检查该组件要访问的cookie是否是该组件自己的cookie;响应于该组件要访问的cookie是该组件自己的cookie,则允许所述访问;以及响应于该组件要访问的cookie不是该组件自己的cookie,则拒绝所述访问。

    此外,所述监督机制可以进一步包括这样的功能:在创建组件之前检查组件的脚本/代码,以及检查在组件间传递的脚本/代码,以便从中挑出潜在的恶意代码,其中所述检查进一步包括:扫描源代码串以找到匹配的关键字,其中所述关键字可以指示出可以访问DOM树节点或cookie、与远程服务器进行通信、以及执行脚本的对象和功能,其包括但不限于:“document”、“this”、“XMLHTTPRequest”、“eval”、“window”、“location”、“history”、“parent”、“self”;以及响应于发现所述关键字,将所述关键字屏蔽。

    并且,所述监督机制还可以进一步包括:提供一种覆盖的eval功能,其用于替换初始的eval功能,其中所述功能可以将被拆开的串拼凑在一起,从而便于进行检查。

    以上详细描述了根据本发明一个实施例的一种用于在未修改浏览器上保护Web应用的跨域交互的系统和方法。如本领域普通技术人员可以了解的,本发明可以体现为方法、系统和/或计算机程序产品。因此,本发明可以呈现为完全硬件实施形式、完全软件实施形式或者软件和硬件组合实施形式。此外,本发明可以被呈现为在机器可读媒体上包括的计算机程序产品,机器可读媒体上存储了用于对计算机系统进行编程以执行根据本发明的过程的机器可执行程序指令。这里所使用的术语“机器可读媒体”包括向计算机系统提供用于执行的指令的任意媒体。这种媒体可以采用多种形式,包括但是不局限于:非易失性媒体、易失性媒体和传输媒体。非易失性媒体的常见形式例如包括软盘、软磁盘、硬盘、磁带或者任何其它磁媒体、光盘ROM(CD‑ROM)或者任何其它光媒体、打孔卡或者任何其它带有孔图案的物理媒体、可编程ROM(PROM)、可擦写PROM(EPROM)、电EPROM(EEPROM)、闪速存储器、任何其它存储芯片或者盒式磁带(cartridge)、或者计算机系统可以读取并适合存储指令的任何其它媒体。

    适于存储和/或执行程序代码的数据处理系统将包括:直接地或通过系统总线间接地耦合于存储器单元的至少一个处理器。存储器单元可以包括在程序代码的实际执行期间使用的局部存储器、海量存储装置、以及高速缓冲存储器,该高速缓冲存储器提供了至少某种程序代码的临时存储以便减少在执行期间必须从海量存储装置检索代码的次数。

    此外,可以理解,方框图和/或流程图中的每个方框以及方框图和流程图中的一些方框的组合可以用一些计算机程序指令实现。这些计算机程序指令可以提供给一通用计算机、专用计算机或其它可编程数据处理设备的处理器以产生一机器,使得这些指令通过计算机或其它可编程数据处理设备的处理器的执行创建用于实现在方框图和/或流程图内或者方框内所指定的功能的装置。

    尽管已经参考优选实施例具体地示出并描述了本发明,但其不是为了以公开的形式穷举或限制本发明。对于本领域的普通技术人员,可以在形式上和细节上进行各种改变而不会背离本发明的精神和范围。选择并描述了实施例是为了最好地解释本发明的原理和实际的应用,以及为了使本领域的其它普通技术人员能够理解对于各种实施例的本发明,所述实施例具有适合于预期的具体使用的各种修改。

    

在未修改浏览器上保护WEB应用的跨域交互的方法和系统.pdf_第1页
第1页 / 共16页
在未修改浏览器上保护WEB应用的跨域交互的方法和系统.pdf_第2页
第2页 / 共16页
在未修改浏览器上保护WEB应用的跨域交互的方法和系统.pdf_第3页
第3页 / 共16页
点击查看更多>>
资源描述

《在未修改浏览器上保护WEB应用的跨域交互的方法和系统.pdf》由会员分享,可在线阅读,更多相关《在未修改浏览器上保护WEB应用的跨域交互的方法和系统.pdf(16页珍藏版)》请在专利查询网上搜索。

提供了一种用于在未修改浏览器上保护Web应用的跨域交互的系统和方法。所述系统包括:安全框架装置,其中所述安全框架装置由浏览器创建;其中,所述安全框架装置进一步包括:组件创建器,用于创建来自多个源的组件;以及监督模块,用于监督和控制在组件创建期间执行的脚本/代码以及在组件创建之后各个组件执行的调用和交互操作。根据本发明的实施例的所述系统和方法可以禁止来自组件的任意潜在的恶意操作,并且提供安全解决方案。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1