如果 App 有提供上傳圖片、上傳檔案的功能,可以做一些檔案相關的安全機制。

白名單機制

可上傳的檔案格式應該要有個白名單來控管,有列出來的格式才可以被上傳, 例如:.png, .docx 檔才能被上傳,除此以外的格式都不接受 (不可以使用黑名單來管控,否則擋也擋不完)

檔案格式檢查

而要檢查檔案格式是否符合白名單內所定義的格式, 除了檢查檔案的格式除了檢查副檔名 / Content-Type 以外, 也可以檢查檔案的 File Signature,來做到比較精確的檔案格式判斷

通常會在檔案內容開頭的幾個 byte 會有一個特徵值,這個不同格式的檔案都會有屬於自己的特徵值, 這個特徵值就是 File Signature,也有人用 Magic Number 來稱呼這個特徵值

網路上有人整理出不同檔案格式的 File Signature 列表, 也有人直接寫出了檢查 File Signature 的元件來供人使用

File Signature 整理表可參考:

參考資料


文章作者: Michael

上次更新: 2023-11-30

授權條款: 保留所有權利