首页> 中国专利> 动态内容中的跨站点脚本阻止

动态内容中的跨站点脚本阻止

摘要

实施例涉及用于在内容传递系统中抑制跨站点脚本的系统方法以及计算机存储介质。接收对于包括一个或数个脚本项的内容的请求。在内容内识别脚本项。在脚本元素是期望与内容相关联的脚本元素时,将标识与脚本元素相关联。标识可以是基于哈希函数和脚本项的哈希值。在把内容传送给用户以前,再次识别脚本项以确定标识是否与脚本项相关联。如果标识与脚本项相关联,则评估标识以确定标识是否适当。当确定标识不适当时,阻止把脚本项传送给用户。

著录项

  • 公开/公告号CN102368257A

    专利类型发明专利

  • 公开/公告日2012-03-07

    原文格式PDF

  • 申请/专利权人 微软公司;

    申请/专利号CN201110296644.6

  • 申请日2011-09-30

  • 分类号G06F17/30(20060101);G06F21/00(20060101);

  • 代理机构72001 中国专利代理(香港)有限公司;

  • 代理人董宁;刘鹏

  • 地址 美国华盛顿州

  • 入库时间 2023-12-18 04:30:08

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2015-07-01

    专利权的转移 IPC(主分类):G06F17/30 变更前: 变更后: 登记生效日:20150612 申请日:20110930

    专利申请权、专利权的转移

  • 2015-04-08

    授权

    授权

  • 2012-04-18

    实质审查的生效 IPC(主分类):G06F17/30 申请日:20110930

    实质审查的生效

  • 2012-03-07

    公开

    公开

说明书

背景技术

传统上,跨站点脚本是互联网可访问内容内发现的安全漏洞。第三方可以利用跨站点脚本漏洞获取个人数据或者诱骗末端用户执行恶意动作。例如,可以利用跨站点脚本漏洞窃取末端用户的互联网资料(cookie),这可能允许第三方访问与互联网资料相关联的末端用户账户。类似地,跨站点脚本漏洞可能允许第三方诱骗末端用户访问或传播恶意软件。

先前,通过清洁可能含有可以传送给末端用户的编码内容的内容部分地阻止了跨站点脚本。不幸地,清洁过程只提供对于已知存在或已知潜在存在的这些漏洞的缓解。如果第三方在编码互联网内容之前识别新漏洞以及利用该漏洞,则末端用户可能沦为跨站点脚本攻击的受害者。

发明内容

本发明的实施例涉及用于识别用户请求的内容内的脚本项的计算机存储介质、方法、以及系统。可以执行脚本项的识别以对脚本项应用唯一标识和/或以确定与脚本项相关联的唯一标识是否适当。可以使用标识识别内容内的授权脚本元素以及与未授权脚本元素区分。本发明的实施例构思了至少部分地根据脚本元素的元素内容的哈希函数确定的标识。当确定标识适当时,可以把脚本项传送给用户。然而,当确定标识并不适当时,可以阻止把脚本项传送给用户。

提供此发明内容以介绍下面在具体实施方式中进一步描述的简化形式的概念的选择。此发明内容并非意在识别要求保护主题的必要特征或关键特征,它也并非意在用作协助确定要求保护主题的范围。

附图说明

下面参照经引用并入本文的附图详细描述本发明的示例性实施例,在附图中:

图1描绘了适合实施本发明实施例的示范性运算设备;

图2描绘了示例了可以采用本发明实施例的示范性系统的方框图;

图3描绘了按照本发明实施例的、用于在内容传递系统中抑制跨站点脚本的示范性方法的流程图;

图4描绘了按照本发明实施例的、用于在内容传递系统中采用哈希函数确定脚本项不正确的方法的流程图;以及

图5描绘了按照本发明实施例的、用于阻止跨站点脚本攻击的方法的流程图。

具体实施方式

在本文中以具体性描述本发明实施例的主题以符合法定需求。然而,描述本身并非意在限制本专利的范围。而是,发明人构思了也可以通过其它方式实施要求保护的主题,以结合其它目前或未来技术,包括与本文件中描述的步骤类似的步骤的组合或不同步骤。

本发明的实施例涉及用于识别用户请求的内容内的脚本项的计算机存储介质、方法、以及系统。可以执行脚本项的识别以对脚本项应用唯一标识和/或以确定与脚本项相关联的唯一标识是否适当。可以使用标识识别内容内的授权脚本元素以及与未授权脚本元素区分。本发明的实施例构思了至少部分地根据脚本元素的元素内容的哈希函数确定的标识。当确定标识适当时,可以把脚本项传送给用户。然而,当确定标识并不适当时,可以阻止把脚本项传送给用户。

