程式碼在碼源檢測做弱點掃描後,顯示Often Misused: File Upload
的問題,顯示以下程式碼有問題:
<input name="file" type="file" accept=".xlsx,.xls" />file 類型的標籤表示程式接受檔案上傳。
在可以避免的情況下,請勿允許檔案上傳。如果程式必須接受上傳的檔案,則應只接受程式預期的特定內容類型,阻 止攻擊者提供惡意內容。
經高手指點後,除了前端要檢核外接收副檔名外,後端也必須檢核。
因為資安軟體在掃描時,會去執行上傳檔案的操作,並竄改副檔名繞過前端檢核。
因此,若後端沒做到副檔名檢核的話,在碼源檢測時會顯示<input>標籤沒過關的訊息。
前端限制上傳檔案類型
<input name="file" type="file" accept=".xlsx,.xls" />
accept為限制只接受何種副檔名上傳。
指定為.csv,則為accept=".csv"。
指定為.txt,則為accept=".txt"。
多種檔案類型則以,
區隔,accept=".xlsx,.xls,.csv,.txt"。
後端限制上傳檔案類型
後端程式在讀取檔案之前,加入判斷。
//抓取上傳檔案之副檔名
string extension = Path.GetExtension(file.FileName);//判斷副檔名是否為指定之副檔名
if (extension.ToLower().Trim() != ".xlsx" && extension.ToLower().Trim() != ".xls")
{
throw new Exception(“請確認副檔名是否正確!”);
}
完整程式碼: