首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >multer的上传文件漏洞

multer的上传文件漏洞
EN

Stack Overflow用户
提问于 2019-12-26 20:22:38
回答 1查看 585关注 0票数 4

我正在使用multer在我的应用程序中上传文件。喜欢:https://github.com/expressjs/multer/blob/master/README.md

是否可以通过path traversal vulnerability possible?如果是,那么告诉我们如何才能阻止这一切?

目前,我正在使用下面的代码。我只想确认一下,是否存在文件易受攻击的风险?请发表意见。

代码语言:javascript
复制
var storage = multer.diskStorage({
destination: function(req, file, cb) {
    cb(null, 'uploads/');
},
filename: function (req, file, cb) {
    console.log(file);
    var ext = file.originalname.split('.').pop();
    cb(null, Date.now() + '_' + file.originalname);
}});

const fileFilter = (req, file, cb) => {
    // Accept or reject the file based on if MIME type is found in accepted list
    if (acceptedMimeTypes.indexOf(file.mimetype) < 0) {
        return cb("エラー:このタイプのファイルはアップロードできません。ZIP形式とLZH形式のファイルのみアップロードしてください。", false) // Error: You can't upload files of this type. Please upload images and zips only.
    }
    else {
        return cb(null, true);
    }
}
var upload = multer({ storage: storage, fileFilter: fileFilter, limits: { fileSize: 1024 * 1024 * 1 } }).single('file');

如果有任何风险,请向我建议一个更好的方法与expressjs multer。

EN

回答 1

Stack Overflow用户

发布于 2019-12-26 20:30:07

您可以使用以下代码修改fileName,这样就没有人可以威胁您了:

代码语言:javascript
复制
const storage = multer.diskStorage({
  destination: './public',
  filename(req, file, cb) {
    cb(null, 'Your File Name');
  },
});

您还可以像这样使用randomatictime将其动态化:

代码语言:javascript
复制
const storage = multer.diskStorage({
  destination: './public',
  filename(req, file, cb) {
    cb(null, `${new Date().getTime()}`);
  },
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59488424

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档