提问者:小点点

什么时候应该使用HTTP头“x-content-type-options:nosniff”


  • 注意:nosniff只适用于“脚本”和“样式”类型。同样,将nosniff应用于图像也与现有的web站点不兼容。[1]
  • Firefox在支持图像的nosniff时遇到了问题(Chrome不支持)。[2]
  • 注意:现代浏览器只尊重脚本和样式表的标头,当其他资源(如图像)与错误的媒体类型一起提供时,发送标头可能会在旧的浏览器中造成问题。[3]

上面的引用(和其他引用)表明,简单地为所有响应设置这个标题是不好的,但是尽管遵循了任何相关的链接并在谷歌上搜索,我还是找不到这个论点背后的任何理由。

设置x-content-type-options:nosniff有哪些风险/问题,为什么要避免使用text/csstext/javascript以外的MIME类型?

或者,如果没有风险/问题,为什么Mozilla(和其他人)建议存在风险/问题?


共1个答案

匿名用户

肖恩·索伯恩的回答很有帮助,给我指出了一些好的材料,这就是我授予赏金的原因。然而,我现在做了一些更多的挖掘,我想我有了我需要的答案,结果是与肖恩给出的答案相反。

因此,我将回答我自己的问题:

上面的引用(和其他引用)表明,简单地为所有响应设置这个标题是不好的,但是尽管遵循了任何相关的链接并在谷歌上搜索,我还是找不到这个论点背后的任何理由。

有了这样的解释,一切都变得更有意义,答案也变得清晰起来:

您需要为所有文件提供nosniff标头,以降低来自用户内容的注入攻击风险。

只提供带有此头的CSS/JS文件是毫无意义的,因为这些类型的文件在此上下文中是可以接受的,不需要任何额外的嗅探。

或者,如果没有风险/问题,为什么Mozilla(和其他人)建议存在风险/问题?

没有问题。

所描述的问题涉及web浏览器在访问内容时应用nosniff规则时破坏与现有站点兼容性的风险。Mozilla的研究表明,由于服务器配置错误,在标记上强制nosniff选项会破坏许多站点,因此在图像上下文中会忽略标头。

如果您使用的是nosniff标头,请确保您也提供了正确的content-type标头!

一些参考资料帮助我更全面地理解了这一点:

  1. 定义此标头的WhatWG获取标准。
  2. 与WebHint.io站点检查工具的此标头相关的讨论和代码提交。