我用OWASP ZAP在我的本地主机上做了一些渗透测试,它一直报告这条消息:

反mime嗅探报头X-Content-Type-Options未设置为 “nosniff” 此检查仅针对ie8和谷歌Chrome浏览器。 确保每个页面都设置了内容类型标头和 X-CONTENT-TYPE-OPTIONS,如果Content-Type头未知

我不知道这是什么意思,我在网上也找不到任何信息。我试着补充:

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

但我还是收到了警报。

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


当前回答

对于Microsoft IIS服务器,您可以通过web启用此标头。配置文件:

<system.webServer>
    <httpProtocol>
      <customHeaders>
        <remove name="X-Content-Type-Options"/>
        <add name="X-Content-Type-Options" value="nosniff"/>
      </customHeaders>
    </httpProtocol>
</system.webServer>

这样就做完了。

其他回答

它阻止浏览器进行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

发送带有值的新的X-Content-Type-Options响应头 nosniff将防止Internet Explorer嗅探mime响应 远离声明的内容类型。

编辑:

哦,还有,那是一个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”的攻击。这个报头可以防止Internet Explorer对声明的内容类型以外的响应进行mime -嗅探,因为报头指示浏览器不要覆盖响应内容类型。使用nosniff选项,如果服务器说内容是text/html,浏览器就会将其呈现为text/html。

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

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

语法:

X-Content-Type-Options: nosniff

指令:

nosniff 如果请求类型为,则阻塞请求

而MIME类型不是“text/css”,或者 而MIME类型不是JavaScript的MIME类型。

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

规格:

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

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

来自安全研究员Scott Helme的评论如下:

它可以防止谷歌Chrome和Internet Explorer试图模仿嗅探响应的内容类型,使其远离服务器声明的内容类型。

对于Microsoft IIS服务器,您可以通过web启用此标头。配置文件:

<system.webServer>
    <httpProtocol>
      <customHeaders>
        <remove name="X-Content-Type-Options"/>
        <add name="X-Content-Type-Options" value="nosniff"/>
      </customHeaders>
    </httpProtocol>
</system.webServer>

这样就做完了。