技能 file-uploads
📦

file-uploads

安全

安全处理文件上传和云存储

在不阻塞应用程序或暴露敏感数据的情况下安全地上传文件。此技能提供了预签名 URL、魔术字节验证和安全云存储集成经过验证的模式。

支持: Claude Codex Code(CC)
🥉 74 青铜
1

下载技能 ZIP

2

在 Claude 中上传

前往 设置 → 功能 → 技能 → 上传技能

3

开启并开始使用

测试它

正在使用“file-uploads”。 将 500MB 视频文件上传到云存��

预期结果:

  • 1. 客户端请求分段上传的预签名 URL
  • 2. 服务器生成 5 个上传部分 URL(每个 100MB)
  • 3. 客户端直接并行上传部分到 S3
  • 4. 客户端调用完成分段上传 API
  • 5. 文件可在 s3://bucket/videos/user123/video.mp4 访问

正在使用“file-uploads”。 验证上传的图片文件类型

预期结果:

  • 文件头字节已检查:FF D8 FF(检测到 JPEG 签名)
  • Content-Type 头声明:image/jpeg - 有效
  • 文件大小:2.3MB - 在 5MB 限制内
  • 文件名已清理:'photo.jpg' -> 'uploads/user123/abc123.jpg'
  • 上传已授权并返回预签名 URL

安全审计

安全
v1 • 2/25/2026

This skill is a documentation-only file (SKILL.md) providing guidance on secure file upload handling. Static analysis flagged 'weak cryptographic algorithm' at lines 3 and 26, but both are FALSE POSITIVES. Line 3 contains only a YAML description field, and line 26 is plain documentation text. No actual code execution, network calls, or cryptographic operations exist in this skill.

1
已扫描文件
27
分析行数
1
发现项
1
审计总数
低风险问题 (1)
Static analysis false positive - weak cryptographic algorithm
The static analyzer flagged 'weak cryptographic algorithm' at SKILL.md:3 and SKILL.md:26. Both are false positives. Line 3 contains only a YAML frontmatter description field mentioning presigned URLs. Line 26 contains plain documentation text. No actual cryptographic code exists in this file.
审计者: claude

质量评分

38
架构
100
可维护性
87
内容
50
社区
100
安全
91
规范符合性

你能构建什么

Web 应用程序文件上传功能

为用户个人资料系统构建安全的图片上传功能,具有自动验证和云存储功能。

大型视频文件处理

实现超过 100MB 的视频文件分段上传,而不会出现服务器内存问题。

文档管理系统

创建安全的文档上传管道,具有类型验证和有组织的云存储路径。

试试这些提示

基本 S3 上传设置
生成使用预签名 URL 将用户头像图片上传到 S3 的代码。在允许上传之前,使用魔术字节验证文件是否为有效图片。
分段上传实现
创建大于 100MB 的文件分段上传处理器。包括客户端分块、进度跟踪和 S3 分段 API 集成。
安全文件名清理
编写一个函数来清理上传的文件名以防止路径遍历攻击。删除危险字符、标准化 unicode 并生成唯一的存储密钥。
Cloudflare R2 迁移
将���有的 S3 上传代码转换为与 Cloudflare R2 一起使用。包括预签名 URL 生成、正确的端点配置和成本优化技巧。

最佳实践

  • 始终使用魔术字节验证文件类型,永远不要信任文件扩展名或客户端提供的 Content-Type 头
  • 使用预签名 URL 让客户端直接上传到云存储,避免服务器带宽成本
  • 设置明确的大小限制并在 API 网关和上传处理器中都强制执行这些限制

避免

  • 将上传的文件存储在应用程序服务器文件系统而不是云存储中
  • 使用原始文件名作为存储密钥而不进行清理
  • 通过后端服务器代理文件上传而不是使用预签名 URL

常见问题

什么是预签名 URL,为什么应该使用它?
预签名 URL 是一个限时 URL,授予临时访问权限以上传或下载云存储中的内容。使用预签名 URL 让客户端直接上传到 S3 或 R2,减少服务器负载和带宽成本,同时通过临时凭据保持安全性。
如何安全地验证文件类型?
检查文件的魔术字节(头签名)而不是信任文件扩展名或 Content-Type 头。例如,JPEG 文件以字节 FF D8 FF 开头。这可以防止攻击者上传带有虚假扩展名的恶意文件。
我应该为上传设置多大的大小限制?
根据用例设置限制:个人资料图片(5MB)、文档(25MB)、视频(500MB+)。始终在多个层强制执行限制:API 网关、应用程序逻辑和云存储桶策略。
如何防止文件名中的路径遍历攻击?
永远不要直接使用原始文件名。删除所有路径组件、删除或替换特殊字符、标准化 unicode,并考虑在数据库中映射原始名称时生成随机存储密钥。
什么是分段上传,什么时候应该使用它?
分段上传将大文件拆分为并行上传的块。对超过 100MB 的文件使用它。好处包括:可恢复上传、并行传输速度,以及在 S3 中处理高达 5TB 文件的能力。
我可以将此技能与 S3 以外的存储提供商一起使用吗?
可以。这些模式适用于任何 S3 兼容的存储,包括 Cloudflare R2、MinIO、DigitalOcean Spaces 和 Wasabi。只需要更改端点 URL 和凭据。

开发者详情

文件结构

📄 SKILL.md