2013-08-20 394 views
176

我做在我的本地與OWASP ZAP一些滲透測試,並不斷報告這個消息:什麼是「X-Content-Type-Options = nosniff」?

反MIME嗅探頭X-Content-Type的選項未設置爲 「nosniff」

此檢查特定於Internet Explorer 8和Google Chrome。 確保每個頁面設置一個Content-Type頭和 X-CONTENT-TYPE-OPTIONS如果Content-Type頭是未知

我不知道這是什麼意思,我不能在網上找到的任何東西。我曾嘗試加入:

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

但我仍然得到警報。

設置參數的正確方法是什麼?

回答

118

它可以防止瀏覽器進行MIME類型的嗅探。現在大多數瀏覽器都尊重此頭,包括鉻/鉻,邊緣,IE> = 8.0,火狐> = 50和Opera> = 13。見:

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

發送新的X-內容 - 帶有值 nosniff的Type-Options響應頭將阻止Internet Explorer從MIME中嗅探距離聲明的內容類型的響應 。

編輯:

哦,並且這是一個HTTP頭,而不是一個HTML meta標籤選項。

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

+13

你必須提到這是'舉辦不可信content'服務器。對於不顯示用戶上傳內容的網站,您無需設置此項。 – machineaddict

+7

@machineaddict,**錯誤**。無論內容是可信的還是不可信的,嗅探都會發生。請參閱http://security.stackexchange.com/a/11761/2379。它會以微妙的方式破壞你的網站。如果你不喜歡驚喜,總是禁用嗅探。 – Pacerier

+10

我想你錯過了「什麼是MIME類型的嗅探?」 –

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

這個頭可以防止 「啞劇」 攻擊爲主。此標頭可防止Internet Explorer從MIME嗅探來自聲明的內容類型的響應,因爲標頭指示瀏覽器不要覆蓋響應內容類型。使用nosniff選項,如果服務器說內容是text/html,瀏覽器會將其呈現爲text/html。

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

+4

比別人更清晰的解釋 - 謝謝 – danday74

+0

@GuillaumeBoudreau它對我有用 –

+4

我一直都知道啞劇是危險的。他們應該學習單詞。 – kguest

14

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> 

和你做。

+2

也可以在IIS中設置自定義標頭,但是您的解決方案更好,因爲它可以是源代碼管理的而不是配置管理的。 – ajeh

58

瀏覽器可以使用content or MIME sniffing覆蓋響應Content-Type標題以使用隱式內容類型來猜測和處理數據。雖然在某些情況下這可能會很方便,但也會導致下面列出的一些攻擊。將服務器配置爲返回X-Content-Type-Options HTTP響應標頭設置爲nosniff將指示支持MIME嗅探的瀏覽器使用服務器提供的Content-Type而不將內容解釋爲不同的內容類型。

瀏覽器支持

X-Content-Type-Options在Chrome,Firefox和邊緣以及其他瀏覽器的支持。最新的瀏覽器支持是Mozilla開發者網絡(MDN)爲X-Content-Type的選項瀏覽器兼容性表上:

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

攻擊反駁

  1. MIME Confusion Attack使通過用戶生成的內容網站進行攻擊,允許用戶上傳惡意代碼,然後由瀏覽器執行,這些瀏覽器將使用備用內容類型來解釋文件,例如application/javascripttext/plain。這可能會導致一個"drive-by download" attack這是一個常見的網絡釣魚攻擊媒介。託管用戶生成內容的網站應使用此標頭來保護其用戶。這是由VeraCodeOWASP提到它說以下內容:

    這減少了暴露在駕車通過,通過巧妙的命名,可以通過MSIE被視爲可執行文件或動態HTML文件下載攻擊和服務的用戶上傳內容的網站。

  2. Unauthorized Hotlinking也可以通過嗅聞Content-Type啓用。通過與具有資源的站點熱鏈接來達到一個目的,例如應用程序可以依靠內容類型嗅探並在網站上產生大量流量,以用於其可能違反其服務條款的另一目的,例如, GitHub顯示JavaScript代碼用於觀看,但不能用於執行:

    某些討厭的非人類用戶(即計算機)已採取經由原始視圖特徵爲「盜鏈」資產 - 使用原始URL作爲src用於一個<script><img>標籤。問題是這些不是靜態資產。原始文件視圖與Rails應用中的任何其他視圖一樣,必須在返回給用戶之前進行渲染。這很快就會增加性能。在過去,我們被迫以這種方式阻止流行的內容,因爲它給我們的服務器帶來了過大的壓力。

+4

努力解釋這些攻擊實際上是非常感謝。 – Andrejs

+1

感謝您的解釋。只是說「它可以防止xyz」對我的應用程序是否會受到這個影響無關緊要。感謝你的解釋,我知道它不會受到這種類型的攻擊。 –

2

的X的Content-Type-選項響應HTTP標頭是由服務器使用以指示在內容類型報頭通告的MIME類型不應該被改變,並且應遵循的標記。這允許選擇不使用MIME類型的嗅探,換句話說,它可以說網站管理員知道他們在做什麼。

語法:

X-的Content-Type-選項:nosniff

指令:

nosniff 塊的請求如果請求的類型是 1。「樣式」和MIME類型不是「文本/ css」,或者「腳本」和MIME類型不是JavaScript MIME類型。

注意:nosniff只適用於「script」和「style」類型。將nosniff應用於圖像證明與現有網站不兼容。

規格:

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

相關問題