Как защитить запрос на удаление в node express, чтобы предотвратить внедрение?

#express #fs #http-delete

#экспресс #fs #http-удалить

Вопрос:

У меня есть форма, в которой кто-то может загрузить файл, а затем отменить, если он больше не нужен. Я хочу отправить запрос на сервер для удаления файла, но боюсь, что пользователь может отправить ../../lorem/ipsum/ . У меня есть токен csrf в заголовке и session.id в виде файлов cookie, но как я буду их использовать? Я должен использовать DELETE в качестве метода запроса.

 revert = function(req, res) {

fs.unlink(`/home/node/`   req.body.file, (err) => {
  if (err) throw err;
  console.log('file was deleted');
});
  res.send('done');
};

app.delete('/revert', revert);
  

Ответ №1:

Вы должны сгенерировать идентификатор для каждого загруженного файла и сохранить его в какой-либо карте или базе данных. Вы возвращаете идентификатор пользователю как часть ответа об успешной загрузке. Только пользователи, знающие идентификатор, могут отменить загрузку (например, используя предоставленную вами ссылку или создавая ее самостоятельно)