我有一个网络应用程序,用户可以上传各种文件(例如jpg,png,r,csv,epub,pdf,docx,nb,tex等)。目前,我们确切地将用户可以上传的文件类型列入白名单。这种限制有时会让用户烦恼(即因为他们必须压缩不允许的文件,然后上传zip)和我们(因为用户写支持要求将其他文件类型列入白名单)。
理想情况下,我希望更积极地将文件列入白名单。具体来说,我想(1)找出可信任的文件类型,以及(2)将它们全部列入白名单。拥有更大的白名单会更方便用户,并减少支持票的数量(如果只是非常轻微)。
我做了几个小时的研究并发现了常见问题(例如路径遍历,将资源放在根目录中,htaccess漏洞,无法验证mime类型等)。虽然这项研究很有意思,但我的理解是,如果您的资产存储在Amazon S3(或类似的云存储服务)上,许多这些问题都没有实际意义(或大大减轻了) - 这是大多数现代Web应用程序管理用户上传的方式文件。
请不要将此误认为是“用户上传内容的安全风险是什么?”题。有already many questions like that,我不想在此重复讨论。
更具体地说,我的问题是,“如果有传统/现代网络应用程序设置,存在哪些风险?”换句话说,我不关心一些旧的PHP应用程序或与IE6相关的漏洞。假设文件存储在像AmazonS3这样的云服务中,我应该担心什么?
所以......要回答这个问题,你可能需要更多关于我的设置的背景信息。也就是说,我怀疑这是一个相对常见的设置,因此希望答案对于任何编写现代Web应用程序的人都有广泛的用处。
我的堆栈tmp
文件夹中的AS3上传文件(尚未触及我的服务器)tmp
文件夹下载文件。/api/atricle/123/download
)