IE和Content-disposition内联vs.扩展令牌

4

前言

所以IE进行Mime-Type嗅探。这部分是老新闻了。

应对它的建议通常是“提供一个IE信任的内容类型”(即任何不是text/plain或application/octet-stream的内容类型)或“在文件开头添加明确属于你正在提供的类型的无关数据”。

现在,我正在开发一个必须允许消息附件(就像电子邮件中的附件一样)偶尔内联显示(再次像电子邮件中一样),我们想要关闭XSS向量。IE的mime嗅探(在未修补的IE6-中,我必须支持,例如IE6 / Win2000)是其中之一 - 带有html内容的text/plain文件将触发为html。此时重新编码不是一个选项,如果对文件的恶意毫无疑问,才可以更改用户提供的附件 - 而且有人可能想将HTML作为文本发送。

现在,Microsoft的MSDN文章表明情况可能比广告宣传的要容易解决:

如果Internet Explorer知道指定的Content-Type,并且没有Content-Disposition数据,Internet Explorer会执行“MIME嗅探”,[...]

太好了!

但是我没有IE,也没有可靠安装它的手段(我意识到这对于一个网站开发人员来说是相当糟糕的状态,我希望尽快解决这个问题),而且这是灰色理论,我似乎无法确认其一方或另一方。本地消息源称该行为胡言乱语 - IE将对任何Content-Disposition:inline / <default>并且不足以满足其在-Type中的口味的内容进行Mime嗅探。

那么x-*( RFC中的'extension-token')呢?

尝试在谷歌上搜索浏览器如何处理“Content-Disposition:<extension-token>”并没有找到任何结果(虽然可能是我的操作有误,最近我对谷歌的理解正在严重下滑)。我找到了一个看起来很有希望的问题, 但事实证明这是主题作者的误解,因此那里实际上从未解决过这个问题。
问题:
IE是否真的会进行Mime嗅探,如果您明确传递“Content-Disposition:inline”?
如果是这样:这里是否有人知道浏览器如何处理“Content-Disposition:<extension-token>”?
如果他们以一种对于我的目的来说是良性的方式进行这样做,即假定它与默认值同义(有效地是“内联”,尽管我听说它在任何地方都没有定义?),那么它是否足够具体,使IE不需要进行Mime嗅探?或者我实际上是否在自取灭亡,认为要追求这条路?

4
顺便提一下:RFC 1806已被RFC 2183取代。 - Julian Reschke
1
有没有可能只在无 cookie 域上提供附件内容?这样你就不必担心附件中的脚本注入,因为没有 cookie 或会话信息可以被窃取。 - Annie
@Annie:虽然那是一个我没有想到的绝妙观点,但恐怕不是。:( - pinkgothic
3个回答

3

注意:

在Windows XP Service Pack 2(SP2)的Internet Explorer 6中,“text/plain” MIME类型不会产生歧义,并且即使内容表明这是正确的格式,在受限制的区域中也永远不会呈现为HTML。


是的,我知道SP2补丁(说实话没有更好的说法)。:) 但你说得对,应该提一下。谢谢。 - pinkgothic

2
我记得使用一些Content-disposition: attachment可以正确返回文本,但我不确定它是否适用于您的情况。
但这肯定会有帮助:
您不需要Windows(r)来安装ie6。尝试使用ies4linux

1
你可以使用像 http://browsershots.org 这样的网站。虽然速度比较慢,但比打电话给朋友让他去某个网址并告诉你发生了什么要舒服得多 :P - naugtur
@naugtur: <del>没有人来打败我?该死。</del> 我使用 Kubuntu,但配置方面可能非常糟糕。不用太担心,我相信这只是这个特定系统的怪癖,因为我完全不会说 Linux。;) 我知道 browsershots - 如果其他方法都失败了,可能需要研究一下,设置一个网站会相当棘手。回家后最好在自己的 Windows 机器上使用自己的代码,而不是在工作时使用。 :)) 但还是谢谢! - pinkgothic
1
谢谢。我读了一下,想着您可以尝试检查是否返回文件扩展名有所帮助。在某个地方提到过,但我不太理解MSDN网站。并不是我不懂英语,只是有时候不知道他们在说什么 :P - naugtur
@naughtur: 我意识到这是一个非常古老的问题了,但是在这些幻灯片中有一个很棒的流程图:http://www.hitcon.org/hit2011/downloads/09_Make%20A%20Contract%20with%20IE%20and%20Become%20a%20XSS%20Girl.pdf - 所以,是的,扩展程序似乎会有所帮助!(而且开发者悬赏和被接受的答案现在是分开的。 ^_^) - pinkgothic
抱歉,打错字了。 :D 你在推测吗?(毕竟我回答了一年前的问题,有点淘气...)谢谢你的建议,我可能会这么做!但如果你比我先完成了,那你就是名副其实的牛人了。;) - pinkgothic
显示剩余4条评论

-1

我发现http://www.browserstack.com/非常有用。你可以通过Flash应用程序在他们的服务器上使用任何浏览器的任何版本。

这是一个付费服务,但你可以通过modern.ie上的链接免费测试三个月(由于微软知道你需要像这样的工具来开发Internet Explorer),


在浏览modern.ie网站时,我还发现了一些不同版本的Windows/IE的VirtualBox镜像。不过我还没有尝试过。 - Koter84

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接