在瀏覽器行為中,預設會對 Content-type
不明或有誤的檔案做 sniffing 演算法,探測此檔案的類型並已相對應的方式執行。
然而,這可能導致惡意使用者注入程式碼至檔案中,如: 在圖片中嵌入惡意程式碼,瀏覽器可能偵測為 JavaScript 程式碼腳本而執行。
在多數瀏覽器(除了 sarfari)有支援關閉 sniffing 探測的 header: X-Content-Type-Options
我們也可以在 apache 設定檔去設定此 header,當瀏覽器收到 X-Content-Type-Options: nosniff
;
就會依照 Content-type
去檢查檔案的 MIME type 是否符合,才會下載並執行此檔案。
設定步驟:
- 編輯 apache 的 site-available 設定,加上
X-Content-Type-Options
vim /etc/apache2/conf-available/security.conf
Header always set X-Content-Type-Options nosniff
- 重新開啟 apache2,就會重新載入新設定
sudo service apache2 restart
這樣可以避免客戶端執行不正常的 Content-type
類型檔案
參考資料:
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Content-Type-Options