最近的一个项目要求我们的一个网站接受来自(登录)用户的文件上传(主要是图像,可能还有一些视频)。
当我们完成这个项目时,我们需要考虑、检查、确保或计算哪些(一般)事项?
答案1
您需要注意:
- 最大文件大小。在很多情况下,Web 开发人员可以做到这一点。
- 权限。您是否希望每个用户都拥有自己的(虚拟或真实)文件夹,并且其他人都无法看到?
- 您是否希望用户能够删除他们已上传的文件,甚至查看它们?他们至少应该能够验证他们上传了哪些文件。
- 您想让用户既能下载文件也能上传文件吗?根据您的设置,这可能很难实现。
- 确保上传文件夹不允许它们进入目录树。
- 您会通过扩展名或其他标准来限制文件吗?您要确保不会无意中设置“warez 服务器”。我知道这是针对登录用户的,但任何安全性都可能以某种方式被破坏。
这是我目前能想到的所有需要注意的事项。
答案2
需要注意的一件大事是允许的最大文件大小。确保你的服务器配置为允许上传足够大的文件以满足你的要求。
此外,我高度建议上传的目标文件夹为外部应用程序的根文件夹结构。
答案3
以下是我在过去执行此操作时记得的几个问题:
- 内存使用情况;确保您的进程将上传内容写入磁盘而不是内存。对于 ASP.NET,这需要编写您自己的 HTTP 处理程序。
- 内容限制;您的网络服务器和任何上游代理服务器或内容分析器都需要支持增加的内容长度。
- 超时;脚本、防火墙端口和代理应配置较长的超时时间,因为上传可能需要很长时间才能完成。
答案4
最大文件大小,在客户端上
MAX_FILE_SIZE
(如果您通过 HTTP 上传)和在服务器处理步骤期间。考虑将上传的数据保存在单独的分区(通常是网络服务器转储到
/var/tmp
)以防止有人填充重要内容。您可以考虑使用安装此分区的偏执步骤-o noexec
。上传的图像/视频确实是有效数据。有人可能会将二进制文件重命名为
funtimes.jpg
,或将 RAR 文件附加到图像末尾。隐写术问题可能不是最值得关注的问题,但许多服务都允许用户通过它们清洗数据。