Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 使用multer上传文件漏洞_Node.js_Express - Fatal编程技术网

Node.js 使用multer上传文件漏洞

Node.js 使用multer上传文件漏洞,node.js,express,Node.js,Express,我正在使用multer在我的应用程序中上载文件。 比如: 你能走这条路吗?如果是,请告诉我们如何才能阻止这种情况 目前,我正在使用下面的代码。我只是想确认一下,是否存在任何文件漏洞风险?请评论 var storage = multer.diskStorage({ destination: function(req, file, cb) { cb(null, 'uploads/'); }, filename: function (req, file, cb) { console.l

我正在使用multer在我的应用程序中上载文件。 比如:

你能走这条路吗?如果是,请告诉我们如何才能阻止这种情况

目前,我正在使用下面的代码。我只是想确认一下,是否存在任何文件漏洞风险?请评论

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');
var storage=multer.diskStorage({
目标:功能(请求、文件、cb){
cb(空,'上传/');
},
文件名:函数(请求、文件、cb){
console.log(文件);
var ext=file.originalname.split('.').pop();
cb(null,Date.now()+'.'+file.originalname);
}});
常量文件过滤器=(请求、文件、cb)=>{
//根据接受列表中是否找到MIME类型接受或拒绝文件
if(acceptedMimeTypes.indexOf(file.mimetype)<0){
返回cb(“エラー:このタイプのファイルはアップロードできません。拉链形式とLZH形式のファイルのみアップロードしてください。", false)//错误:您无法上载此类型的文件。请仅上载图像和拉链。
}
否则{
返回cb(null,true);
}
}
var upload=multer({storage:storage,fileFilter:fileFilter,limits:{fileSize:1024*1024*1}});

如果存在任何风险,请向我建议使用expressjs multer的更好方法。

您可以使用此代码修改文件名,这样就不会有人威胁您:

const storage=multer.diskStorage({
目的地:“/公共”,
文件名(请求、文件、cb){
cb(空,“您的文件名”);
},
});
您还可以使用
randomatic
time
将其动态化,如下所示:

const storage=multer.diskStorage({
目的地:“/公共”,
文件名(请求、文件、cb){
cb(null,${new Date().getTime()}`);
},
});