相应地,在一个方面中,本发明提供了采用处理器和存储器的运算环境中的方法,用于在内容传递系统中抑制跨站点脚本。方法包括识别用户请求的内容内的脚本项。方法还包括确定脚本项包括标识。能够使用标识识别内容内的未授权脚本元素。方法还包括确定标识是否是适当标识。当确定标识适当时,把脚本项传送给用户。进一步地,当确定标识并不适当时,可以阻止把脚本项传送给用户。

在另一方面中,本发明提供了计算机存储介质,具有其上实施的计算机可执行指令,当通过具有处理器和存储器的运算系统执行该计算机可执行指令时,使得运算系统执行方法。方法包括从用户接收内容的请求。方法还包括确定内容脚本项的第一哈希值。第一哈希值基于哈希函数和脚本项。方法还包括把第一哈希值应用于脚本项。进一步地,方法包括确定脚本项的第二哈希值。可以在紧接把脚本项传送给用户以前确定第二哈希值。第二哈希值基于哈希函数和脚本项。方法还包括基于第一哈希值和第二哈希值确定脚本项并不正确。例如,第一哈希值和第二哈希值可能缺少指定的彼此关系。

本发明的第三方面提供了方法。方法包括从用户接收对标记语言内容的标记语言请求,通过与运算系统相关联的服务器提供标记语言内容。响应于接收标记语言请求,方法包括生成唯一标识。额外地,方法包括在标记语言内容内识别第一脚本项。方法还包括把唯一标识关联到第一脚本项。在把内容传送给用户以前,方法包括识别要向用户传送的一个或更多个脚本项,其中,一个或更多个脚本项包括第一脚本项。进一步地,方法包括确定一个或更多个脚本项的第二脚本项未与唯一标识相关联。另外,方法包括阻止第二脚本项向用户的传送。额外地,方法包括在把第一标识传送给用户以前去除第一脚本项与唯一标识之间的关联。方法还包括把第一脚本项传送给用户。

简要描述了本发明实施例的概况,下面描述用于实施其实施例的示范性操作环境。

总体上参照附图、以及特别地初始参照图1,示出了的适合实施本发明实施例的示范性操作环境,总体上指示为运算设备100。运算设备100只是合适运算环境的一个实例,并非意在建议对于本发明功能性或使用范围的任何限制。也不应当把运算设备100解释成具有与示例的模块/组件中的任何一个或组合有关的任何依赖性或要求。

可以在包括计算机或其它机器(如,个人数据助理或其它手持设备)执行的诸如程序模块的计算机可执行指令在内的机器可用指令或计算机代码的总体上下文描述实施例。通常,包括例程、程序、对象、模块、数据结构等的程序模块是指执行特定任务或者实施特定抽象数据类型的代码。可以在包括手持设备、消费类电子产品、通用计算机、专业运算设备、分布式运算环境、服务器、客户端侧计算机等的各种系统配置中实践实施例。也可以在通过通信网络链接的远程处理设备执行任务的分布式运算环境中如先前所提到的实践实施例。

继续参照图1,运算设备100包括直接或间接耦合以下设备的总线110:存储器112、一个或更多个处理器114、一个或更多个呈现模块116、输入/输出(I/O)端口118、I/O模块120、以及示例性电源122。总线110代表可以是一个或更多个总线(如,地址总线、数据总线、或者其组合)的内容。虽然为了清楚起见用线示出了图1的各种框,但现实中,勾画各种模块并非如此清楚,比方说,线将会更准确地是灰色和模糊的。例如,可以认为诸如显示设备的呈现模块是I/O模块。另外,处理器具有存储器。本发明人在此认识到了这种是本领域的本质,重申图1的图仅示例可以结合一个或更多个实施例使用的示范性运算设备。在诸如“工作站”、“服务器”、“膝上型电脑”、“手持设备”等之间不做区别,因为它们全部在图1的范围内构思到并表示为“计算机”或“运算设备”。

