參考自 安全框架︰輸入驗證 | 風險降低確定在接受使用者的檔案時已備妥適當的控制 區段中的程式碼,再加以調整。 主要就是讀取檔案中的 signatures(magic numbers or Magic Bytes) 來比較。
| 專案 | 說明 | .NET版本 |
|---|---|---|
| FileExtensionValidation | fileSignature 變數記錄附檔名及檔案的 Signatures(包含Offset), IsValidFileExtension Method提供驗證檔案內容是否與附檔名相同。 | .NET Standard 2.0 |
| FileExtensionValidation.Test | FileExtensionValidation的測試程式,測試檔案會放置在Files目錄之中 | .NET 4.6.2 |
FileExtensionValidation is available on NuGet, so can be installed via the Package Manager:
Install-Package FileExtensionValidation
- 2025/07/09 修正 PNG 的檢查 v1.0.0.2
var fileName = "1.jpg";
var filePath = Path.Combine(_folderPath, fileName);
var fileData = File.ReadAllBytes(filePath);
var isValidFileExtension = FileExtensionValidator.IsValidFileExtension(fileName, fileData, null);
//isValidFileExtension: true 表示通過,false 表示內容與附檔名不符var fileName = "1.jpg";
var filePath = Path.Combine(_folderPath, fileName);
var fs = File.OpenRead(filePath);
var isValidFileExtension = FileExtensionValidator.IsValidFileExtension(fileName, fs, null);
//isValidFileExtension: true 表示通過,false 表示內容與附檔名不符註:如果不在驗證的檔案清單中,預設會回傳 False 哦!
| 附檔名 |
|---|
| .jpg |
| .odt |
| .ods |
| .xlsx |
| .xls |
| .avi |
| .mov |
| .wmv |
| .jpeg |
| .txt |
| .7z |
| .gif |
| .rm |
| .png |
| .odp |
| .wav |
| .odg |
| .3pg |
| .m4v |
| .mkv |
| .bmp |
| .mp4 |
| .mpg |
| .rar |
| .mp3 |
| .tif |
| .mpeg |
| .zip |
| .rtf |
| .ppt |
| .pptx |
| .doc |
| .docx |