在瀏覽器行為中,預設會對 Content-type 不明或有誤的檔案做 sniffing 演算法,探測此檔案的類型並已相對應的方式執行。 然而,這可能導致惡意使用者注入程式碼至檔案中,如: 在圖片中嵌入惡意程式碼,瀏覽器可能偵測為 js 程式碼腳本而執行。 在大多數瀏覽器(除了 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.confHeader 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