安全和可扩展策略驱动的应用程序平台转让专利

申请号 : CN200880124688.7

文献号 : CN101911054B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : S·伊萨克斯S·M·约克R·K·洛根

申请人 : 微软公司

摘要 :

一种评估脚本内容的安全性的系统。处理器执行用于为网页中的脚本内容定义策略的计算机可执行指令。该脚本内容提供用户与网页内的其他内容之间的交互。所定义的策略指示脚本内容的执行边界。处理器还对照所定义的策略中的执行边界来评估脚本内容。在运行时,处理器响应于该评估来转换网页的至少一部分。一界面传送具有脚本内容的经转换的部分的网页以在主机设备上的应用程序中呈现。

权利要求 :

1.一种评估web交互式组件的方法,所述方法包括:

为内容持有者中的组件定义策略,在呈现所述组件时所述组件提供用户与所述内容持有者中的其他内容之间的交互,所定义的策略指示所述组件在运行时期间的执行边界,所述执行边界定义所述组件的资源访问;

传送具有所述组件的内容持有者以在主机设备上的应用程序中呈现;

响应于所述应用程序所进行的呈现,截取来自所述组件的对服务器的资源的请求,其中所述资源向所述组件提供服务以与以下至少一个进行交互:所述用户和来自所述内容持有者的其他内容;

对照所定义的策略中的执行边界来评估所截取的请求;

响应于所述评估修改来自所述组件的请求,所述修改所述请求包括重写所述请求以使得所述请求处于基于所定义的策略的执行边界内;以及响应于所评估的请求来向所述服务器或所述应用程序提供动态解决方案。

2.如权利要求1所述的方法,其特征在于,提供所述动态解决方案包括以下至少一个:在所请求的资源能在所述执行边界内执行的情况下准许所述请求,在所请求的资源不能在所述执行边界内执行的情况下拒绝所述请求,在准许所述请求之前扩充所述请求,响应于另一请求在提供替换解决方案之前用该另一请求替换所述请求,以及向所述用户请求用于准许或拒绝所述请求的用户输入。

3.如权利要求1所述的方法,其特征在于,还包括提供用于接收来自所述组件的所述请求的应用程序编程接口,并且其中截取包括截取来自所述应用程序编程接口的对所述服务器的资源的请求。

4.如权利要求1所述的方法,其特征在于,还包括实例化所述组件的多个实例。

5.如权利要求4所述的方法,其特征在于,截取包括截取来自所述组件的所述多个实例化实例中的每一个的对服务器的资源的请求。

6.一种评估web交互式组件的系统,所述系统包括:

为内容持有者中的组件定义策略的装置,在呈现所述组件时所述组件提供用户与所述内容持有者中的其他内容之间的交互,所定义的策略指示所述组件在运行时期间的执行边界,所述执行边界定义所述组件的资源访问;

传送具有所述组件的内容持有者以在主机设备上的应用程序中呈现的装置;

响应于所述应用程序所进行的呈现,截取来自所述组件的对服务器的资源的请求的装置,其中所述资源向所述组件提供服务以与以下至少一个进行交互:所述用户和来自所述内容持有者的其他内容;

对照所定义的策略中的执行边界来评估所截取的请求的装置;

响应于所述评估修改来自所述组件的请求的装置,所述修改所述请求的装置包括重写所述请求以使得所述请求处于基于所定义的策略的执行边界内的装置;以及响应于所评估的请求来向所述服务器或所述应用程序提供动态解决方案的装置。

7.如权利要求6所述的系统,其特征在于,提供所述动态解决方案的装置包括以下至少一个:在所请求的资源能在所述执行边界内执行的情况下准许所述请求的装置,在所请求的资源不能在所述执行边界内执行的情况下拒绝所述请求的装置,在准许所述请求之前扩充所述请求的装置,响应于另一请求在提供替换解决方案之前用该另一请求替换所述请求的装置,以及向所述用户请求用于准许或拒绝所述请求的用户输入的装置。

8.如权利要求6所述的系统,其特征在于,还包括提供用于接收来自所述组件的所述请求的应用程序编程接口的装置,并且其中截取装置包括截取来自所述应用程序编程接口的对所述服务器的资源的请求的装置。

9.如权利要求6所述的系统,其特征在于,还包括实例化所述组件的多个实例的装置。

10.如权利要求9所述的系统,其特征在于,截取装置包括截取来自所述组件的所述多个实例化实例中的每一个的对服务器的资源的请求的装置。

11.一种保护web交互式函数的方法,所述方法包括:

为网页中的所述web交互式函数定义策略,所述web交互式函数向用户和所述网页中的其他内容提供交互,所定义的策略指示所述web交互式函数的执行边界,所述执行边界定义所述web交互式函数的资源访问;

传送所述网页以在主机设备上的应用程序中呈现;

响应于所述应用程序所进行的呈现,监视所述web交互式函数对与所述用户或所述网页中的其他内容的交互的请求;

截取所监视的来自所述web交互式函数的对服务器的资源的请求,其中所述资源向所述web交互式函数提供服务以与以下至少一个交互:所述用户和来自所述网页的其他内容;

对照所定义的策略中的执行边界来评估所截取的请求;

响应于所述评估修改来自所述函数的请求,所述修改所述请求包括重写所述请求以使得所述请求处于基于所定义的策略的执行边界内;以及响应于所述评估来向所述服务器或所述应用程序提供动态解决方案。

