Используйте multer только на определенных маршрутах - PullRequest
0 голосов
/ 26 ноября 2018

Я использую промежуточное программное обеспечение как таковое в моем приложении Nodejs с ReactJS в качестве внешнего интерфейса:

    app.use(*, middleware);

Основная задача промежуточного программного обеспечения заключается в проверке входящего запроса, т. Е. Главным образом в проверке JWT, и только затем в выполнении проверкиnext () для перемещения запроса вперед по требуемому маршруту.

Основная проблема, с которой я сталкиваюсь:

Я использую JSON для передачи данных туда и обратно.Но так как я загружаю файл, я использую FormData () в этом конкретном случае.Поэтому я должен использовать multer для чтения многочастных данных.Основная проблема в том, что у меня есть промежуточное ПО, через которое проходит каждый запрос.Таким образом, чтобы любой файл достиг определенной конечной точки, он должен проходить через промежуточное ПО.Поэтому мне нужно сделать:

    var multer = require('multer');

    var upload = multer({dest: '/upload'});

    app.use("*", upload.any(), middleware);
    app.use("/register", register);

Внутри промежуточного программного обеспечения:

    export const middleware = (req, res, next) => {
      // check if req has proper JWT value. if yes 
      //  next();
      // if no
      // res.json("Sorry can't move on.");
    }

Основной риск, с которым я здесь сталкиваюсь, заключается в следующем: любой злонамеренный пользователь может загрузить файл в любую конечную точку.Это держит мой API в опасности.Есть ли способ обойти это и использовать multer только в определенной конечной точке?

Кроме того, если я это сделаю:

    app.use("*", upload.none(), middleware);

Я получаю ошибку 500.Понятия не имею, откуда он.

1 Ответ

0 голосов
/ 26 ноября 2018

app.use ("*", middleware, upload.none ());

попробуйте использовать функцию middelware перед upload.none ()

...