问题描述

我正在使用 OWASP ZAP 在本地主机上进行一些渗透测试,并且不断报告此消息:

The Anti-MIME-Sniffing header X-Content-Type-Options was not set to ‘nosniff’

This check is specific to Internet Explorer 8 and Google Chrome. Ensure each page sets a Content-Type header and the X-CONTENT-TYPE-OPTIONS if the Content-Type header is unknown

我不知道这是什么意思,我在网上找不到任何东西。我试过添加:

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

但我仍然得到警报。

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

最佳解决方案

它阻止浏览器进行 MIME-type 嗅探。大多数浏览器现在都在执行此标题,包括 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

Sending the new X-Content-Type-Options response header with the value nosniff will prevent Internet Explorer from MIME-sniffing a response away from the declared content-type.

编辑:

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

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

次佳解决方案

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

此标头可防止基于”mime” 的攻击。此标题可防止 MIME-sniffing 的 Internet Explorer 远离声明的 content-type,因为标题指示浏览器不要覆盖响应内容类型。使用 nosniff 选项,如果服务器说内容是 text /html,浏览器会将其显示为 text /html 。

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

第三种解决方案

浏览器可以使用 content or MIME sniffing 来覆盖响应 Content-Type 标头来使用隐式内容类型来猜测和处理数据。虽然这在一些情况下可以方便,但它也可能导致以下列出的一些攻击。将 X-Content-Type-Options 设置为 nosniff 将导致 Internet Explorer 9,Chrome 和 Safari 使用提供的 Content-Type,而不将内容解释为不同的内容类型。 Firefox 正在考虑这一点。

  1. MIME Confusion Attack 可以通过用户生成的内容网站进行攻击,允许用户上传恶意代码,然后由浏览器执行,这些浏览器会使用备用内容类型来解释文件,例如 application/javascripttext/plain 。托管用户生成内容的站点应使用此标头来保护其用户。这是由 VeraCodeOWASP 提及的,这说明:这减少了暴露于 drive-by 下载攻击和为用户上传的内容的站点,通过聪明的命名,可以将 MSIE 视为可执行或动态 HTML 文件。

  2. Unauthorized Hotlinking 也可以通过 Content-Type 嗅探启用。通过热点链接到具有一个目的的资源的站点,例如查看,应用程序可以依靠 content-type 嗅探,并在网站上产生大量流量,用于另一目的,可能会违反其服务条款,例如。 GitHub 显示 JavaScript 代码供查看,但不能执行:一些令人厌恶的 non-human 用户 (即计算机) 已经通过原始视图功能采用了”hotlinking” 资源 – 将原始 URL 用作<script><img> 标记的 src 。问题是这些不是静态资产。原始文件视图与 Rails 应用程序中的任何其他视图一样,必须在被返回给用户之前呈现。这很快就加剧了对性能的巨大损失。过去,我们被迫阻止以这种方式提供的流行内容,因为它对我们的服务器造成了过度的压力。

第四种方案

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

你完成了

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