【问题标题】:How can i controll file uploads on node.js & express 3.0 server我如何控制 node.js 和 express 3.0 服务器中的文件上传
【发布时间】:2012-09-01 19:19:45
【问题描述】:

正如您在此处看到的: https://github.com/visionmedia/express/blob/master/examples/multipart/index.js Express 默认支持文件上传,并将每个上传的文件存储在 temp 文件夹中以备后用。

我的问题是:安全吗?

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

【问题讨论】:

  • 这里有一个类似的问题可以提供答案:stackoverflow.com/questions/11295554/…
  • 谢谢,我看到了。此解决方案禁用所有请求的所有文件上传。我正在寻找的是仅针对少数请求启用它。

标签: node.js file-upload express


【解决方案1】:

让我为您的问题提出两个解决方案。

  1. 为您的上传位置使用虚拟驱动器。如果您的服务器在 linux 上运行,则很容易挂载仅在内存中的虚拟文件系统。这些文件将比在真正的硬盘驱动器上更快地放置在此处,并且如果您遇到与您描述的问题类似的问题,只需清理虚拟驱动器或重新启动服务器即可。 Look at this article for an explaination of ram disks
  2. 确保您在 24 小时内仅接受来自同一 IP 地址的最多 x 次上传。将此解决方案与解决方案 1 结合使用以获得最大效果。实现这一点的一种方法是为每个 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
    }
    

【讨论】:

    猜你喜欢
    • 2018-05-17
    • 2020-05-29
    • 1970-01-01
    • 2011-08-25
    • 2016-12-29
    • 2016-04-12
    • 2019-05-16
    • 2013-11-25
    • 1970-01-01
    相关资源
    最近更新 更多