运算设备100典型地包括各种计算机可读介质。通过实例而非限制的方式,计算机可读介质可以包括随机存取存储器(RAM);只读存储器(ROM);电可擦除可编程只读存储器(EEPROM)‘闪存或其它存储器技术;CDROM、数字多动能盘(DVD)或者其它光学或全息介质;磁盒、磁带、磁盘存储或其它磁存储设备、或者可以用来编码期望的信息以及可以通过运算设备100访问的任何其它非临时性介质。

存储器112包括易失性和/或非易失性存储器形式的计算机存储介质。存储器可以可移除、不可移除、或者其组合。示范性硬件设备包括固态存储器、硬盘驱动器、光盘驱动器等。运算设备100包括从诸如存储器112或I/O模块120的各种实体读取数据的一个或更多个处理器。呈现模块116向用户或其它设备呈现数据指示。示范性呈现模块包括显示设备、扬声器、打印模块、振动模块等。I/O端口118允许运算设备100在逻辑上耦合到包括其中的一些可以内置的I/O模块120的其它设备。示例性模块包括麦克风、操纵杆、游戏手柄、碟形卫星天线、扫描仪、打印机、无线设备等。

参照图2,提供了示出了可以采用本发明实施例的示范性系统200的方框图。应当理解只作为实例叙述本文中描述的这个和其它布置。除了示出的这些,可以另外或替代地使用其它布置和元素(例如,机器、角色、服务、过程、接口、功能、次序、以及功能的分组等),可以一起略去一些元素。进一步地本文中描述的元素中的许多元素是可以作为离散或分布式组件或者结合其它组件、以及在任何合适组合和地点中实施的功能实体。可以通过硬件、固件、和/或软件执行本文中描述为由一个或更多个实体执行的各种功能。例如,可以通过处理器执行存储器中存储的指令执行各种功能。

在未示出的其它组件之中,系统200可以包括用户运算设备202、注入运算设备203、以及服务器206。图2中示出的组件中的每个组件可以是任何类型的运算设备,如,例如参照图1描述的运算设备100。组件可以经由可以非限制性地包括一个或更多个局域网(LAN)和/或广域网(WAN)的网络204彼此通信。这种组网环境在办公室、企业范围计算机网络、内部网、以及互联网中是司空见惯的。应当理解可以在仍然在本发明范围内的情况下在系统200内采用任何数量的用户运算设备、注入运算设备、服务器、以及网络。额外地,系统200内还可以包括未示出的其它组件。

相应地,可以采用任何数量的组件/设备取得本发明实施例范围内的期望功能性。虽然为了清楚起见用线示出了图2的各种组件,但现实中,勾画各种组件并非如此清楚,比方说,线将会更准确地是灰色或模糊的。进一步地,虽然把图2的一些组件描绘成单个框,但描绘在本质上和数量上是示范性的,而不应该解释成限制性的。

用户运算设备202是用户可用的运算设备。例如,用户运算设备202可以是能够访问网络204的任何类型的个人计算机、膝上型计算机、平板电脑、移动设备等。

类似地,注入运算设备203是用户或另一机器可用的运算设备。例如,注入运算设备203可以是能够访问网络204的任何类型的个人计算机、膝上型计算机、平板电脑、移动设备等。

如将会在下文中更详细讨论的,服务器206是能够通过网络204向用户运算设备202提供内容的运算设备。应当理解,虽然在本文中总体上把服务器206描述成具有离散属性和组件的有形设备,但服务器206可以相反是分布在网络204(或类似网络)上的具有多个处理器、存储器设备、以及其它软件、固件、以及组件的分布式运算系统。因此,服务器206可以包括用以执行本文中描述的功能的一个或更多个服务器(即,运算设备)。

可以组合或单独使用用户运算设备202、注入运算设备203、网络204、以及服务器206,使得跨站点脚本攻击出现以及以便减轻同样的攻击。通常把跨站点脚本攻击表征为非持续性攻击或者替代地表征为持续性攻击。

传统上,跨站点脚本攻击利用允许攻击者绕过运算设备和/或软件在网络内容上通常施加的客户端侧安全机制的漏洞。恶意脚本向网页中的注入允许攻击者可以获得对代表用户维护的敏感页面内容、会话资料和其它信息的提升访问权限。

