正文内容 评论(0

技术与创新!五款主流浏览器的秘密
2009-04-17 11:22:47  出处:IT168  作者:佚名 编辑:稻草人     评论(0)点击可以复制本篇文章的标题和链接

当前,浏览器市场正逐渐升温——各大浏览器厂商都正在更新版浏览器,谷歌也通过Chrome参与到市场角逐中。通过分析IE 8.0、Firefox 3.1、Opera 10和Safari 4的测试代码,检测谷歌的Chrome浏览器,我们发现,这些浏览器都有了许多明显的改进——更好的性能、更注重隐私、集成Web应用、更漂亮的界面等等。

当然,也出现了一些根本性的改变,比如安全功能、网络功能,以及开始流行起来的开发功能——让IT专业人士更好地支持用户或者帮助网站设计者更好的了解网站的功能。

技术与创新!五款主流浏览器的秘密

第一部分:安全

随着网络欺诈、恶意软件和跨站点脚本( XSS )攻击的急剧增加,浏览器厂商开始重新设计其安全功能。最新版本的众多浏览器都包含了一些微妙改进,以进一步增强其安全性。尤其是IE8包括了几个重要的变化,这些变化需要开发人员和管理员在利用这些安全特性之前有足够的了解。

1、IE8采取的跨站点脚本

为了帮助遏制日益猖獗的跨站点脚本攻击,微软为IE 8增加了一个过滤器,XSS安全漏洞中,最常见的一类称为“反射类”,或“类型1”的XSS安全漏洞。IE8中的XSS过滤器就是为了保护普通用户即使在访问的网站存在XSS安全漏洞的情况下,也能避免类型1的XSS攻击。XSS过滤器可以监控浏览器的HTTP请求和响应。如果发现了可疑的XSS攻击脚本,它就会提示用户,并且自动将恶意的脚本过滤为普通的文本信息显示在页面上。

需要强调的是,XSS过滤器的目的是为了阻止最为常见的XSS攻击。它并不能阻止所有类型的XSS攻击,更不意味着WEB开发人员从此就不需要关注其网站是否存在XSS安全漏洞了。基于兼容性的考虑,如果网站的开发人员希望XSS过滤器不对其网站内容检查的话,可以设置以下HTTP头信息:X-XSS-Protection: 0

技术与创新!五款主流浏览器的秘密
XSS过滤器

2、防范Clickjacking

防范Clickjacking(点击劫持)——让用户相信他们所点击的链接是真实合法的。IE 8现在引入了一种新的HTTP标头 (header)X-FRAME-OPTIONS,以规定该页面是否可以被嵌入在iframe里面。如果X-FRAME-OPTIONS的值为DENY,那么IE8就不允许该页面包含在一个框架中;如果其值为SAMEORIGIN,那么只有在顶级浏览内容与包含X-FRAME-OPTIONS的内容不同源时,IE才会阻止该页面。

举例来说,如果http://shop.example.com/confirm.asp包含一个DENY伪指令,那么该页面就无法放入一个子框架中,无论父框架位于何处。相反,如果X-FRAME-OPTIONS伪指令的值为SAMEORIGIN,那么该页面就可以放入到任何来自http://shop.example.com 页面的框架中。

当X-FRAME-OPTIONS阻止显示某页面时,浏览器会弹出一个本地错误页面,说明有关限制,并提供一个链接,该链接将在一个新的窗口中打开框架。当在一个新的窗口中显示,而非在子框架中显示的话,那么页面内容也就无法为点击劫持所用了。

另外一种可以帮助防范clickjacking的方法就是,利用frame busting 的技巧,在页面中添加一段Javascritp:

技术与创新!五款主流浏览器的秘密

它的目的是为了防止页面被iframe引用。但是由于这段代码是JS写的,所以有很多方法可以绕过去,或者是可能被绕过去。如果用HTTP标头,则会更加可靠。

3、跨站点请求伪造

要确保来自Web服务器的请求与之前交付页面的请求保持一致,这也是一种减少Clickjacking和跨站点请求伪造攻击。传统的做法是检查HTTP参考标题,并可以通过使用服务过滤器和应用改变来实现。

有趣的是,使用参考标题是一种相当合理的解决办法,但事实上,它常常会出于保护用户隐私而不被人们看好。

新兴的下一代浏览器会采用一种新型的Origin header,可以提供类似的功能同时无需担忧个人隐私。为了减少CSRF攻击,确定和监测哪些网站和服务可以连接到他们的站点,这对于网站管理员来说是一项十分重要的任务,应该把它和应用开发一视同仁。

4、MIME Smuggling:IE8中的一个开关

IE浏览器中的一个恼人问题是:当微软把问题尽量处理得更简单时,到最后,却给用户和网站所有者带来无尽的安全困扰。

技术与创新!五款主流浏览器的秘密

一个典型的例子就是MIME-sniffing。IE有一个特性,那就是在将一个文件展示给用户之前会首先检查文件的类型,这乍看起来并没什么问题,但实际上这是相当危险的,因为这会允许IE执行图片中的代码,即嵌入在一个图像中的JavaScript代码。引入MIME sniffing功能的初衷是用来弥补Web服务器响应一个图像请求时有可能返回错误的内容类型信息这一缺陷。

IE引入的MIME sniffing或者MIME类型检测方法,都会让IE假定来自web的文件的内容类型就是服务器在HTTP标头中的所声明的内容类型。IE浏览器既不信任文件名扩展部分,也不信任签名,相反,它是通过检查文件开头的256字节内容来确定文件的类型。IE引入MIME sniffing功能的初衷是用来提防服务器给出的错误内容类型指示的,但是攻击者却利用它来规避IE中的安全防御功能,即防止浏览器自动地执行所下载的文件(如hta文件)的那些功能。

微软公司已经认识到这个问题,并计划在IE的新版本中加以修复。IE8不再探测图像,因此,它会忽略嵌入的HTML。现在,IE8的网站管理人员和应用开发者,可以通过在应答中发送X-Content-Type-Options: nosniff来关闭MIME sniffing功能。

5、HTTP-ony cookies

一旦跨站点脚本攻击获得成功,他们都有一个共同的意图:利用cookies劫持会话或者账户登录。Firefox 2/3+ 和IE 6 SP1+版本都支持cookies扩展,这就使得非法的JavaScript也能够读取到被标记为“HTTPOnly”的cookies。

在cookie中设置HTTPOnly标记,可以有效地阻碍跨站脚本攻击中被插入的非法JavaScript,从而避免恶意读取或者更改cookie,也可以减少会话劫持问题的出现。

6、跨域访问:潘多拉的盒子?

传统的AJAX应用程序无法打破同一来源的安全政策。比如,现在你看到的所在页面就是对应一个合法的网站域名:www.it168.com,并不能通过其他的域来访问。这种限制是具体地严格对照域名字符串来实现的。因此,it168.com会自动限制跨域访问。这种限制具有重要的安全意义,尤其是当考虑到动态JavaScrip时候。

第二部分:网络

虽然没有安全性那样实现众多的改进,但是,在浏览器中却出现了一个有趣的功能以提高性能。Chrome体积进一步得到压缩,并去除了不少功能。

1、连接限制可以突破

传统的HTTP 1.1兼容的浏览器都会永久地限制为一个域只能建立2个连接。IE8 和 Firefox 3+已经将连接限制增加到了6个。在非永久连接时,该值可以更高。其他的浏览器也大多取消了这种连接限制,从而,限制为2个连接已经成为了历史。

不过,这些浏览器对连接限制的更改可能会增加服务器的负载,因此,网站管理员应该更多的了解他们的服务器的承载力。

2、预缓存DNS查看

许多网站会使用各自不同的脚本来提供分析、widgets和丰富的Web服务。某个单一的页面可能就包含了比以前更多的DNS查找。鉴于不同网域解决问题需要不同的时间,如果查找DNS的话可能会放缓网页的渲染速度。不过,Chrome和Firefox 3.1内置有DNS预设功能。

通过预设置来提高性能在浏览器业内并不算什么新鲜事。Firefox一直以来都支持通过如下标记来预读内容 ,或者诸如这样的HTTP标头:<link rel="prefetch" href="fatimage.jpeg">,或者诸如这样的HTTP标头:<fatimage.jpeg>; rel=prefetch。

当这些浏览器变得越来越流行的时候,网络管理员会发现DNS查询会大幅增加。内容预读技术的使用应该同应用开发人员讨论,以确保它们是被用来改善使用效能或者为维护服务器和网络性能而加以限制。

3、使用新的协议

Chrome推出了一些利用新型协议的功能。Chrome支持bzip2协议压缩传输,它可以为普遍采用gzip格式压缩算法的大量文本节省有效载荷。而bzip2的优势,当然就是压缩比的提高了。拿sina首页来说,html页面本身,经过gzip压缩之后,有83KB,而经过bzip2压缩之后,只有71KB了。12KB的差距,乘以新浪首页的PV,这个数值还是比较大的。

技术与创新!五款主流浏览器的秘密

想知道你的浏览器是否支持bzip2压缩传输?你可以用浏览器访问http://gfans.org/scripts/bzip2.php,如果支持bzip2,那么会出现gfans.org的字样。

Chrome也通过HTTP(SDCH)引入了共享词典压缩,你也可以在谷歌的工具栏上发现它。SDCH 是最新版 Google 工具栏的一种新式压缩技术,它使用 HTTP 共享字典压缩来加速生成 Google.com 搜索结果。 启用 SDCH 后,您可能会在 HTTP 访问量中看到以下标头:
Browser request:
Accept-Encoding: sdch, gzip
Avail-Dictionary: R2bxhrov
X-SDCH: Google 1.0.919.1957
Server response:
Content-Encoding: sdch, gzip
X-SDCH-Dictionary: Zu9moukL

网络管理员应该充分利用新的压缩,并要求优化以提高网站访问速度和提供更多可扩展性。

技术与创新!五款主流浏览器的秘密

4、离线浏览

现在的浏览器的一个主要变化就是,支持离线浏览,离线浏览的第一步就是存储数据。现在的大多数浏览器包括IE8、Firefox 2+ 和Safari都可以执行DOM存储,把大量的数据保存到本地。Safari甚至支持HTML 5本地数据库存储,其他浏览器也将支持HTML 5。

Firefox,包括3.1版的Firefox 也添加了应用程序缓存来改进产品性能。IE 8 和Firefox 也都支持JavaScript property navigator。还支持联机检测浏览器的连接状态,如果离线,那么浏览器就不会再依赖那些需要联机使用的插件。

现在很少有管理员会考虑到技术所发生的变化。不过,在不久的将来,网络和标准应用之间的界限将变得模糊,任何应用程序的部署和管理都将适用于这两者。

第三部分:发展成果

每当浏览器出现重大创新的时候,最兴奋的莫过于Web开发人员了。最大的变化——IE 8重拾浏览器标准宝座——将是最重大的改进,因为需要一些“先发制人”,以免最终出来的浏览器会让Web网站所有者头疼。

IE8 :冲击标准模式

Web开发人员一直以为IE 浏览器没有很好地支持HTML和CSS标准。技巧和建立的一些环境要求IE 6和 IE 7浏览器能提供一些适当的布局。由于IE 8的引入,大部分这些技巧将不再变得必要。但不幸的是,当新的浏览器遇到旧的“补丁”,页面布局可能就会中断。为此,微软为用户提供了特殊的兼容模式按钮,当遇到无法兼容IE8的网站时用户只需启动该模式即可浏览。

技术与创新!五款主流浏览器的秘密

然而,与其强迫用户“兼容”你的网站,还不如增添一个补丁让网页可以自行修改。诸如这样的HTML标记<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7"> ,或者等值于HTTP报头中添加X-UA-Compatible: IE=EmulateIE7 ,让浏览器进入另外一种模式。

CSS 3预览

当微软正忙于处理老版本的CSS 1 和CSS 2,其他浏览器厂商则大量的使用CSS 3的各种功能,包括边界图像、下拉阴影、下载字体等。

技术与创新!五款主流浏览器的秘密

更丰富的调色板也即将可用,并且由于前缀规则的使用——类似webkit和-moz等这些新CSS属性——使用最新的技术,可以把许多这样的功能可以分层到文档中,即使使用旧版本浏览器的用户也不会受到影响。

JavaScript 的“极品飞车”

现在的浏览器JavaScript的性能都得到了很大提升。除了IE8其他所有的浏览器都采用了最新的JavaScript引擎:Chrome的V8引擎,Safari新推出的Squirrelfish引擎,以及Firefox 3.1的Tracemonkey和Opera 10的Carakan引擎。

根据微软消息显示,IE 8 发布后,也会在这一方面增添更多改进。我们以前关注的是性能表现,但这往往取决于最新基准和框架,由此可以肯定,将来的每个浏览器都将具有更快的JavaScript引擎。

JavaScript  新功能说明

追求代码运行速度更快的部分动机是,浏览器会中断运行缓慢的脚本以降低浏览器无响应的发生。然而,为了实现安全冲浪而限制JavaScript 的运行,却也不是个好主意。Firefox 3.1引入了一种Web workers的观念,它能让JavaScript开发者在后台运行一些JavaScript任务。

特别值得一提的是,JavaScript 的功能水平也发生了改变。DOM脚本编程领域一项重大的进步——W3C Selector API。迄今为止,在使用DOM2级API的前提下,要想从DOM中取得HTML元素,只能使用document.getElementById,或者使用document.getElementsByTagName然后再手工编码进行筛选。随着CSS的普及,可以利用Selector API定义了querySelector和querySelectorAll的方法,以CSS选择符为参数,分别返回匹配的第一个元素和所有匹配元素的StaticNodeList(静态节点列表)。这两个方法既可以通过document 对象调用,以便在整个文档范围内查询目标元素,也可以通过个别的HTML元素调用,以便只在该元素的后代元素中查询目标元素。同样,IE8和Firefox 3.1对JSON encode 和JSON decode的支持,这不仅提高了一些AJAX应用程序的性能,也可以进一步增强其安全性。

当代的HTML 5特性

HTML 5 是超文本置标语言下一个重要版本,它旨在提高 HTML 的交互行,支持当前多样的,复杂的 Web 内容。同时,它也会解决 HTML 4 Web 应用功能上的欠缺,比如:HTML 5 将提供多个 API,如音频和 视频标签可以让开发者不借助第三方工具直接播放 Web 视频和音频;用户可以编辑网页的部分内容并实现同网页的交互;可以实时修改参数对图形进行修改。

目前,Safari 3、Safari4和Firefox 3.1就支持HTML5的<audio> 与 <video>的多媒体标签。IE8也支持DOM存储的HTML5简单元素的应用。HTML 5的新特性让更多浏览器变得比以往任何时候都复杂,并会导致出现一个“臃肿的客户端”的方法应用。网络管理员应该清楚地知道,其中哪些新功能是需要注重安全性的,哪些是注重速度的。

浏览器大战——鹬蚌相争,渔翁得利

虽然这会导致浏览器的使用出现重大调整,但是,我们仍然能收获不少“战利品”。漂亮的标签和“警醒”的URL工具栏,对用户来说都是不错的东西。不过,看到浏览器厂商时常为浏览器的安全而修复漏洞,网络和开发架构应该确保以后能够有更大的改进。

责任编辑:

文章内容举报

  • 支持打赏
  • 支持0

  • 反对

  • 打赏

文章价值打分

当前文章打分0 分,共有0人打分
  • 分享好友:
  • |
本文收录在
#映众

  • 热门文章
  • 换一波

  • 好物推荐
  • 换一波

  • 关注我们

  • 微博

    微博:快科技官方

    快科技官方微博
  • 今日头条

    今日头条:快科技

    带来硬件软件、手机数码最快资讯!
  • 抖音

    抖音:kkjcn

    科技快讯、手机开箱、产品体验、应用推荐...