Это предупреждение специально против добавления промежуточного программного обеспечения 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, который использует потоки, чтобы избежать размещения файла на диске. Однако, похоже, нет никаких хороших ссылок, которые можно найти для использования многопартийности в качестве промежуточного программного обеспечения без сохранения файлов, поэтому вам придется обратиться к автору многопартийности или поближе рассмотреть API для его реализации с помощью Express ,
В ответ на [Node.js - MEAN Стек Файлы] (http://stackoverflow.com/a/23066169/609021), описано, как использовать многоуровневое соединение в качестве промежуточного программного обеспечения без записи на диск ... –