在服务器侧脚本立即使用可以作为HTTP查询参数或HTML形式提交的网络客户端提供的数据对于该用户生成结果的页面,而不首先清洁响应时,出现非持续性(也称作反映性)跨站点脚本漏洞。因为HTML文档典型地是把控制语句、格式化、以及实际内容合并到公共文档中的串行结构,所以没有正确HTML编码的情况下所得页面中包括的任何非验证用户提供的数据可能导致跨站点脚本注入。非持续性跨站点脚本漏洞的经典实例包括搜索者搜索字符串的搜索引擎站点,典型地将会在结果页面上逐字重新显示搜索字符串以表明原始搜索查询。如果搜索查询是跨站点脚本攻击以及搜索引擎响应未正确地规避或拒绝HTML控制字符,则跨站点脚本缺陷可能随着在搜索结果的呈现而出现。虽然用户典型地不会故意把他们自身暴露于跨站点脚本差错,但第三方可以在用户访问的页面内提供欺骗链接或隐藏框以使得用户的浏览器自动导航到薄弱站点上的URL。

非持续性跨站点脚本攻击场景可能如下面这样出现。Alice采用用户运算设备202访问Bob在服务器206上主管的特定因特网站点。Bob的网站允许Alice通过用户名和密码登录。Bob的网站随后存储诸如Alice的金融账户信息的信息。Mallory注意到Bob的网站含有反映性(非持续性)跨站点脚本漏洞。Mallory生成用以利用Bob的网站中漏洞的统一资源定位符(URL)。Mallory采用注入运算设备203向Alice发送包括URL的电子邮件(或其它通信)。URL将会指向Bob的网站,但是将会含有Bob的网站将会反映的Mallory的恶意代码。Alice将会在登录到Bob的网站的时候访问Mallory提供的URL。对于Alice不幸的是,URL中嵌入的恶意脚本如同脚本直接来自Bob的网站一样(这是跨站点脚本漏洞)在Alice的浏览器中执行。随后可以使用该脚本把Alice的会话资料发送给Mallory。Mallory可以随后使用会话资料在没有Alice的知识的情况下窃取Bob的网站处维护的Alice的敏感信息(例如,认证证书、计费信息等)。

在攻击者提供的数据通过服务器保存以及随后在浏览的正规过程中向其它用户提供的“正常”页面上显示时出现称作持续性(或存储性)的第二个类型跨站点脚本漏洞。持续性漏洞的经典实例包括允许用户张贴HTML格式化消息以便其它用户阅读的在线留言板。在HTML格式化帖子包括用户的浏览器能够执行的脚本时出现漏洞。虽然在一些实例中这可以通过正确HTML规避以阻止执行脚本(或者组织浏览器将脚本辨识成脚本而非仅文本)来避免,但不是所有具有持续性跨站点脚本漏洞的站点都可以实施正确HTML规避。

持续性攻击可能如以下实例中所讨论的出现。再次采用注入运算设备203的Mallory向服务器206主管的社交网络张贴具有恶意载荷的消息。再次采用用户运算设备202的Alice阅读由服务器206服务并由Mallory张贴的消息。在阅读Mallory张贴的消息后,Alice的浏览器执行看上去是由服务器206主管的社交网络站点提供的恶意脚本。恶意脚本是窃取社交网络的Alice资料的跨站点脚本攻击。因此,Mallory可以访问和采用Alice的会话在社交网络站点上假扮Alice。

额外地,构思了系统200适合用于阻止用户请求的内容内注入的任何外来恶意内容的分发。例如,可以采用本文中讨论的采用系统200的一个或更多个组件的技术阻止注入内容与中间人(“MintM”)的通信。例如,MintM攻击可能涉及第三方(例如,注入运算设备203)拦截第一方(例如,用户运算设备202)与第二方(例如,服务器206)之间通信。第三方可以监测和/或修改从第二方(或第一方)向其它目的方传送的内容。作为结果,第三方可以利用此漏洞插入一个或更多个未授权对象(例如,脚本项)。在示范性实施例中,构思了可以采用本文中讨论的实施例阻止总体上说是未授权对象的传播,具体地说是阻止MintM攻击。其它攻击场景构思成通过本文中讨论的技术压制。

参照图2,服务器206包括处理器208、存储器210、脚本辨识组件212、标识生成组件214、标识评估组件216、脚本告警组件218、查找表组件220、脚本阻止组件222、以及通信组件224。要理解可以在仍然在本发明范围内的情况下通过服务器206实施额外组件或较少组件。进一步地,构思了通过硬件、软件、固件、或者组合实施服务器206的组件。额外地,构思了可以通过来自服务器206一个或更多个其它组件的独立资源实施服务器206的组件中的一个或更多个组件。此外,构思了服务器206的组件中的一个或更多个组件至少部分地采用处理器208和/或存储器210执行本文中讨论的一个或更多个功能性。

