如何控制node.js&express 3.0服务器上的file upload

正如你可以看到这里: https : //github.com/visionmedia/express/blob/master/examples/multipart/index.js默认快速支持file upload,并将每个上传的文件存储在临时文件夹供以后使用。

我的问题是: 安全吗?

正如我所看到的,攻击者可以使用垃圾文件填充所有临时文件夹,而无需对其进行任何控制。 我应该检查每个POST请求,并删除任何未使用的文件?

让我build议你的问题的两个解决scheme。

  1. 使用虚拟驱动器上传位置。 如果你的服务器在linux上运行,那么挂载一个只在内存中的虚拟文件系统是非常容易的。 这些文件在这里放置的速度比在真正的硬盘上要快,如果你遇到类似于你所描述的问题,那么这只是清理虚拟驱动器或者重新启动服务器的问题。 看看这篇文章的内存磁盘的解释 。
  2. 请确保在24小时内只接受来自同一个IP地址的最大数量的x上传。 将此解决scheme与解决scheme1结合起来,以获得最佳效果 实现这一点的一种方法是,为每个IP地址分配一个全局对象,然后每24小时清除一次。

    var uploads = {} setInterval(function(){ uploads = {} }, 24*60*60*1000); //Run every 24 hours var onUpload = function(request, file){ if(uploads[req.ip] > maxUploadsAllowedPrUser) fs.unlink(file) //Delete the file else uploads[req.ip]++ //Keep the file, and increase count }