資安JAVA(十):X-Content-Type-Options

來源:John Melton's Weblog
標題:YEAR OF SECURITY FOR JAVA – WEEK 10 – X-CONTENT-TYPE-OPTIONS
作者:John Melton
內文:
I come from LA.
What is it and why should I care?

X-Content-Type-Options 是一種HTTP header 的設定,用來避免網頁內容(content-type)的探測問題。

網頁上的資源有不同屬性,你可以從 type 欄位分辨。例如:HTML 的 type是 "text/html",PNG檔案是"image/png",CSS檔案是"text/css"。然而某些資源的content-type可能是錯的或未定義。導致瀏覽器需要 "sniffing" 演算法以決定該資源是哪種type,解析內容並執行。這點容易引發許多問題。

著名的例子是,攻擊者讓原本應該是被解讀為圖片卻被瀏覽器誤認為 javascript。

What should I do about it?

以下兩個步驟可以幫助你:
步驟一:發揮開發者的專業,每種輸出頁面都使用正確 content-type。假設你輸出是 HTML 頁面,送出標頭就應該為 HTTP header。
Content-Type: text/html;


步驟二:將header 中的X-Content-Type-Options 屬性值設定為"nonsniff",這會通知瀏覽器「嘿! 我們知道自己在做什麼,不用去猜(sniffing)網頁上的資料」。以下是加上去之後的範例。
X-Content-Type-Options: nosniff;

兩個簡單步驟可以幫助你減少 content-type 定義不清的問題。
重要的是,不是所有瀏覽器都支援。只有Chrome 和 IE(註:應該是最新版才有)才有支援這額外的 header。雖然Firefox 的 noscript 也做得到,但那終究是外掛。這並不能拯救你所有的使用者,但能提供更多的保障。

參考資料
http://www.browserscope.org/?category=security
http://blogs.msdn.com/b/ieinternals/archive/2011/02/11/ie9-release-candidate-minor-changes-list.aspx
http://blogs.msdn.com/b/ie/archive/2008/09/02/ie8-security-part-vi-beta-2-update.aspx
http://msdn.microsoft.com/en-us/library/gg622941(v=vs.85).aspx
http://htaccess.wordpress.com/2009/09/22/x-content-type-options-nosniff-header/
http://www.adambarth.com/papers/2009/barth-caballero-song.pdf
http://www.w3.org/TR/html4/types.html#h-6.7
http://hackademix.net/2010/10/30/x-content-type-options-noscript-and-browserscope/

———–———–
資安Java: 上一篇 || 下一篇
———–———–

留言

這個網誌中的熱門文章

資安JAVA(十一):X-XSS-Protection

以 SharpPcap 實作可收聽封包的 C# 程式