脚本辨识组件212识别用户请求的内容内的脚本项。脚本项是可以使得运算设备执行动作的计算机可读代码。脚本项的实例包括但不限于可执行脚本、事件句柄、对象标签、HTML代码等。脚本项既被有意地包括在内容内,也被恶意地包括在要向用户传送的内容内。在一个方面中,脚本辨识组件212识别(例如,辨识)请求的内容内一个或更多个特定类型的脚本项。例如,脚本辨识组件212可以识别用户请求的内容内的所有事件句柄、或者所有对象标签、或者甚至某个(或所有)HTML代码、或者任何组合。类似地,构思了脚本辨识组件212能够识别有意地包括的脚本项或者也识别恶意地(例如,不适当地)包括的脚本项。

脚本辨识组件212可以采用把已知要使用或者预期要使用的已知字符组合与脚本项匹配的技术识别脚本项。脚本辨识组件212的额外方面可以基于与用户请求的内容内要识别的脚本项相关联的已知语法或预期语法工作。又进一步地,构思了脚本辨识组件212可以作为处理可以向用户传送的内容的虚拟或实际浏览器型引擎操作。其中,脚本辨识组件212内的处理暴露一个或更多个脚本项。在本文中构思了识别脚本项的其它方法。

标识生成组件214生成要与脚本项和/或请求一起使用的标识。标识可以是可以识别或报告特定脚本项、请求、一系列脚本项等的唯一字符或字符组合。例如,构思了对于来自用户的接收的内容请求生成标识。可以随后把标识与到来的请求相关联以唯一地识别请求和要响应于请求提供的任何内容。因此,用于唯一地识别到来请求的先前生成的标识可以一直维持来唯一地识别想要响应于请求传送的内容,如,脚本项。额外地,构思了可以对于相关联的信息(例如,作为整体或特定部分的内容)生成作为对内容或者内容的一部分(例如,脚本项)唯一的哈希值的标识。将会在下文中针对图4更详细地讨论采用哈希值。进一步地,构思了标识生成组件214随机生成标识。

标识评估组件216评估与请求的内容、脚本项、请求等相关联的标识。例如,评估可以与脚本项相关联的一个或更多个标识以确信脚本项是否适当。适当脚本项(将会在下文中更详细讨论)是内容的提供者想要向请求用户提供的脚本项。这与典型地由第三方通过恶意或不期望意图提供的不适当脚本内容相对。可以使用不适当脚本项来利用跨站点脚本漏洞。

标识评估组件216可以评估如脚本辨识组件212所辨识的脚本项相关联的标识。标识评估组件216执行的评估可以包括参考查找表组件220维护的查找表(在下文中讨论)。类似地,标识评估组件216可以执行通过脚本项所辨识的标识与标识生成组件214所生成的另一标识之间的比较,以确保两个比较的标识之间的一致性。例如,如果通过脚本项辨识的标识是基于函数的,如,哈希值,则可以生成确认哈希值并随后与辨识的哈希值比较,以确定未被改变或者其他方式操控脚本项。进一步地,构思了标识评估组件216可以仅评估是否甚至与内容的一部分存在表示。又进一步地,构思了标识评估组件216与相应请求相比较评估辨识的标识。

脚本告警组件218在识别内容的不适当或者其他不期望部分时向一个或更多个实体提供通知。例如,如果确定脚本项利用跨站点脚本漏洞,则脚本告警组件218可以结合通信组件224工作以通知服务器206的管理员或者与漏洞相关联的内容的管理员。类似地,构思了脚本告警组件218向请求用户提供关于请求的内容包括可能是不适当的脚本项的通知。可以采用通信组件224发送电子通信或者向内容中注入或插入通知或者通过用户运算设备202显示,来提供通知。例如,构思了通知可以是用户运算设备202上的浏览器可读取的消息,以允许浏览器基于要接收的内容调整向用户提供的保护。这只是脚本告警组件218可以提供的通知的几个实例。

查找表组件220提供含有用于识别适当内容部分的表的查找表。例如,构思了维护具有哈希值函数与一个或更多个脚本项的哈希值之间的相关性的表。类似地,构思了维护包括脚本项一个或更多个标识的表。进一步地,查找表组件220可以包括可以向其分配标识的期望脚本项的列表。进一步地,查找表组件220可以包括用以列出标识评估组件216先前识别成不适当的一个或更多个脚本项的表,以便一个或更多个实体在试图识别利用的漏洞时使用。进一步地,查找表组件220可以包括具有标识生成组件214可以用来生成标识的一个或更多个哈希函数的表。

