什么是“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。
发送带有值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。
浏览器可以使用内容或MIME嗅探来覆盖响应Content-Type
标题,以使用隐式内容types来猜测和处理数据。 虽然在某些情况下这可能会很方便,但也会导致下面列出的一些攻击。 将X-Content-Type-Options
设置为nosniff
会导致Internet Explorer 9,Chrome和Safari使用提供的Content-Type
,而不会将内容解释为不同的内容types。 Firefox正在考虑这一点。
-
MIME混淆攻击允许用户上传恶意代码,然后由浏览器执行,这些浏览器将使用备用内容types(例如
application/javascript
与text/plain
来解释文件,从而启用用户生成的内容网站的攻击。 托pipe用户生成内容的网站应使用此标头来保护其用户。 VeraCode和OWASP提到了这一点:这样可以降低遭遇驱动下载攻击的风险,而服务用户上传内容的网站可以通过聪明的命名方式被MSIE视为可执行文件或dynamicHTML文件。
-
未经授权的盗链也可以通过
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