bodyparser を使用することを考えていたアップロード フォームを実装する必要がありますが、 http: //andrewkelley.me/post/do-not-use-bodyparser-with-express-js.html を読みました。
mean stack を使用してエクスプレスでファイルをアップロードする方法は何ですか? 手ごわいまたは他のモジュールである可能性がありますか?
bodyparser を使用することを考えていたアップロード フォームを実装する必要がありますが、 http: //andrewkelley.me/post/do-not-use-bodyparser-with-express-js.html を読みました。
mean stack を使用してエクスプレスでファイルをアップロードする方法は何ですか? 手ごわいまたは他のモジュールである可能性がありますか?
この警告は特に、express.bodyparser ミドルウェアをスタック全体に追加することに対するものです。これは、express.multipart をすべての POST エンドポイントに追加するため、すべての POST エンドポイントでファイルのアップロードが自動的に受け入れられるためです。デフォルトでは、フレームワークはアップロードされたファイルを に自動的に保存する/tmp
ため、それらをクリーンアップしない限り、攻撃者はアップロードされたファイルでディスクをあふれさせる可能性があります。
追加のモジュールの使用を避けたい場合は、ファイルのアップロードを許可するエンドポイントに express.multipart を実装する必要があります。これが私が話していることです:
var express = require("express")
, app = express();
// middleware (no bodyparser here)
app.use(express.json());
app.use(express.urlencoded());
// average GET endpoint
app.get("/", function(req,res) {
res.send('ok');
});
// average POST endpont
app.post("/login", function(req,res) {
res.send('ok');
});
// File upload POST endpoint
app.post('/upload', express.multipart, function(req, res) {
//File upload logic here
//Make sure to delete or move the file accordingly here, otherwise files will pile up in `/tmp`
});
ファイル アップロード エンドポイントに express.multipart が含まれていることに注意してください。このエンドポイントはマルチパート ファイルのアップロードを処理するようになり、正しく処理できれば脅威にはなりません。
以上のことをすべてお伝えしましたが、Connect はこの正確な問題のためにマルチパートを廃止する方向に進んでいますが、ストリーム ベースのファイル アップロードに代わるものを追加する計画はないようです。代わりに推奨されるのは、ストリームを使用してファイルをディスクに配置することを避けるnode-multipartyを使用することです。ただし、ファイルを保存せずにマルチパーティをミドルウェアとして使用するための良い参考文献はないようですので、マルチパーティの作成者に連絡するか、Express で実装するための API を詳しく調べる必要があります。 .