檔案系統:介面

檔案類型(file type)

檔案不過是一串位元組,那系統怎麼知道這些位元組是一首歌、一張圖、還是一支程式?位元組 65 在文字裡可能是字母 A,在聲音裡可能是音波的一小片,也可能是一條機器指令。檔案類型回答的是:「這些位元組應該被當成哪一種東西來讀?」它告訴程式與作業系統如何詮釋內容、應該用哪個應用程式開啟。

辨認類型常見有兩種方式。第一種是看副檔名:名稱最後一個點之後的那幾個字母,像 .txt、.jpg、.exe。這是存在名稱裡的提示,是一種人容易看見、卻也輕易就能造假的慣例,因為替檔案改名並不會改變它的位元組。第二種是去看檔案內部的魔術數字(magic number),也就是某種格式的真正檔案開頭固定都會有的一段簽章位元組。在這一切底下還有一個更根本的區分:文字檔對上二進位檔——文字檔的位元組是要被當成人類可讀字元來讀的(你可以把它印到終端機上),而二進位檔的位元組是給程式用的(印出來只會是亂碼)。

為什麼重要:正確判斷類型,是雙擊檔案能啟動正確應用程式的關鍵,而判斷錯誤則是真正的安全風險。攻擊者可以把一支程式命名為 photo.jpg.exe,讓眼睛看到一張無害的圖片;盲目相信副檔名是危險的。誠實的原則是:副檔名只是一個禮貌性的建議,而檔案裡面的位元組(魔術數字)才是它究竟是什麼的可信證據。

把 song.mp3 改名成 song.txt,你的音樂播放器可能就拒絕它,但位元組完全沒變。一個會檢查魔術數字的工具仍會看到裡面的 MP3 簽章,知道它其實是音訊,不管副檔名怎麼宣稱。

副檔名是名稱裡的提示;真正的證據是裡面的位元組。

做安全決策時絕不要相信副檔名:它是名稱的一部分而非內容,改起來毫不費力。要判斷檔案究竟是什麼,魔術數字可靠得多。

又稱
file format kind檔案種類