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

我正在使用OWASP ZAP对本地主机进行一些渗透testing,并持续报告此消息:

反MIME嗅探头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" /> 

但我仍然得到警觉。

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

它阻止浏览器进行MIMEtypes的嗅探。 大多数浏览器现在都在考虑这个标题,包括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从MIME中嗅探出来的声明内容types。

编辑:

哦,这是一个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" 

这个头可以防止“哑剧”的攻击。 此标头可防止Internet Explorer从MIME中嗅探到已声明的内容types的响应,因为标题指示浏览器不要覆盖响应内容types。 使用nosniff选项,如果服务器说内容是text / html,那么浏览器将把它呈现为text / html。

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

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

  1. MIME混淆攻击允许用户上传恶意代码,然后由浏览器执行,这些浏览器将使用备用内容types(例如application/javascripttext/plain来解释文件,从而启用用户生成的内容网站的攻击。 托pipe用户生成内容的网站应使用此标头来保护其用户。 VeraCode和OWASP提到了这一点:

    这样可以降低遭遇驱动下载攻击的风险,而服务用户上传内容的网站可以通过聪明的命名方式被MSIE视为可执行文件或dynamicHTML文件。

  2. 未经授权的盗链也可以通过Content-Type嗅探来启用。 通过将资源链接到具有某种用途的网站(例如查看),应用程序可以依靠内容types嗅探,并在网站上产生大量stream量,以用于违反其服务条款的其他目的,例如, GitHub显示JavaScript代码以供查看,但不是为了执行:

    一些讨厌的非人类用户(即计算机)通过原始视图function采取了“盗链”资产 – 使用原始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> 

你完成了。

X-Content-Type-Options响应HTTP头是服务器使用的一个标记,用于指示在Content-Type头中公布的MIMEtypes不应该被改变并被遵循。 这允许select不使用MIMEtypes的嗅探,换句话说,这是一种说网站pipe理员知道他们在做什么的方式。

句法 :

X-Content-Type-Options:nosniff

指令:

nosniff如果请求的types是1.“style”且MIMEtypes不是“text / css”,或者2.“script”,并且MIMEtypes不是JavaScript MIMEtypes,则阻止请求。

注意:nosniff只适用于“script”和“style”types。 同时将nosniff应用于图像certificate与现有的网站不兼容。

规格:

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