在節點中有很多關於文件上傳的文章,教程和問題,但主要是針對初學者,並且他們中沒有一個完全解釋瞭如何保護生產文件上傳。 我已經很努力地找到一個完整的答案,如何做到這一點,但它沒有成功。如何使用Express在Node中安全地上傳文件?
下面是我的發現的解釋。在上傳
限制文件大小:
app.use(express.limit('4mb'));
限制文件上傳到只有特定的路線: 我不能讓這種實際工作,但這裏是我曾嘗試:
替換:
app.use(express.bodyParser());
與
app.use(express.json()); app.use(express.urlencoded());
和多中間件添加到每個上傳路線:
app.post('/upload', express.multipart(), uploadController.uploadPhoto);
這部分不工作,但如果我離開
express.bodyParser()
上傳工作正常。那麼我做錯了什麼?檢查上傳的文件類型上傳保存到磁盤之前:
我想不出這部分,但是一個建議是,編寫使用強大的解析文件上傳自定義的中間件,並試圖調整文件之前它被保存(假設它是一個圖像)使用圖像魔法庫。建議這樣做會使圖像安全並確保它實際上是一個圖像(因爲如果圖像不是圖像,該過程會失敗)。
這隻適用於圖像,所以它不是一個完整的解決方案。
我該如何執行此操作?任何示例代碼?
還有什麼我缺少的上傳是安全的嗎?
3將要走的路,假設2不工作。如果是這樣,那將是理想的解決方案。 –
從我讀的2應該工作,我做錯了什麼?你也有任何如何做3的例子嗎?我試圖做到這一點,但沒有成功。我發現的大部分代碼都無法與新版本的快遞 –
一起使用請問您可以使用2創建最小的項目,並可能在github上共享代碼。我會看看它。如果它不起作用,我會爲你建立3並分享。 –