12.如权利要求11所述的方法,其特征在于,提供所述动态解决方案包括以下至少一个:在所请求的资源能在所述执行边界内执行的情况下准许所述请求,在所请求的资源不能在所述执行边界内执行的情况下拒绝所述请求,在准许所述请求之前扩充所述请求,响应于另一请求在提供替换解决方案之前用该另一请求替换所述请求,以及向所述用户请求用于准许或拒绝所述请求的用户输入。

13.如权利要求11所述的方法,其特征在于,还包括提供用于接收来自所述函数的所述请求的应用程序编程接口,并且其中截取包括截取来自所述应用程序编程接口的对资源的请求。

14.如权利要求11所述的方法,其特征在于,还包括在所述应用程序呈现多个网页时实例化所述函数的多个实例。

15.如权利要求14所述的方法,其特征在于,截取包括截取来自所述组件的所述多个实例化实例中的每一个的对所述服务器的资源的请求。

说明书 :

安全和可扩展策略驱动的应用程序平台

[0001] 背景
[0002] 在因特网上可获得内容在近年来经历了爆炸式的转变。网页中的给早期在线用户留下印象的静态文本或静止图像已被动态动画、丰富的多媒体视频剪辑、以及动态网页布局所代替。另外,网页中的内容在运行时变成交互式的;用户可以使用输入设备(例如鼠标或指示笔)或用户的手指来移动或重新安排网页内的对象以提供丰富的自定义。
[0003] 该交互式开发中的驱动力之一是对可由应用程序或软件(例如,web浏览器)执行的计算机可执行指令形式的脚本内容在运行时或接近运行时的使用。这样的开发的一个示例是混搭(mashup),其是组合来自各种源的代码和行为以用于集成在体验内或用于创建新体验的web应用程序。然而,由于浏览器的性质,随着在呈现混搭之时或在呈现混搭之前执行混搭,大多数混搭在主站点和网页内的第三方代码之间创建了暗含的信任关系。这一信任关系将网站和底层web业务模型置于危险之中。另外,因为混搭代码或脚本的交互式性质,该信任关系也可将网页和/或本地设备上呈现的用户个人或隐私内容置于危险之中。
[0004] 概述
[0005] 本发明的各实施例通过定义用于网页的策略驱动脚本内容的行为的策略以使得本发明的各实施例可以在将脚本内容呈现给用户之时或将脚本内容呈现给用户之前监视、实施、修改、或补充脚本内容的行为来解决以上缺点。在另一实施例中,将所定义的策略提供给本地设备以使得在该本地设备处执行的浏览器可以方便地在本地级比较脚本内容安全边界。替换实施例提供用于策略驱动和策略实施的脚本执行的平台和围绕尤其是在基于web的混搭上下文中的内容引用包含(transclusion)、组件开发、以及API可扩展性的策略场景。替换实施例还提供自动地支持多实例的能力并提供范围保护。另外,本发明的其他方面监视并记录用户与脚本内容的交互,以使得可以记录服务质量(QOS)度量或数据并将其报告给该脚本内容的发行者、创作者或提供者。
[0006] 提供本概述是为了以简化的形式介绍将在以下详细描述中进一步描述的一些概念。本概述不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于帮助确定所要求保护的主题的范围。
[0007] 其他特征的一部分将是显而易见的,一部分将在下文中指出。
[0008] 附图简述
[0009] 图1是示出根据本发明的一实施例的用于保护网页内的脚本内容的系统的示例性实施例的框图。
[0010] 图2是示出根据本发明的一实施例的用于定义脚本内容的执行边界的示例性策略的框图。
[0011] 图3-9是示出根据本发明的一实施例的脚本内容交互的屏幕显示的示例性框图。
[0012] 图10-11是示出根据本发明的一实施例的脚本内容的服务质量的管理和测量的框图。
[0013] 图12是示出根据本发明的一实施例的与保护脚本内容相关联的示例性服务质量数据的框图。
[0014] 图13是示出根据本发明的一实施例的保护网页内的脚本内容的操作的示例性流程图。
[0015] 图14-15是示出根据本发明在附录A中描述的一实施例的保护网页内的脚本内容的替换实施例的框图。
[0016] 图16是示出根据本发明的一实施例的保护客户机设备上的网页内的脚本内容的操作的框图。
[0017] 附录A示出安全和可扩展策略驱动的应用程序平台的示例性实现。
[0018] 相应的附图标记在全部附图中指示相应的部分。
[0019] 详细描述
[0020] 本发明的各实施例向页面内脚本内容或函数提供安全,并向在网页内显示或呈现的用户内容提供适当的保护。现在参考图1,示出了根据本发明的一实施例的用于保护内容持有者104内的脚本内容102的系统100。系统100包括可由客户机108经由通信网络(未示出)访问的服务器106。在一个示例中,服务器106包括联网计算机的集合、计算机、web服务器、企业服务器、数据库服务器、认证服务器、其组合、或以上的集合。在一个实施例中,服务器106可以是向用户114提供各种服务的服务器的联合集合。在另一实施例中,服务器106包括处理器110,处理器110可以是处理单元、微处理器、中央处理单元、或以上示例的集合/组合。在一个示例中,服务器106提供各种服务,如基于web的电子邮件(e-mail)帐户、聚集用户114的各种个性化信息的集中式web门户页面,等等。在另一示例中,服务器106以超文本标记语言(HTML)、可扩展标记语言(XML)、 异步JavaScript和XML(AJAX)等的形式向用户114提供交互式内容和非交互式内容两者。可以理解,可以提供诸如多媒体内容等其他内容而不背离本发明的各方面的范围和精神。
[0021] 客户机108包括与用户114相关联的任何客户机设备,如个人计算机(PC)(例如,台式计算机或膝上型计算机)、便携式数字设备、个人数字助理(PDA)、蜂窝电话、便携式媒体播放器等。通信网络包括便于两个或更多个计算机之间的连接的任何有线或无线通信网络。
[0022] 在一个示例中,服务器106被配置成向用户114提供内容持有者104以在客户机108处呈现或显示。例如,内容持有者104可以由安装在客户机108上的web浏览器应用程序(WBA)118呈现。在一个实施例中,内容持有者104可以是网页、ASCII文本页、具有嵌入式标记语言内容的网页、具有嵌入式媒体内容的网页等。在一个实施例中,WBA 118是独立应用程序或软件。在另一实施例中,WBA 118可以是能够呈现以诸如超文本标记语言(HTML)、可扩展标记语言(XML)等标记语言编写的内容的程序或软件的一部分或组件。还可以理解,WBA 118可以是在在线环境中呈现其他内容的应用程序和组件,这些内容诸如图形文件((.jpg、.tiff、.pdf等)、媒体文件(.wma、.mp3、.mp4等),等等。
[0023] 内容持有者104包括具有内容的一个或多个组件。在一个示例中,一组件可包括脚本内容102和/或非脚本内容116。在一个示例中,脚本内容102包括计算机可执行指令、代码、函数、可执行表达式、或其他可执行程序设计语言。脚本内容102可以经由函数调用或应用程序编程接口(API)请求或调用来引起执行启用。执行启用可以从服务器106、客户机108、或WBA 118请求资源。另一方面,非脚本内容116包括不可执行或不引起执行结果的内容。例如,文本语句(例如,“Today’s news(今天新闻)...”)可以是非脚本内容116,但文本语句(例如,echo(Today’s news...);document.write(“Today’s news...”);)可以是脚本内容102,因为在执行该语句时,该文本语句造成超过仅仅显示该文本语句本身的函数结果。
[0024] 系统100还包括策略引擎120,策略引擎120包括用于定义脚本内容的执行边界的一个或多个策略。在一个示例中,策略引擎120包括用于存储一个或多个策略的存储介质。现在参考图2,一示图示出存储在策略引擎120中的简单化的策略202。在一个示例中,策略202中的每一个都定义特定脚本内容或该脚本内容中包括的函数的执行边界。在另一示例中,策略202-1包括被称为“addFolder()(添加文件夹)”204的脚本内容或函数的执行边界,而策略202-2包括被称为“openWindow()(打开窗口)”206的脚本内容或函数的执行边界。可以理解,其他函数或脚本内容可以包括在策略引擎120中而不背离本发明的范围或精神。还可以理解,在开发、扩充、修改、或升级附加函数或脚本内容时,策略引擎120可被周期性地全部或部分更新。在一替换实施例中,执行边界指示可由脚本内容或函数访问的内容或资源的限制。
[0025] 例如,假定策略202-1定义脚本内容“addFolder()”的执行边界。策略202-1中的执行边界可以定义脚本内容“addFolder()”可以在向服务器106发送了请求之后在WBA118实例内的运行时期间执行。同样,边界可以进一步将脚本内容“addFolder()”(其创建文件夹或目录)的结果限制为只限于在WBA118将用户114的信息从服务器106呈现在客户机108上时访问与用户114相关联的存储空间。addFolder()函数不能访问(例如,读权限)来自该存储空间的其他信息。图3-9通过用户114的基于web的电子邮件帐户的简化示例进一步示出本发明的各方面。
[0026] 例如,在图3中,显示窗口302显示安装在客户机108上的WBA 118的实例。显示窗口302包括web地址栏304和显示内容持有者104的内容的内容显示区域306。可以包括其他控件,诸如窗口大小控件308(其包括窗口最小化控件、窗口最大化控件、以及窗口关闭控件)、搜索控件310、导航控件312等。还可以理解,可以添加或实现其他控件而不背离本发明的范围或精神。
[0027] 在其中WBA 118向用户114显示个人基于web的电子邮件收件箱的这一示例中,内容显示区域306还包括侧窗格314和列出用户114的收件箱中的一个或多个电子邮件消息的主消息窗格316。作为说明,侧窗格314显示将用户114链接到电子邮件帐户user@user-mail.com的收件箱内的一个或多个目录或文件夹的多个控件、按钮、或链接。例如,这些文件夹包括“收件箱”文件夹、“草稿”文件夹、“已发送项目”文件夹、“垃圾箱”文件夹、以及“已删除”文件夹。侧窗格314还包括在“文件夹”标题下示出一个或多个个性化文件夹或目录的部分。在该图示中,不存在用户114的个性化文件夹或目录。显示窗口302还在主消息窗格316中显示电子邮件消息的列表。如图所示,显示窗口302显示或呈现用户的收件箱的布局并还显示其从服务器106提供的内容。换言之,只要内容或用户收件箱的内容的布局能由WBA 118正确地识别,显示窗口302就将相应地在内容显示区域306中向用户114呈现该布局和内容。还可以理解,侧窗格314和主消息窗格316可以取决于内容持有者104的布局来修改。
[0028] 同样,在所示示例中,用户114接收来自“购物”的具有主题行“减价20%在线销售”的电子邮件消息320。现在参考图4,一示图示出本发明的各实施例如何通过控制所显示的内容内的函数调用来采用策略驱动的应用程序平台,以使得用户敏感或隐私内容得到保护。在该示例中,假定消息320包括典型的非脚本内容和脚本内容。非脚本内容可包括对于用户广告购物销售的文本消息。消息320的脚本内容包括尝试向用户114的电子邮件帐户添加被称为“购物”的文件夹的一个或多个函数。这样的“购物文件夹”将为用户114保持销售交易、优惠券、或其他销售消息。可以在“打开”消息320时或在一短暂延迟后激活或调用脚本内容。在一个示例中,用户114可以通过使用输入设备(例如,鼠标或指示笔)或用户的手指来打开电子邮件消息320。在一个实施例中,在用户114突出显示消息320时,如通过将鼠标图形光标悬停在该消息上方或将位置标记移动到(例如,使用键盘上的箭头键)电子邮件消息320的位置,电子邮件消息320可被自动打开。可以理解,可以采用突出显示或聚焦消息320以打开消息320来查看其内容的其他手段而不背离本发明的范围或精神。
[0029] 当前技术将执行脚本内容而不进行干涉。换言之,如果脚本内容的函数指定打开显示窗口,则显示窗口将被打开。用户114将不具有对如何执行脚本内容的控制。实际上,服务器106也不具有对该内容的控制,因为内容在web或在线环境中的呈现或显示通常被委托给WBA 118。如此,用户的收件箱的隐私或内容或其他内容受到任何所显示的页面的脚本内容的闪念(whim)的控制。
[0030] 本发明的各实施例定义各个策略来监视和/或截取脚本内容,以使得脚本内容只可在由所定义的策略指定的定义边界内执行。本发明的各方面还提供响应于评估所截取的脚本内容调用或函数的动态解决方案。动态解决方案可包括以下至少一个:在所请求的资源能在执行边界内执行的情况下准许该请求,在所请求的资源不能在执行边界内执行的情况下拒绝该请求,在准许该请求之前扩充该请求,响应于另一请求在提供替换解决方案之前用该另一请求替换该请求,以及从用户请求用于准许或拒绝该请求的用户输入。
[0031] 在一个实施例中,用户114还可以涉及进一步限制脚本内容的执行。现在再次参考图4,在打开消息320时并且在执行消息320的脚本内容时,消息320的脚本内容被传递到策略引擎120以供评估并且用户114可以帮助或参与该评估。
[0032] 基于以上示例,一旦消息320被“打开”,消息320的脚本内容就尝试使用诸如“addFolder()”等函数来向用户114的电子邮件帐户添加被称为“购物”文件夹的文件夹。并非像现有技术那样执行脚本内容,本发明的各方面使脚本内容和/或函数调用穿过策略引擎120。如图2所示,策略引擎120包括关于处理函数调用的一个或多个规则。在该示例中,策略引擎120可被设计成截取所有addFolder()函数调用并提取脚本的内容。同时,策略引擎120触发或启用替换函数或附加函数的执行或运行,如用于向用户114打开窗口
322的函数“alertWindow()”(警告窗口)。alertWindow()函数希望在WBA 118的执行环境内打开窗口322以向用户114显示消息和交互式控件。所显示的消息和/或交互式控件符合或表示从消息320的脚本内容提取的内容。
[0033] 在该示例中,替换alertWindow()函数希望通过显示以下消息来打开窗口警告用户114:“添加包括来自您最喜爱的商店的优惠券的“购物”文件夹?”用户114可以通过点击“是”按钮340来选择添加文件夹或通过点击“否”按钮342来拒绝该请求。如果用户114选择“是”按钮340,则新个性化“购物”文件夹334可被添加到用户的个性化文件夹部分,如在图5中所看到的。因此,用户114现在是准许或拒绝消息320的脚本内容的原始意图(例如,执行addFolder()函数)的决定过程的一部分。
[0034] 在另一实施例中,消息320的脚本内容可以调用对服务器106、处理器110、客户机108、或WBA 118的资源的应用程序编程接口(API)调用。在该情形中,本发明的各实施例还可以截取这样的API调用并使它们穿过策略引擎120。在一个实施例中,在带有或不带有对于用户114的任何通知的情况下,策略引擎120可以选择允许、拒绝、扩充、或替换任何调用的行为。这些调用可以源自现有API或只经由策略来定义(例如,它们不必是预先存在的API)。
[0035] 例如,图6示出本发明的一方面,其中自动地拒绝来自消息的脚本内容的请求或调用但向用户114通知这一拒绝。在该图示中,本发明的各方面使策略引擎120能够自动地拒绝所有脚本启用或函数调用。在这样做时,修改对用户的通知消息332以显示“Shopping-for-you.com请求向您的电子邮件帐户添加文件夹并且该请求被自动拒绝。如果您想要准许这一请求,请点击“准许”。否则,请点击“继续”。”响应于这一通知向用户114呈现了“准许”按钮344和“继续”按钮346。换言之,一旦设定了自动拒绝策略设置则本发明的各实施例向用户114提供在一次性的基础上作出决定的能力。在另一实施例中,通知332可包括其他选项,如“记住我的设置”、“在两星期内记住我的设置”、“总是这样做”、“复位我先前的决定”等(如选项370“将来总是采取这一动作”)。
[0036] 在该替换中,本发明的各方面还被配置成自动地准许请求或函数调用,并且在图7中同样向用户114给出通过点击“拒绝”按钮348来更改这样的自动动作或“继续”按钮350来继续动作的默认过程的机会。
[0037] 在另一实施例中,策略引擎120可被配置成修改所截取的函数调用。现在参考图8,如果本发明的各方面被实现成修改所截取的函数调用或API请求,则消息332现在显示以下内容:“Shopping-for-you.com请求向您的电子邮件帐户添加“购物”文件夹但看来您已经具有名为“购物”的文件夹了。该请求被自动修改成拒绝该请求。如果您想要进一步修改该请求,请点击“修改”。否则,请点击“继续”。”换言之,该修改还可以与对该请求的拒绝相耦合。如此,用户114有机会通过点击“修改”按钮352来修改该请求或通过点击“继续”按钮354以进行策略引擎120中的策略或规则所定义或设定的修改。类似地,策略引擎
120中的策略还可以将修改与对该请求的自动准许相耦合,如图9中所示。在图9中,向用户
114呈现消息332,指示该请求已被使用向用户的个性化文件夹部分添加文件夹“购物-复件”来自动地替换了。用户114同样有机会通过点击“继续”按钮356来同意该修改或通过点击“取消”按钮358来取消该修改。在又一实施例中,对所截取的请求的修改可包括重写所截取的请求,以使得脚本内容/请求处于基于所定义的策略的执行边界内。
[0038] 在一个实施例中,在执行WBA 118时,可以实现WBA 118的一个或多个实例,并且本发明的各方面在运行时或执行时间期间正确地区分每一实例。例如,用户114可具有同时运行的一个或多个WBA118窗口。如此,如本发明的各方面所例示的,本发明在当前WBA 118窗口内的实例化需要所有代码首先经由简单变换来标准化。这一变换重定向所有API调用使其穿过策略引擎118。这一步骤尝试迫使首先调用策略引擎并且还注入适当的QOS(服务质量)测试(稍后讨论)。作为又一优点,脚本内容的所实例化的实例中的每一个具有独立和分开的执行边界。
[0039] 在一个实施例中,只要从消息320的脚本内容调用API,就对照策略引擎120来定向它。策略引擎120检查以下至少一个:作出请求的对象的类型、被调用的API的类型(属性、方法、工厂、或删除),并将决定过程传递到策略脚本或规则中的至少一个。策略脚本可以选择拒绝访问(默认)、允许、扩充(或取决于上下文来动态地选择拒绝或允许)、或替换和/或定义该行为。
[0040] 在一个示例中,策略可被堆叠:任何单个API启用可被映射到0到n个策略或规则。策略可以按定义的次序执行。例如,第一次序策略允许访问属性(例如,标题属性),并且后续策略可通过只有在102-1的上下文内的一个元素上才允许访问该属性来进一步约束规则。
[0041] 另一示例可以允许启用一种方法(例如,警告),其中后续策略覆盖警告的默认行为以在状态栏上显示而非经由提示来显示。
[0042] 如此,在用户114经由WBA 118在线查看的内容或内容持有者包括脚本函数、可执行码和API请求时,本发明的各方面向用户114提供一层保护。在一个现有示例中,基于web的电子邮件收件箱的用户具有许多方便特征是常见的,如通过点击诸如“添加到联系人”等链接来自动地将电子邮件地址添加到用户的联系人文件夹。一些电子邮件服务提供者通过向用户提示用于准许该许可的分开页面来实现这一方便特征。用户一点击“添加到联系人”链接,一些提供者就将自动地执行所请求的动作。然而,一些提供者将自动地执行所请求的动作而无需用户点击“添加到联系人”链接;提供者假定用户希望添加联系人并进行添加联系人而不询问用户。如此,用户不具有对该用户的联系人文件夹中的私人信息的控制。本发明的各实施例尝试通过截取来自内容持有者104的脚本内容的函数调用或执行请求并在使得用户涉入之前评估该函数调用来减轻当前系统的这一问题和缺点。
[0043] 在另一实施例中,策略引擎120的副本在客户机108上实例化或被复制到客户机108,以使得对函数调用的截取可以在客户机108本地完成。换言之,本发明的各实施例使得WBA118能够当在运行时呈现或显示内容持有者104时监视内容持有者104的脚本内容并截取函数调用或API调用。可由客户机和WBA 118在本地访问的策略引擎120评估所截取的函数调用或请求。WBA 118接着可根据所定义的策略来向用户114呈现任何后续UI。
在另一实施例中,WBA 118或客户机108将扩充或执行内容持有者104的脚本内容的结果进一步传递到服务器106。使用图3作为示例,在消息320希望向用户的个性化文件夹列表或部分添加文件夹时,WBA 118或客户机108可以将用户的判定传递回服务器106以将“购物”文件夹添加到用户的收件箱文件夹列表或拒绝该请求。
[0044] 在一替换实施例中,可能不存在来自用户或如图4-9所示的决策的反馈。例如,内容持有者104可以只是显示内容和广告的网页。然而,内容持有者104还包括脚本内容,如在呈现或显示内容持有者104时执行动态操作。例如,假定内容持有者104是具有文本内容(例如,非脚本内容)和脚本内容的网页。脚本内容可以嵌入在诸如电影剪辑等动画对象或诸如图片等图形对象中。这些动画对象或图形对象可以是在线广告的一部分,并且脚本内容可以尝试从内容持有者104的其他部分产生效果,内容持有者104可以由或不由服务器106管理。如此,当呈现或显示在线广告时,随后显示或呈现脚本内容。然而,来自脚本内容的关于内容持有者104的其他部分的合乎需要的效果可能使WBA 118崩溃、使客户机4108崩溃、或造成其他不合需要的事件。
[0045] 现在参考图10来作为以上示例的说明,一框图示出根据本发明的一实施例的脚本内容的服务质量的管理和测量。图10示出显示在WBA 118的内容显示区域306的滑雪旅行或滑雪度假广告402。在一个示例中,广告402可以是诸如网页等内容持有者的一部分。网页还包括在该网页上显示天气预报信息的天气预报模块404。也可以显示其他内容或模块,如新闻更新模块406和技术更新模块408。每一模块可具有与其相关联的元数据以标记或标识该模块的特征或属性。广告402还包括含有可执行码和函数调用的脚本内容410。在该示例中,脚本内容410被设计成将滑雪胜地天气预报信息添加到内容持有者中的相关内容,以使得用户可以快速查看靠近该用户的当前显示页上可用的位置处的滑雪胜地或具滑雪吸引力的地点的天气情况是什么。一旦添加了天气预报信息,广告402就将动画显示内容以示出所广告的滑雪胜地的图片。
[0046] 如此,脚本内容410可以尝试读模块404的内容以查看用户想要了解天气的城市。这一尝试将触发广告402来显示最接近用户感兴趣的城市的滑雪胜地的广告。本发明的各实施例可准许这一尝试/动作或者阻塞或抑制这一尝试/动作或操作。如果被批准了许可,则许可广告402以查看有针对性的广告。另一方面,广告402可被抑制而免于显示有针对性的广告并可以显示通用广告,如“美国顶级滑雪胜地”,如图11所示。如此,本发明的各实施例向用户提供干涉或参与决策的机会。
[0047] 本发明的各方面可以测量这样的脚本内容的有效性以向内容提供者提供有效反馈。现在参考图12,一框图示出根据本发明的一实施例的与保护脚本内容相关联的示例性服务质量数据502。通过截取来自脚本内容的每一个函数调用、API请求等,本发明的各实施例可以正确地评估这些请求并且该评估被正确地记录在存储器区域122中。例如,图12示出可被收集并转发到内容提供者的示例性服务质量度量。例如,服务质量数据502包括各个字段,诸如“拒绝次数”、“修改次数”、“替换次数”、“用户修改次数”、“与其他脚本内容的交互”、以及“不稳定事件”。。在图10-11所示的示例中,对广告402的脚本内容的拒绝被当作“不稳定事件”。在另一实施例中,WBA 118或客户机108可以记录由于不能显示内容持有者中的内容而造成的WBA 118非预期异常或崩溃。这一记录或日志还可被转发到服务器106以收集“与其他脚本内容的交互”的数据。在又一示例中,可以响应于截取和评估来监视、记录、并存储脚本内容、WBA 118、客户机108和/或服务器106之间的执行活动。可以监视、评估、测量、并稍后向脚本内容的提供者提供各执行活动,诸如所提供的解决方案与在线内容的其他部分之间的活动;所提供的解决方案与在线内容的脚本内容之间的活动;所提供的解决方案与用户之间的活动;以及所提供的解决方案、脚本内容与WBA 118等之间的活动等。还可以理解,可以定义其他服务质量度量并收集相关数据而不背离本发明的范围和精神。
[0048] 在又一实施例中,策略引擎120可具有中间截取的所有属性、方法启用、以及对象工厂,其中在执行调用之前进行了确认。确认可以是动态的(其不仅仅是打开和关闭)并且决定过程可以考虑所有细节。例外,策略引擎120自动地将不可靠代码封装在其自己的可被多次实例化的沙箱中,每一次实例化都可能具有其自己的唯一覆盖策略。
[0049] 各替换实施例包括提供超过只进行安全保护的策略。策略之间的差异可以在执行系统(例如,浏览器)之间标准化,并且策略还可以用新API来扩展默认能力或使隐错或其他问题对开发者透明。
[0050] 对于基于web的可脚本化内容,在应用策略之前,资源(例如,HTML、CSS、以及脚本)当前需要在服务器侧转换。这一转换不是确认步骤,而仅仅是使客户机侧策略能够在执行时得到应用。可以想到,各替换实施例可以使该转换步骤成为“发布”或“呈现”内容的更大过程的一部分,连同代码确认、版本化、作者简档等。
[0051] 尽管通常是在浏览器或WBA 118的上下文中查看的,但围绕混搭的所有上述挑战适用于其中在更大应用程序内执行不可靠内容(不管它是脚本、DLL等)的任何环境。因此,WBA 118应仅被看作一个可能的实例。
[0052] 与传统web小配件(其是在页面上孤立的组件)相比,本发明的各实施例允许代码或脚本内容在页面本机执行,并取决于策略来允许访问周围API或上下文。这一方法还用作用于网站可扩展性的主机驱动模型。
[0053] 现在参考图13,一示例性流程图示出根据本发明的一实施例的保护网页内的脚本内容的操作。例如,在602,定义用于内容持有者中的一组件的策略。该组件提供用户与内容持有者中的其他内容之间的交互。所定义的策略指示该组件的执行边界。在604,传送具有策略引擎和/或该组件的内容持有者以供在主机设备上的应用程序中呈现。在606,响应于该应用程序所进行的呈现,截取来自该组件的对服务器的资源的请求。这些资源向该组件提供服务以与以下至少一个交互:用户和来自内容持有者的其他内容。在608,对照所定义的策略中的执行边界来评估所截取的请求。在610,响应于该评估来提供动态解决方案。
[0054] 现在参考图16,一框图示出根据本发明的一实施例的保护客户机设备上的网页内的脚本内容的操作。图16在与图1中类似地描述的一个实施例上进一步扩展。客户机设备702包括本地存储器704、显示器706、以及应用程序710。本地存储器704存储来自可由诸如服务器106等远程服务器访问的远程存储器区域712的策略708。策略中的每一个都定义函数或应用程序的执行边界。在一个示例中,执行边界定义函数或应用程序的资源访问限制或者访问属性。在该实施例中,应用程序710(例如,WBA 118)呈现从远程计算设备传送到客户机设备702的内容。在一个示例中,该内容可以聚集在内容持有者(例如,网页)中,并且该内容可以是包括用标记语言编写的内容、具有图形和多媒体的内容等的在线内容。在712,在呈现该内容后,响应于呈现、提供、或加载该在线内容,应用程序710标识内容持有者的web脚本内容。如上所述,所标识的web脚本内容被配置成发起执行启用以与在线内容的其他部分进行交互。例如,执行启用可包括函数调用、函数请求、API启用、API调用等。执行启用还可以请求其他资源而不背离本发明各实施例的范围。在714,应用程序710截取从所标识的web脚本内容发起的执行启用。
[0055] 在716,应用程序710可以进一步标识所截取的执行启用中包括的参数。所标识的参数可以从应用程序或客户机设备请求资源以与在线内容的其他部分进行交互,以及其他操作。在另一实施例中,所标识的参数可以从应用程序或客户机设备请求资源以与诸如用户114等用户进行交互。在718,应用程序710对照本地存储器704中存储的每一策略的执行边界来评估所标识的参数。例如,应用程序710对照执行边界来分析所标识的参数并确定是否可以在应用程序710或客户机设备702的执行环境内执行该web脚本内容。在720,响应于所评估的参数,应用程序710向该应用程序提供动态解决方案。如上所述,该解决方案可涉及修改、替换、移除、或扩充所发起的执行启用。在722,显示器706向用户显示所提供的解决方案722。
[0056] 出于说明的目的,程序和如操作系统等其他可执行程序组件在此被示为各离散的框。然而,可以认识到,这样的程序和组件在不同时间驻留在计算机的不同存储组件中,并由计算机的数据处理器执行。
[0057] 尽管结合包括客户机设备702的示例性计算系统环境进行了描述,但本发明的实施例可用于众多其他通用或专用计算系统环境或配置。计算系统环境不旨在对本发明的任何方面的使用范围或功能提出任何限制。而且,计算系统环境不应被解释为对在示例性操作环境中所示组件的任何一个或组合有任何依赖性或要求。适用于本发明各方面的公知的计算系统、环境和/或配置的示例包括,但不限于:个人计算机、服务器计算机、手持式或膝上型设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费电子产品、移动电话、网络PC、小型机、大型机、包括上述系统或设备中的任一个的分布式计算机环境等。
[0058] 本发明的各实施例可以在由一个或多个计算机或其他设备执行的诸如程序模块等计算机可执行指令的通用上下文中描述。一般而言,程序模块包括但不限于,执行特定的任务或实现特定的抽象数据类型的例程、程序、对象、组件和数据结构。本发明的各方面也可以在其中任务由通过通信网络链接的远程处理设备执行的分布式计算环境中实现。在分布式计算环境中,程序模块可以位于包括存储器存储设备在内的本地和远程计算机存储介质中。
[0059] 软件体系结构的上下文中的接口包括软件模块、组件、代码部分、或其他计算机可执行指令的序列。该接口包括例如第一模块,该模块访问代表第一模块执行计算任务的第二模块。在一个示例中,该第一和第二模块包括诸如由操作系统提供的应用程序编程接口(API)、组件对象模型(COM)接口(例如,用于对等应用程序通信)和可扩展标记语言元数据交换格式(XMI)接口(例如,用于web服务之间的通信)。
[0060] 接口可以是紧耦合的同步实现,诸如在Java 2平台企业版(J2EE)、COM、或分布式COM(DCOM)的示例中。另选地或另外地,接口可以是松耦合的异步实现,诸如在web服务中(例如,使用简单对象访问协议)。一般而言,接口包括以下特性的任何组合:紧耦合、松耦合、同步、和异步。此外,接口可遵循标准协议、专有协议、或标准和专有协议的任何组合。
[0061] 此处所描述的接口都可以是单个接口的一部分,或可被实现为独立的接口或其中的任何组合。接口可以本地或远程地执行以提供功能。此外,接口可包括比此处所示出或描述的更多或更少的功能。
[0062] 本发明的各实施例可以用计算机可执行指令来实现。计算机可执行指令可以被组织为一个或多个计算机可执行组件或模块。本发明的各方面可以用任何数量的这些组件或模块及其任何组织来实现。例如,本发明的各方面不限于在各附图中示出和本文中描述的特定的计算机可执行指令或者特定的组件或模块。本发明的其他实施例可以包括具有比在本文中示出和描述的更多或更少的功能的不同计算机可执行指令或组件。
[0063] 除非另有指定,否则此处所示和所述的本发明各实施例的操作的执行或进行的次序并不重要。即,除非另有指明,否则各操作可按照任何次序执行,且本发明的实施例可以包括比本文所公开的更多或更少的操作。例如,构想了在另一操作之前、同时或之后执行或进行一特定操作是在本发明各方面的范围之内的。
[0064] 当介绍本发明或其实施例的各方面的各元素时,冠词“一”、“一个”、“该”和“所述”指的是存在该元素的一个或多个。术语“包括”、“包含”、“具有”旨在是包括性的并且指的是可以有除所列元素之外的其他元素。
[0065] 在详细描述了本发明的各方面之后,可以清楚,修改和变化是有可能的,而不背离所附权利要求书中定义的本发明各方面的范围。不背离本发明各方面的范围的情况下,可对以上构造、产品和方法进行各种改变,以上描述中所包含的以及在附图中所示出的所有一切旨在应被解释为说明性并且没有限制意义。
[0066] 附录A
[0067] 示例实现
[0068] 以下示例示出从源代码到安全代码的转换以及该安全代码的执行,其在图14中示出(最内部的矩形“CODE SAMPLE(代码示例)”1402)。在图14中,考虑以下源“代码”。
[0069]
[0070]
[0071]
[0078] Sample
[0079]
[0080]
[0081]

Code Sample

[0082]

Current Time:

[0083]
Click inside to see the body HTML

[0084]
[0096]
[0097]
[0098] 如可看到的,以上源代码包含CSS、HTML、以及JavaScript。CSS对标签应用样式,并且脚本将事件附连到“body(正文)”。HTML包含具有“id”的。可以看到,在以上源代码的转换和执行期间,运行时将:1.确保该代码引用的“body”是结果页面中的代码的沙箱容器(在该实施例中,沙箱是
),如在图15中所示。这适用于CSS样式以及脚本引用(attachEvent(附连事件)和innerHTML(内部HTML));以及2.将部分的“id”重命名成对该代码唯一的id。这对该代码是透明的,所以它将仍然访问“currentTime(当前时间)”。运行时注意映射。
[0099] 在转换以上代码时,产生以下代码:
[0100] $Policy.registerCode(function(a){
[0101] s.addSheet({″%body%″:{″margin-left″:″0px″,″margin-right″:″0px″,″margi
[0102] n-top″:″0px″,″margin-bottom″:″0px″,″background″:″lightblue″}});
[0103] var b=a.g,
[0104] c=a.s,
[0105] d=a.i.
[0106] e=a.n,
[0107] f=a.f;
[0108] c(b(document,″documentElement″),″innerHTML″,″

Code

[0109] Sample

Current Time:Tue Sep 25 09:05:08[0110] PDT 2007
Click inside to see the body HTML

″);
[0111] d(b(document,″body″),″attachEvent″,[″onclick″,f(function()
[0112] {
[0113] d(window,″alert″,[b(b(document,″body″),″innerHTML″)])
[0114] })]);
[0115] d(window,″setInterval″,[f(function()
[0116] {
[0117] c(d(document, ″ getElementById ″,[″currentTime″]),″innerText″,e(Date,[]))
[0118] }),10]);
[0119] c(document,″title″,″Sample″)
[0120] },″SampleCode″)
[0121] 当前实施例将原始HTML转换成:方法调用:registerCode(注册代码)。如可看到的,该方法调用可以被安全地注入容器页。它们仅是对运行时的调用。转换步骤将CSS转换成“JSON”格式。这一JSON对象用作运行时的输入。
[0122] 一个实施例简单地将HTML从源转换成“documentElement(文档元素)”的“innerHTML”的属性值。运行时将确保HTML是安全的并符合主要策略。注意:将来实施例可以将源HTML转换成其他格式,如JSON。在该实施例中,并非如上所示地调用“addSheet(添加表单)”,而是将设置传递到registerCode。
[0123] JavaScript代码被转换成对运行时方法“b”、“c”、“d”等的调用。这些是确保属性设定/取得、方法启用和对象创建符合这些策略的运行时方法。
[0124] 在经转换的代码在所得页面中“运行”时,运行时产生以下代码段:
[0125]
[0129] 源CSS使用“标签选择器”句法来将样式应用于“”标签。这已被转换成应用于具有“ms_id1”类的元素的“类选择器”。现在是
部分成为经转换的HTML的“沙箱”。
[0130]
[0131] _$SafeType=″tag″>
[0132]

Code Sample

[0133]

Current Time:

[0134] _$SafeType = ″ tag ″ >Tue Sep 25 09:38:07PDT 2007
Click inside
[0135] to see the body HTML

[0136] 如可看到地,运行时用“ms_id1”对id加了前缀以确保其是唯一的。当然,沙箱代码不知道这一点已经发生。在每一定时器计时,其都设定“currentTime”的innerText(内部文本)。
[0137] “lightblue(淡蓝)”的CSS背景色只应用于分配给该源的沙箱区域。在点击进入该区域时,代码示出包含“body”的警告框。