gpt4 book ai didi

node.js - 我如何控制node.js和express 3.0服务器中的文件上传

转载 作者:太空宇宙 更新时间:2023-11-03 22:18:48 26 4
gpt4 key购买 nike

正如您在这里看到的: https://github.com/visionmedia/express/blob/master/examples/multipart/index.js默认情况下 Express 支持文件上传,并将每个上传的文件存储在临时文件夹中以供以后使用。

我的问题是:安全吗?

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

最佳答案

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

  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
    }

关于node.js - 我如何控制node.js和express 3.0服务器中的文件上传,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12230656/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com