用户文件上传

用户可以上传文件到:

  • 项目中的议题或合并请求。
  • 群组中的史诗。

极狐GitLab 使用随机 32 位 ID 生成这些上传文件的直接 URL,以防止未经授权的用户猜测 URL。这提供了对包含敏感信息的文件的一些安全性。

用户上传到极狐GitLab 议题、合并请求和史诗中的文件包含 /uploads/<32-character-id> 在 URL 路径中。

caution 下载由未知或未信任的源上传的文件时候要小心,特别是如果文件是可执行文件或脚本。

上传文件的访问控制

  • 强制认证检查在极狐GitLab 15.3 中 GA。功能标志 enforce_auth_checks_on_uploads 被移除。
  • 在 UI 上的项目设置引入于极狐GitLab 15.3。

对于非图片的上传文件的访问:

  • 议题或合并请求由项目可见性决定。
  • 群组史诗由群组可见性决定。

对于公共项目或群组,任何人都可以通过附件的直接 URL 访问这些文件,即使议题、合并请求或史诗是保密的。对于私有和内部项目,极狐GitLab 确保只有经过身份验证的项目成员才能访问非图像文件上传,例如 PDF。默认情况下,图像文件不受此限制,任何人都可以使用 URL 查看它们。要保护图像文件,请为所有媒体文件启用授权检查,使其仅可由经过身份验证的用户查看。

为图片的认证检查可能会导致通知电子邮件正文出现显示问题。邮件经常从未经极狐GitLab 身份验证的客户端(例如 Outlook、Apple Mail 或您的移动设备)读取。如果客户端未获得极狐GitLab 授权,则电子邮件中的图像会出现损坏且不可用。

为所有媒体文件启用授权检查

非图像附件(包括 PDF)始终需要验证才能查看。您可以使用此设置将此保护扩展到图像文件。

先决条件:

  • 您必须具有项目的维护者或所有者角色。
  • 您的项目可见性设置必须是私有内部

为所有媒体文件配置身份验证设置:

  1. 在左侧边栏中,选择 搜索或转到 并找到您的项目。
  2. 在左侧边栏中,选择 设置 > 通用
  3. 展开 可见性、项目功能、权限
  4. 滚动到 项目可见性 并选择 需要验证才能查看媒体文件。您不能为具有公开可见性的项目选择此选项。
note 您不能为公共项目选择此选项。

删除已上传的文件

  • 引入于 15.3 版本。
  • REST API 支持引入于极狐GitLab 17.2。

当文件包含敏感或机密信息时,您应该删除上传的文件。当您删除该文件后,用户将无法访问该文件,并且直接返回 404 错误。

项目所有者和维护者可以使用交互式 GraphiQL 资源管理器访问 GraphQL 端点,删除上传的文件。

例如:

mutation{
  uploadDelete(input: { projectPath: "<path/to/project>", secret: "<32-character-id>" , filename: "<filename>" }) {
    upload {
      id
      size
      path
    }
    errors
  }
}

没有所有者或维护者角色的项目成员无法访问此 GraphQL 端点。

您还可以使用项目群组 REST API 来删除上传的文件。