脚本阻止组件222调整要向用户传送的内容。例如,脚本阻止组件222可以在脚本项被识别成了不适当时从内容中去除该脚本项。在另一方面,脚本阻止组件222可以改变内容的一个或更多个部分以阻止执行被识别成不适当的脚本项。例如,可以操控与脚本项相关联的代码元素以阻止用户运算设备202再现或者其他方式执行脚本元素。额外地,这些方面构思了脚本阻止组件222在不适当项被识别为与内容相关联时阻止请求的内容的一个或更多个部分的通信。

通信组件224接收和分发与内容有关的通信。例如,通信组件224可以从用户接收对于通过服务器206可访问的内容的请求。额外地,通信组件224可以把请求的内容的一个或更多个部分从服务器206传送给采用用户运算设备202的用户。通信组件224可以结合脚本阻止组件222工作以阻止内容的一个或更多个部分的通信。通信组件还可以向用户、管理员、内容提供者等传送表明识别了不适当脚本项或者漏洞可能存在的通知。

如先前所讨论的,虽然通过具体实施例描述了服务器206的各种组件,但要理解服务器206的组件可以提供额外操作和任务。进一步地,要理解服务器206的组件可以是离散或单独的软件、固件、和/或硬件。类似地,要理解可以把服务器206的组件中的一个或更多个组件组合作为提供如本文中所讨论的一个或更多个功能的混合服务。又进一步地,构思了在本文中识别成与服务器206相关联的组件中的一个或更多个组件也可以或者替代地位于用户运算设备202上或者与用户运算设备202相关联。例如,脚本辨识组件212和标识评估组件216可以驻留在用户运算设备202上,或者在用户运算设备202处运行。

图3描绘了按照本发明实施例的、用于在内容传递系统中抑制跨站点脚本的示范性方法300的流程图。内容传递系统可以包括针对图2讨论的运算系统200。内容传递系统是向请求客户端提供客户端请求了的内容的环境或系统。典型地,因特网是内容传递系统的实例。但是,在本文中构思了其它系统。跨站点脚本攻击的抑制可以包括阻止被识别成不适当的脚本项的通信。抑制还可以包括改变内容以阻止识别的脚本项的执行或再现。

方法300包括框302。框302代表识别请求的内容内的脚本项。识别脚本项可以采用先前针对图2讨论的脚本辨识组件212。如先前所讨论的,可以通过搜索和识别与脚本项相关联的一个或更多个字符或元素识别脚本项。类似地,可以通过再现脚本项的至少一部分以定位将会在客户端(如,图2的用户运算设备202)处本地执行的脚本项识别脚本项。

进一步地,构思了随着收集用户请求的内容以及向集合添加脚本项,随后识别脚本项。

在本发明的一个方面中,通过图2的脚本辨识组件212识别与脚本项相关联的标识,完成请求的内容内脚本项的识别。例如,图2的脚本辨识组件212可以获知标识或者获知与标识相关联的语法以协助脚本项的识别。

在框304,执行在框302识别的脚本项包括标识的确定。例如,一旦识别脚本项,可以执行脚本项的评估以确定脚本项是否直接或间接包括标识。在包括与脚本项的代码元素一致的标识时,该标识可以与脚本项直接相关联。类似地,在标识应用于脚本项的HTML标签时,该标识可以与脚本项直接相关联。在标识位于绘出标识与脚本项之间关联或相关性的查找表内时,该标识可以与脚本项间接相关联。

在框306,执行脚本项的标识是否适当的确定。如先前所讨论的,在脚本项利用因特网可访问页面或页面的集合中的漏洞时,脚本项是不适当的。在内容的管理员不期望传播脚本项时,脚本项是不适当的。相反地,在内容的管理员期望把脚本项分发给请求用户时,脚本项可以是适当的。

在本文中构思了曾经适当的脚本项可能后来变得不适当。例如,如果第三方改变期望由管理员传送的脚本项,则在改变后脚本项的改变版本可能是不适当的。可以使用哈希值帮助识别何时适当脚本项受危害以及因此应当识别成不适当脚本项。

可以通过图2的标识评估组件216执行脚本项的适当性的确定。例如,可以评估与脚本项相关联的标识以确定它是否确实存在,如果它存在,则确定标识是否是预计的标识。预计的标识是预期或者其他方式与脚本项正确相关联的标识。如果标识作为与基础请求相关联的标识的直接匹配或衍生相关,则标识可以是适当的。如果通过查找表组件220维护的相关性表验证了标识,则标识可以是适当的。进一步地,当可以独立确定(例如,计算)标识并且独立计算与识别的标识相称(例如,对应于相关联的哈希值标识的哈希值重新计算)时,标识可以是适当的。当标识与另一标识(例如,先前确定的标识、先前相关联的标识、有关请求的标识等)不相称时可以认定标识是不适当的。

在框308,当确定标识并不是适当的(即,不适当)时,阻止把脚本项传送给用户。阻止脚本项传送的实例包括但不限于在把内容传送给用户以前从内容中移除(例如,去除)脚本项。脚本项传送的阻止还可以包括改变脚本项以使得不传送处于未改变状态的脚本项,而是传送处于改变的状态的脚本项。如先前所讨论的,脚本项的改变可以包括改变一个或更多个代码元素以把脚本项转换成代码的不可执行部分。阻止脚本项的传送还可以包括阻止请求的内容中全部或一些内容的传送以减少或阻止脚本项引起的破坏。

在替选方案中,当在框306确定标识是适当的时,把脚本项传送给用户,如在框310所描绘的。例如,通常应当在没有干预的情况下把对跨站点脚本没有漏洞的内容传送给请求用户。因此,应当在识别的标识是适当的标识时传送期望由管理员传送的内容。

如本文中所使用的,适当的标识是授权标识。因此,授权标识在示范性实施例中表示要向用户传送的授权或期望脚本项。相反地,如果标识不适当,则在本发明的一个方面中,标识会可以是未授权的,因此脚本项可能是不适当的,不应当传送给用户。

图4描绘了按照本发明实施例的、用于在内容传递系统中采用哈希函数确定脚本项不正确的方法400的流程图。在框402,接收来自用户的内容请求。在示范性实施例中,在服务器(如,针对图2讨论的服务器206)处接收请求。请求在示范性实施例中是对于标记语言(如,超文本标记语言(HTML))形式的响应的请求。然而,构思了请求可以对于任何web服务响应形式的响应。在示范性实施例中,在接收请求后,对于到来的请求生成标识。例如,可以生成附加到或者与到来的请求相关联的唯一标识以使得可以稍后使用该标识识别不适当脚本项。

在框404,确定内容脚本项的第一哈希值。哈希值是从向基础对象应用哈希函数得到的字符或字符组。在本发明的示范性实施例中,向脚本项的整体或一部分应用哈希函数以得到标识。因此,如果改变脚本项或脚本项的一部分,则从同一哈希函数得到的哈希值也会改变。此场景中使用的哈希值对于识别期望的脚本项以及未改变的脚本项可能是有用的。因此,在此实例中,脚本项的第一哈希值的确定可以包括把脚本项的至少一部分(例如,字符、元素、代码片段、变量、命令等)应用于对于希望注入跨站点脚本攻击的第三方未知的哈希函数。

所得的哈希值可以用作如本文中所讨论的标识。因此,期望由管理员传送给用户的脚本项与根据基础脚本项和哈希函数计算的哈希值初始地相关联。如先前所讨论的,哈希函数是把输入(例如,脚本项字符)以及有可能哈希函数参数转换为看上去不相关的值的输出(例如,标识)的运算(例如,数学的)。在本文中构思了保持哈希函数或它的参数对第三方保密以加强采用哈希函数的有效性。

在框406,把第一哈希值应用于脚本项。第一哈希值向脚本项的应用可以包括直接或间接关联哈希值作为标识,如先前所讨论的。在示范性实施例中,把第一哈希值插入在脚本项内。例如,可以向脚本项附加标记以提供标识。(例如,“<script id=1234>…</script>”、“<script hash=9876>…</script>”)。因此,构思了向脚本项应用标识或哈希值包括用标识对脚本项加标签和/或使用JavaScript的HTML标签。第一哈希值(或标识)的应用可以包括向脚本项应用变量。可以随后从表引用变量以维持对标识或者用来生成标识的函数的访问控制。类似地,把标识应用于脚本项可以包括应用标识作为直接从脚本可访问的静态字符。

