前言
所以IE进行Mime-Type嗅探。这部分是老新闻了。
应对它的建议通常是“提供一个IE信任的内容类型”(即任何不是text/plain或application/octet-stream的内容类型)或“在文件开头添加明确属于你正在提供的类型的无关数据”。
现在,我正在开发一个必须允许消息附件(就像电子邮件中的附件一样)偶尔内联显示(再次像电子邮件中一样),我们想要关闭XSS向量。IE的mime嗅探(在未修补的IE6-中,我必须支持,例如IE6 / Win2000)是其中之一 - 带有html内容的text/plain
文件将触发为html。此时重新编码不是一个选项,如果对文件的恶意毫无疑问,才可以更改用户提供的附件 - 而且有人可能想将HTML作为文本发送。
如果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嗅探?或者我实际上是否在自取灭亡,认为要追求这条路?