Agent Skills
返回列表
💻

文件上传与存储

开发编程 更新于 2026.08.29

将以下提示词粘贴到你的 AI 对话框中:

请根据 https://skillhub.cn/install/skillhub.md,安装 @org-02qudk26/file-uploads。

技能介绍

为什么文件上传容易出事

很多实现只检查客户端传来的扩展名或 Content-Type,攻击者可以轻易伪装成「图片」上传可执行内容。用户可控的文件名若直接拼进存储路径,还可能触发路径遍历。大文件若全部经应用服务器中转,会占满内存与带宽,拖垮整站。

技能会怎么引导你

本技能以文件上传专家视角工作:默认不信任扩展名,强调用魔数(magic bytes)做真实类型判断;要求明确上传大小上限;对文件名做净化,避免 ../ 一类路径注入。在架构上,它更倾向预签名 URL——客户端直传对象存储,服务端只签发短时凭证,而不是长期代理字节流。

适用边界与注意点

| 问题 | 严重程度 | 应对方向 |
|------|----------|----------|
| 轻信客户端文件类型 | 严重 | 魔数校验 |
| 未限制上传大小 | 高 | 配置大小限制 |
| 用户可控文件名 | 严重 | 净化文件名 |
| 预签名 URL 被共享或缓存 | 中 | 控制签发与分发策略 |

预签名 URL 仍需要合理的过期时间与权限范围;它解决的是流量与职责分离,不能替代服务端对业务规则(谁可以传、传什么)的校验。

使用场景

  • 设计用户头像/附件接口时,需要拒绝伪装成图片的可执行文件,并写清魔数校验步骤
  • 要把大文件从「经 Flask/Node 中转」改成客户端直传 OSS/S3,需要预签名 URL 的权限与过期策略
  • 多租户系统按用户 ID 分目录存文件,需净化原始文件名以防 `../` 路径遍历
  • 上线前自查上传模块:是否设了 body 大小上限、是否仍只信扩展名或 Content-Type

适合人员

  • 负责用户生成内容(UGC)上传的后端工程师,要在接口层落实类型与路径安全
  • 维护对象存储对接的全栈开发,要把直传方案与业务鉴权拆清楚,避免预签名链接被滥用
  • 安全评审或渗透测试后需改上传链路的研发,对照魔数、限流与文件名规则逐项落地
  • 处理视频/备份等大体积上传的工程师,需要分片或直传策略而不是整文件堆在应用内存里