[security] http(s) header X-Content-Type-Options,避免瀏覽器執行不符 Content-type 的操作

在瀏覽器行為中,預設會對 Content-type 不明或有誤的檔案做 sniffing 演算法,探測此檔案的類型並已相對應的方式執行。

然而,這可能導致惡意使用者注入程式碼至檔案中,如: 在圖片中嵌入惡意程式碼,瀏覽器可能偵測為 js 程式碼腳本而執行。

在大多數瀏覽器(除了 sarfari)有支援關閉 sniffing 檔案探測的 header: X-Content-Type-Options

未命名

我們可以透過在 apache 設定檔去設定此 header,當瀏覽器收到 X-Content-Type-Options: nosniff;

就會依照 Content-type 去檢查檔案的 MIME type 是否符合,才會下載並執行此檔案。

設定步驟:

  1. 編輯 apache 的 site-available 設定,加上 X-Content-Type-Options
    vim /etc/apache2/conf-available/security.confHeader always set X-Content-Type-Options nosniff

  2. 重新開啟 apache2,就會重新載入新設定
    sudo service apache2 restart

這樣可以避免客戶端執行不正常的 Content-type 類型檔案!

未命名

參考資料:

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

Leave a Reply