BT

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

Internet Explorer更改MIME处理方式以提高安全性

| 作者 崔康 关注 1 他的粉丝 发布于 2010年10月28日. 估计阅读时间: 2 分钟 | CNUTCon 了解国内外一线大厂50+智能运维最新实践案例。

来自Web服务器的每一个文件都有对应的MIME类型(也称为content-type),描述文件内容的属性,比如图片、文件、应用等。最近,IE开发经理Eric Lawrence在IE官方博客中就MIME处理方式的变化和安全性做了详细解释。

以前,某些HTML元素(特别是Link和Script)不会验证Web服务器提供的MIME类型。例如,即使Script的src属性指向一个声明为text/plain类型的文件,浏览器也会运行Script脚本。Eric强调这种方式存在安全隐患:

这会导致一些安全漏洞,特别是Link元素。

比如这样一种攻击,恶意网站包含一个指向另一网站HTML内容的Link引用。如果HTML内容包含常见字符,那么可能会被恶意网站的页面脚本访问。这种信息泄露会导致跨网站请求伪造和其他攻击(详见Carnegie-Mellon大学的一篇论文)。

在最近发布的一个安全更新中,微软开发团队修改了IE6/7/8的CSS处理方式——阻止所有跨源样式表(cross-origin stylesheet)除非它们声明了正确的HTTP相应头:Content-Type: text/css,这种保护措施可以确保Link和@IMPORT不会成为窃取其他网站内容的帮凶。

对于IE 9来说,除了修复以上问题,在MIME处理方面还包括了三个重要的安全性变化:

  1. 在IE 9标准模式下,同源样式表也必须采用正确的text/css类型,否则会被忽略。
  2. 如果服务器端指定X-Content-Type-Options: nosniff,那么Script元素将拒绝错误的MIME类型响应,在这种情况下正确的MIME类型是["text/javascript"、"application/javascript"、"text/ecmascript"、"application/ecmascript"、"text/x-javascript"、"application/x-javascript"、"text/jscript"、"text/vbscript"、"text/vbs"]。
  3. 采用text/plain类型传输的文件,IE不会主动将其判定成另一类型。

评价本文

专业度
风格

您好,朋友!

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

获得来自InfoQ的更多体验。

告诉我们您的想法

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

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

最好都严格按照标准 by Jeffrey Zhao

不要兼容,也不要破坏。

早就该修的bug by Feng Tiger

IE把text/plain类型的文件优先当作html解释以及很有年头了,IE6到了IE8还是这样,很容易被用于攻击。

允许的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通知我

2 讨论

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


找回密码....

Follow

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

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

Like

内容自由定制

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

Notifications

获取更新

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

BT