Javascript 使用nodejs验证文件上载

Javascript 使用nodejs验证文件上载,javascript,node.js,Javascript,Node.js,我有下面的代码,用于将图像上载到服务器。我需要在生产环境中部署代码。目前,代码仅基于mimetypes文件格式进行验证,并确保任何上传的文件都有.png扩展名。我知道这种安全性是不够的,因为有人很容易损坏图像标题等等。我还发现一些黑客现在使用一些工具(如glimp等)嵌入可执行代码。请有人帮助我使这些代码更安全,以防文件上传攻击 exports.photo = function(req, res){ var multer = require('multer'); var storage =

我有下面的代码,用于将图像上载到服务器。我需要在生产环境中部署代码。目前,代码仅基于mimetypes文件格式进行验证,并确保任何上传的文件都有.png扩展名。我知道这种安全性是不够的,因为有人很容易损坏图像标题等等。我还发现一些黑客现在使用一些工具(如glimp等)嵌入可执行代码。请有人帮助我使这些代码更安全,以防文件上传攻击

exports.photo = function(req, res){
var multer  =   require('multer');
var storage =   multer.diskStorage({
  destination: function (req, file, callback) {
    


if(file.mimetype !== 'image/png' && file.mimetype !== 'image/jpg' && file.mimetype !== 'image/jpeg'){
                    res.send("Supported image files are jpeg, jpg, and png");
                    return false;
                }
callback(null, './uploads');

  },
  filename: function (req, file, callback) {
    callback(null, file.fieldname + '-' + Date.now() +'.png');
  },

});


var upload = multer({ storage : storage},{limits : {fieldNameSize : 20}}).single('userPhoto');
    upload(req,res,function(err) {


        if(err) {
            return res.end("Error uploading file.");
        }

console.log(req.files);
console.log(req.file);
        res.end("File is uploaded");
    });

}
您可以尝试使用此模块检查图像格式。这样,如果有人试图破坏图像,该模块将无法识别有效格式并阻止它