AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 16952
Accepted
anonymous coward
anonymous coward
Asked: 2009-06-02 08:29:32 +0800 CST2009-06-02 08:29:32 +0800 CST 2009-06-02 08:29:32 +0800 CST

我们的网络开发人员有一个需要接受文件上传的项目。我应该确保涵盖什么?

  • 772

最近的一个项目要求我们的一个网站接受来自(登录)用户的文件上传(主要是图像,可能还有一些视频)。

当我们将这个项目付诸实施时,我们需要考虑、检查、确保或计算哪些(通用)事情?

website security upload web-server storage
  • 8 8 个回答
  • 222 Views

8 个回答

  • Voted
  1. Best Answer
    Joshua Nurczyk
    2009-06-02T08:39:13+08:002009-06-02T08:39:13+08:00

    您需要注意:

    • 最大文件大小。在许多情况下,这可以由 Web 开发人员完成。
    • 权限。您是否希望每个用户都拥有自己的(虚拟或真实)文件夹,其他人无法看到?
    • 您是否希望用户能够删除他们上传的文件,甚至可以看到它们?他们至少应该能够验证他们上传了哪些文件。
    • 您想让用户下载文件和上传文件吗?根据您的设置,这可能很难实现。
    • 确保上传文件夹不允许它们向上爬到目录树。
    • 您会按扩展名或其他条件限制文件吗?您要确保不会无意中设置“warez 服务器”。我知道这是针对登录用户的,但任何安全性都可能以某种方式被破坏。

    这就是我目前能想到的所有需要​​注意的地方。

    • 4
  2. squillman
    2009-06-02T08:32:29+08:002009-06-02T08:32:29+08:00

    需要注意的一件大事是您要允许的最大文件大小。确保您的服务器配置为允许上传足够大的文件以满足您的要求。

    此外,我强烈建议上传的目标文件夹位于应用程序的根文件夹结构之外。

    • 1
  3. Doug Luxem
    2009-06-02T08:36:18+08:002009-06-02T08:36:18+08:00

    以下是我在过去这样做时记得的一些问题:

    • 内存使用;确保您的进程正在将上传内容写入磁盘而不是内存。对于 ASP.NET,这需要编写自己的 HTTP 处理程序。
    • 内容限制;您的 Web 服务器和任何上游代理服务器或内容分析器都需要支持增加的内容长度。
    • 超时;脚本、防火墙端口和代理应配置为长时间超时,因为上传可能需要很长时间才能完成。
    • 1
  4. Maximus Minimus
    2009-06-02T08:39:48+08:002009-06-02T08:39:48+08:00

    除非您证明并非如此,否则将每个上传的文件视为不受信任。病毒扫描他们,作品。

    • 1
  5. hark
    2009-06-02T08:40:49+08:002009-06-02T08:40:49+08:00
    • 最大文件大小,在客户端上MAX_FILE_SIZE(如果您通过 HTTP 上传)和在服务器处理步骤期间。

    • 考虑将上传的数据保存在单独的分区上(通常是网络服务器转储到/var/tmp),以防止有人填满重要的东西。您可能会考虑使用-o noexec.

    • 上传的图像/视频实际上是有效数据。有人可能会将二进制文件重命名为funtimes.jpg,或将 RAR 文件附加到图像的末尾。隐写问题可能不在关注列表的首位,但许多服务允许用户通过它们清洗数据。

    • 1
  6. tomjedrz
    2009-06-02T08:43:34+08:002009-06-02T08:43:34+08:00

    我应该考虑的快速列表:

    1- 应用程序、协议(ftp、安全 ftp、http、webdav 等)和配置

    文件将如何上传?是否有一个可以管理它的前端应用程序?您将使用什么 ftp 服务器?这里没有正确的答案,您只是想提前弄清楚,以确保剩余的项目正确完成。

    2-身份验证和用户管理

    您需要决定凭据和身份验证的工作方式。不允许匿名上传! 会有通用用户还是命名用户?谁来管理用户?它们会通过应用程序、操作系统或其他方式进行控制吗?他们会被允许删除吗?只有他们的文件,还是其他任何人?

    3-文件位置和磁盘空间

    您需要一个放置文件的地方。这将是一个永久的位置,还是会有一个过程将它们“清扫”到另一个位置?每个用户会有一个单独的位置,还是只有一个位置?每个文件会有最大大小吗?您想限制允许的文件类型吗?

    • 1
  7. Colin Coghill
    2009-06-02T19:10:15+08:002009-06-02T19:10:15+08:00

    只是我在编写文件上传时遇到的一些事情:

    确保清理或过滤上传文件的文件名。(摆脱 .., \ 和 / 可能还有一堆其他的东西,这取决于你的操作系统)

    不要假设文件名只有一个“扩展名”。“report.doc.pdf”或“Makefile”

    如果预计上传量很大,您可能需要担心连接速度较慢的人(请记住,很多人使用 DSL,通常上行速度相对较慢)。他们可能会经常遇到断开连接或超时。一些较旧的网络浏览器在上传大文件时会超时。您需要找到一种方法来处理这个问题,或者检查上传是否成功完成。

    将文件上传到“安全”的地方。在 UNIX 系统上,理想情况下,这意味着驱动器设置了“noexec”,并且正在上传的帐户具有磁盘配额,因此它不能完全填满驱动器。

    如果您将文件保存在具有自动文档索引的系统(大多数桌面操作系统)上,请从该索引中排除它们存储的文件夹。例如,最近在 Windows 中出现了漏洞(索引错误的 PDF),未来可能还会有更多。

    • 1
  8. Chris W. Rea
    2009-06-02T08:40:26+08:002009-06-02T08:40:26+08:00

    在服务器上实施某种防病毒/恶意软件检测。即使您接受所谓的“不可执行”文件类型,这些文件中仍然存在利用缓冲区溢出漏洞的可执行代码的可能性。

    • 0

相关问题

  • 从多个位置保护远程服务器/工具访问的最佳方法是什么?

  • ZFS 与 XFS

  • 在 SOHO 环境中实施的最佳 VPN 技术是什么?[关闭]

  • 上线的第一天:如何不杀死您的网站

  • 保护新的 Ubuntu 服务器 [关闭]

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve