BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

微软的浏览器操作系统:Gazelle

| 作者 Jonathan Allen 关注 595 他的粉丝 ,译者 王瑜珩 关注 0 他的粉丝 发布于 2009年7月15日. 估计阅读时间: 4 分钟 | CNUTCon 了解国内外一线大厂50+智能运维最新实践案例。

Google并不是唯一试图创建基于浏览器的安全操作系统的厂商。今年二月,来自微软的研究人员就透漏了Gazelle的细节。Gazelle被称为“使用多用户操作系统技术构造的安全浏览器。Gazelle的内核可以隔离不同来源的网页代码,并管理所有系统资源”。

与Chrome OS构建在Linux上一样,Gazelle并不是一个真正的操作系统。它是构建在操作系统级别的一个服务层,以便扩展浏览器的安全模型。Principal由协议、域名以及端口三部分组成,在进程级别不同的组合之间互相隔离,它是整个系统的关键部分。

为了防止跨网站脚本攻击等问题,页面只能直接渲染同一来源(Principal)的内容,其他来源的内容将根据来源被放到单独的进程中进行渲染,不同来源 的内容通过“浏览器内核”进行通信。浏览器内核实际上是一个受限的操作系统进程,用C#代码写成,它负责协调进程间的通信。浏览器内核与进程通过在命名管 道(named pipes)中发送XML消息进行通信。每个进程的渲染结果,将被浏览器内核组合在一起,成为最终的显示结果。

Gazelle拥有针对不同浏览器问题的特性,如插件、混合http/https,以及递归整合攻击(recursive mashup attack)。

插件:Gazelle在使用插件的内容上强制使用同源策略(same-origin policy),也就是说插件中的内容以它自己的来源运行(而不是放置它的页面的来源)。由于插件是浏览器漏洞增加的主要原因,因此在浏览器内核中对插件 强制执行策略非常重要。现有的插件需要改写(移植或重写)以调用浏览器内核来实现功能。Alexa前100的网站中有34个网站只使用了Flash,而没 有使用任何其它插件。这显示仅修改Flash就可以解决很大一部分插件的兼容性问题。

包含HTTP脚本和CSS的HTTPS:在Gazelle中,使用HTTPS来源的页面不能包含任何使用HTTP的脚本和CSS。其它类型的内容如图片和 插件,则会运行于页面来源的进程中。这在Gazelle中可以改变,但是为了防止HTTPS包含HTTP脚本和CSS,Gazelle强制执行更严格的安 全策略以对抗网络攻击。由于Alexa前100网站并不使用SSL,我们选择了另一些使用SSL的网站:amazon.com、 mail.google.com、mail.microsoft.com、blogger.com以及一些其它常见的银行网站。这些网站都没有违反我们的 策略。

限制框架导航:父框架(frame)只能访问它的子框架,而不能访问子框架的子框架或其它来源(principal)的框架。在Gazalle中那些访问 非子框架的代码将无法运行。通过限制导航范围,Gazelle可以防止在正常网站中访问到恶意网页。Barth等人分析了这一类攻击并称之为“递归整合攻击”。我们无法用我们的测试框架来自动测试是否有网站违反了这一策略。

这种隔离的代价颇为昂贵,对于mytime.com这种包含跨来源框架的复杂网页来说,渲染时间可能会翻倍。不过这些影响可以通过改进浏览器内核的组合显示内容部分来降到最低。

你可以在微软研究院的网站上查看论文全文,比较一下与现有的浏览器有什么不同,比如Google Chrome。

查看英文原文:Microsoft’s Web Browser-Based OS: Gazelle

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

通过C#实现浏览器内核 by Jeffrey Zhao

很好,很期待,希望能够开源。

Re: 通过C#实现浏览器内核 by 霍 泰稳

“希望能够开源”?这个好像有些奢求。

给我们开发人员带来什么? by 王 登武

$M的产品肯定绑定在他们的产品上,既然和操作系统绑定,何谈浏览器操作系统呢

Re: 通过C#实现浏览器内核 by Jeffrey Zhao

希望吧……我觉得研究院的东西还是蛮有希望开源的,例如F#。

标题错了吧 by zhang coofucoo

这不是浏览器操作系统,只不过是多线程浏览器而已。而google Chrome在第一版推出的时候就是多线程的了。这只能说明微软看到Chrome之后也要做多线程浏览器。而google已经更进一步,开始上升为操作系统了。

Re: 通过C#实现浏览器内核 by wang egmkang

MS的东西都是基于COM的,C#写的"可以"开源,COM的东西貌似不开的吧?

Re: 标题错了吧 by Jeffrey Zhao

完全不是一个东西。

这里说浏览器操作系统,主要是指安全性上的,如Principle隔离,是内核级别的东西,用于类比的东西也应该是Google Native Client。

多线程浏览器这只是个浏览器实现的小技巧,属于具体产品上的小特性,Chrome和IE 8都已经实现了。

这可是微软研究院的研究课题啊,论文都发表了,不是简单的小东西。

Re: 通过C#实现浏览器内核 by Jeffrey Zhao

微软的东西不都是基于COM的。而且,开源不开源,和使用的技术有什么关系啊?

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

8 讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT