ノードでのファイルのアップロードに関する多くの記事、チュートリアル、および質問がありますが、それらのほとんどは初心者向けであり、本番用のファイル アップロードを保護する方法を完全に説明しているものはありません。私はそれを行う方法について完全な答えを見つけるために非常に努力しましたが、成功しませんでした.
以下は私の調査結果の説明です。
アップロード時のファイル サイズを制限する:
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()
ます。それで、私は何を間違っていますか?アップロードをディスクに保存する前に、アップロードされたファイルの種類を確認しています:
私はこの部分を理解できませんでしたが、ファイルのアップロードを解析するために手ごわいを使用するカスタムミドルウェアを作成し、画像マジックのようなライブラリを使用して、保存する前にファイルのサイズを変更しようとすることを提案しました (画像であると仮定します)。これにより、イメージが安全になり、実際にイメージであることが保証されるという提案がありました (イメージでないとプロセスが失敗するため)。
ただし、これは画像でのみ機能するため、完全なソリューションではありません。
どうすればこれを実装できますか? サンプルコードはありますか?
アップロードを安全にするために欠けているものは他にありますか?