什么是"X-Content-Type-Options = nosniff"?

Kof*_*aus 256 html meta owasp http-headers penetration-testing

我正在使用OWASP ZAP对我的localhost进行一些渗透测试,并且它会不断报告此消息:

Anti-MIME-Sniffing标头X-Content-Type-Options未设置为'nosniff'

此检查特定于Internet Explorer 8和Google Chrome.如果Content-Type标头未知,请确保每个页面设置Content-Type标头和X-CONTENT-TYPE-OPTIONS

我不知道这意味着什么,我在网上找不到任何东西.我试过添加:

<meta content="text/html; charset=UTF-8; X-Content-Type-Options=nosniff" http-equiv="Content-Type" />
Run Code Online (Sandbox Code Playgroud)

但我仍然得到警报.

设置参数的正确方法是什么?

小智 162

它可以防止浏览器进行MIME类型的嗅探.大多数浏览器现在都尊重此标题,包括Chrome/Chromium,Edge,IE> = 8.0,Firefox> = 50和Opera> = 13.请参阅:

https://blogs.msdn.com/b/ie/archive/2008/09/02/ie8-security-part-vi-beta-2-update.aspx?Redirected=true

使用值nosniff发送新的X-Content-Type-Options响应头将阻止Internet Explorer从声明的内容类型中嗅探响应.

编辑:

哦,这是一个HTTP标头,而不是HTML元标记选项.

另见:http://msdn.microsoft.com/en-us/library/ie/gg622941(v = vs.85).aspx

  • 我想你错过了"什么是MIME类型嗅探?"部分. (26认同)
  • 你必须提到的是"托管不受信任内容的服务器".对于不显示用户上传内容的网站,您无需进行此设置. (21认同)
  • @machineaddict,**错**.无论内容是受信任还是不受信任,都会发生嗅探.请参见http://security.stackexchange.com/a/11761/2379.它会以微妙的方式破坏您的网站.如果您不喜欢惊喜,请始终禁用嗅探. (10认同)
  • `firefox`现在也支持这个标题:https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Content-Type-Options (2认同)

Gro*_*ify 111

描述

设置服务器的X-Content-Type-OptionsHTTP响应标头以nosniff指示浏览器禁用内容或MIME嗅探,该嗅探用于覆盖响应Content-Type标头以使用隐式内容类型猜测和处理数据.虽然这在某些情况下可能很方便,但它也可能导致下面列出的一些攻击.配置服务器以返回X-Content-Type-Options设置的HTTP响应标头,以nosniff指示支持MIME嗅探的浏览器使用提供的服务器,Content-Type而不是将内容解释为不同的内容类型.

浏览器支持

所述X-Content-Type-OptionsHTTP响应报头在浏览器,Firefox和边缘以及其他浏览器支持.针对X-Content-Type-Options的Mozilla开发者网络(MDN)浏览器兼容性表提供了最新的浏览器支持:

https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Content-Type-Options

攻击反击

  1. MIME混淆攻击通过允许用户上传恶意代码来启用用户生成的内容网站的攻击,然后由浏览器执行这些恶意代码将使用备用内容类型(例如隐式application/javascript和显式)来解释文件text/plain.这可能导致 "偷渡式下载"攻击,这是网络钓鱼的常见攻击媒介.托管用户生成内容的网站应使用此标头来保护其用户.这是通过提到的VeraCode OWASP它说以下内容:

    这减少了驱逐下载攻击和服务于用户上传内容的站点的暴露,通过聪明的命名,MSIE可以将其视为可执行或动态HTML文件.

  2. 也可以通过Content-Type嗅探启用未经授权的热链接.通过热链接到具有用于一个目的的站点(例如查看),应用程序可以依赖于内容类型嗅探并在站点上生成大量流量以用于可能违反其服务条款的另一个目的,例如 GitHub显示用于查看的JavaScript代码,但不执行:

    一些讨厌的非人类用户(即计算机)已经通过原始视图功能"使用热链接"资产 - 使用原始URL作为srca <script><img>标记.问题是这些不是静态资产.与Rails应用程序中的任何其他视图一样,原始文件视图必须在返回给用户之前呈现.这很快就会对性能产生巨大影响.在过去,我们被迫以这种方式阻止流行内容,因为它给我们的服务器带来了过大的压力.

  • 谁认为决定忽略明确的内容类型并使用猜测工作是个好主意?我的天啊... (2认同)

Won*_*Bae 103

# prevent mime based attacks
Header set X-Content-Type-Options "nosniff"
Run Code Online (Sandbox Code Playgroud)

此标头可防止基于"mime"的攻击.此标头阻止Internet Explorer从声明的内容类型中嗅探响应,因为标头指示浏览器不要覆盖响应内容类型.使用nosniff选项,如果服务器说内容是text/html,浏览器将把它呈现为text/html.

http://stopmalvertising.com/security/securing-your-website-with-.htaccess/.htaccess-http-headers.html

  • 这不应该一直都是这样吗?!我觉得很奇怪,浏览器会尝试表现得“聪明”并忽略显式的内容类型标头。 (8认同)

Com*_*eIn 22

对于Microsoft IIS服务器,您可以通过以下web.config文件启用此标头:

<system.webServer>
    <httpProtocol>
      <customHeaders>
        <remove name="X-Content-Type-Options"/>
        <add name="X-Content-Type-Options" value="nosniff"/>
      </customHeaders>
    </httpProtocol>
</system.webServer>
Run Code Online (Sandbox Code Playgroud)

你完成了.

  • 也可以在IIS中设置自定义标头,但您的解决方案更好,因为它可以是源控制而不是配置管理. (3认同)

Sah*_*wal 8

X-Content-Type-Options响应HTTP标头是服务器使用的标记,用于指示不应更改和遵循Content-Type标头中公布的MIME类型.这允许选择退出MIME类型嗅探,换句话说,它是一种说网站管理员知道他们在做什么的方式.

句法 :

X-Content-Type-Options:nosniff

指令:

nosniff 如果请求的类型是1."style"且MIME类型不是"text/css",或2."script"且MIME类型不是JavaScript MIME类型,则阻止请求.

注意:nosniff仅适用于"脚本"和"样式"类型.将nosniff应用于图像也证明与现有网站不兼容.

规格:

https://fetch.spec.whatwg.org/#x-content-type-options-header