在框408,根据脚本项确定第二哈希值。例如,可以使用公共哈希函数确定第一哈希值以及第二哈希值。因此,在示范性实施例中,如果在过渡期间哈希函数未改变以及未改变脚本项,则所得第一哈希值和所得第二哈希值应当在示范性实施例中等同。因此,第二哈希值的使用对于验证脚本项未从它在确定第一哈希值时所在的状态改变是有效的。

在框410,做出脚本项并不正确的确定。在示范性实施例中,脚本项并不正确的确定是未通过脚本项识别第一或第二哈希值的结果。构思了在第三方注入脚本项的情况下无法识别第一或第二哈希值。在另一示范性实施例中,当在框408确定的第二哈希值与在框404确定的第一哈希值不等同时,得到脚本项并不正确的确定。

图5描绘了按照本发明实施例的、用于阻止跨站点脚本攻击的方法500的流程图。在框502,在服务器处接收对内容的标记语言请求。在示范性实施例中,用户采用图2的用户运算设备202生成请求。进一步地,在示范性实施例中,通过网络204传送请求以通过服务器206接收。

在框504,响应于接收请求生成唯一标识。标识可以是随机生成、根据哈希函数生成或者其他方式生成的字符串,以便用作一个或更多个脚本项的标识。

在框506,在请求的内容内识别第一脚本项。请求的内容可以是标记语言(如,HTML)形式的。进一步地,可以通过图2的脚本辨识组件212识别脚本项。

在框508,唯一标识与第一脚本项相关联。如先前所讨论的,可以通过对脚本项加标签和/或更新查找表以维护唯一标识与第一脚本项之间的相关性,来完成唯一标识的关联。

在框510,在传送给用户以前识别可以作为内容的一部分传送给用户的一个或更多个脚本项。在示范性实施例中,一个或更多个脚本项包括第一脚本项和第二脚本项。在示范性实施例中,第一脚本项与第二脚本项不同。

在框512,确定第二脚本项未与唯一标识相关联。例如,如果第二脚本项并非请求内容的作者提供的脚本项,则唯一标识不可以与第二脚本项相关联。第二脚本项可以因此是注入的脚本项。

在框514,阻止把第二脚本项传送给用户。在示范性实施例中,基于缺少与唯一标识(可以与和第一脚本项相关联的唯一标识不同或一样)的关联确定第二脚本项是不适当脚本项。如先前所讨论的,第二脚本项传送的阻止可以包括去除第二脚本项、改变第二脚本项、或者用以阻止在请求用户的运算设备上执行第二脚本项的其它方法。

在框516,在把第一脚本项传送给用户以前去除第一脚本项与唯一标识之间的关联。在示范性实施例中,希望维持从用户的透明过程以不提供对标识使用的语法的暗示或线索。维持此级别的安全或私密知识阻碍恶意第三方模仿唯一标识以避免通过唯一标识提供的跨站点脚本检测。因此,构思了第一脚本项与唯一标识之间关联的去除可以包括从脚本项去除(例如,从标记语言去除)唯一标识、去除对查找表使用的唯一标识的引用、改变唯一标识以提供诱饵标识、或者其他方式隐蔽唯一标识。

在示范性实施例中,维持唯一标识的全部或至少一部分和/或哈希函数对用户私密。维护私密性意味着实际标识或哈希函数未暴露,对于基础标识或哈希函数来说也未暴露线索或暗示。因此,在本发明的一个方面中,唯一标识生成、关联、确定等是对用户的透明过程。

在框518,把第一脚本传送给用户。在示范性实施例中,确定第一脚本具有唯一标识以及确定该唯一标识与在框504生成的唯一标识等同。进一步地,在示范性实施例中,在其中没有合并唯一标识的情况下传送第一脚本项。额外地,在示范性实施例中,也可以把用户请求的内容的另外部分传送给末端用户,只要也通过类似技术确定这些其它部分是适当的。

在不脱离本发明范围和精神的情况下,描绘的各种组件以及未示出的组件的许多不同布置都是可能的。通过示例性而非限制性的意图描述了本发明的实施例。未脱离它的范围的替选实施例将会对本领域技术人员而言是明显的。技术人员可以在不脱离本发明范围的情况下开发实施上述改进的替选装置。

将会理解某些特征和子组合是实用的, 并且可以在没有对其它特征和子组合的引用的情况下采用,以及是在权利要求的范围内构思的。并非需要按描述的具体次序执行各种图中列出的所有步骤。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号