什么是“X-Content-Type-Options = nosniff”?

时间:2013-08-20 14:27:49

标签: html http-headers meta owasp 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" />

但是我仍然得到警报。

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

8 个答案:

答案 0 :(得分:147)

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

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

  

使用该值发送新的X-Content-Type-Options响应标头   nosniff将阻止Internet Explorer对MIME进行嗅探   远离声明的内容类型。

编辑:

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

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

答案 1 :(得分:99)

# prevent mime based attacks
Header set X-Content-Type-Options "nosniff"

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

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

答案 2 :(得分:94)

<强>描述

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

浏览器支持

Chrome,Firefox和Edge以及其他浏览器都支持X-Content-Type-Options HTTP响应标头。 X-Content-Type-Options的Mozilla开发者网络(MDN)浏览器兼容性表提供了最新的浏览器支持:

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

攻击反击

  1. MIME Confusion Attack 允许用户上传恶意代码,然后由浏览器执行,这些恶意代码将使用其他内容类型来解释文件,例如 "drive-by download" attack 通过用户生成的内容网站启用攻击。隐式application/javascript与显式text/plain。这可能会导致VeraCode这是网络钓鱼的常见攻击媒介。托管用户生成内容的网站应使用此标头来保护其用户。 OWASPUnauthorized Hotlinking提及了以下内容:

      

    这减少了针对偷渡式下载攻击和提供用户上传内容的网站的暴露,这些网站通过巧妙的命名,可以被MSIE视为可执行或动态HTML文件。

  2. {li>

    GitHub 也可以通过Content-Type嗅探来启用。通过热链接到具有用于一个目的的资源的站点,例如,在查看时,应用程序可以依赖内容类型嗅探并在网站上产生大量流量,以用于可能违反其服务条款的其他目的,例如: Get started with Azure Table storage using .NET显示用于查看的JavaScript代码,但不显示执行:

      

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

答案 3 :(得分:21)

对于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>

你已经完成了。

答案 4 :(得分:6)

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

语法:

X-Content-Type-Options:nosniff

指令:

<强> nosniff 如果请求的类型是,则阻止请求    1.“样式”和MIME类型不是“text / css”,或    2.“script”和MIME类型不是JavaScript MIME类型。

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

规格:

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

答案 5 :(得分:1)

只是详细说明元标记的事情。我听过一个演讲,在那里做了一个声明,应该始终在 html 中插入“no-sniff”元标记以防止浏览器嗅探(就像 OP 所做的那样):

<meta content="text/html; charset=UTF-8; X-Content-Type-Options=nosniff" http-equiv="Content-Type" />

但是,对于符合 w3c 的网站,这不是有效的方法,验证器将引发错误:

Bad value text/html; charset=UTF-8; X-Content-Type-Options=nosniff for attribute content on element meta: The legacy encoding contained ;, which is not a valid character in an encoding name.

而且没有解决这个问题。要正确关闭无嗅探,必须转到服务器设置并将其关闭。因为“no-sniff”选项来自 HTTP 标头,而不是来自附加在 HTTP 响应中的 HTML 文件。

要检查 no-sniff 选项是否被禁用,可以启用开发者控制台、网络选项卡,然后检查 HTTP 响应标头:

Visualization of enabled no-sniff option

答案 6 :(得分:0)

防止没有发送任何MIME类型的内容嗅探

在Ubuntu 20.04上的配置-Apache 2.4.41:

启用标头模块 $ sudo a2enmod headers

编辑文件/etc/apache2/conf-available/security.conf并添加:

Header always set X-Content-Type-Options: nosniff

重新启动Apache $ sudo systemctl restart apache2

$ culr -I localhost

HTTP/1.1 200 OK
Date: Fri, 23 Oct 2020 06:12:16 GMT
Server:  
X-Content-Type-Options: nosniff
Last-Modified: Thu, 22 Oct 2020 08:06:06 GMT

答案 7 :(得分:0)

我发现一个非常简单的解释很有用:nosniff 响应标头是一种使网站更安全的方法。

来自安全研究员 Scott Helme,here

<块引用>

它可以防止 Google Chrome 和 Internet Explorer 尝试从服务器声明的响应中模仿响应的内容类型。