SuperAPI AI 工具集

file-upload-handling

安全与审计

查看项目

更新于 10-15 14:11

技能介绍

用途

File Upload Handling 用于构建安全且健壮的文件上传系统,覆盖文件校验、清理、病毒扫描、高效存储管理、CDN 集成以及跨不同后端框架的正确文件服务机制。

适用场景

  • 实现文件上传功能
  • 管理用户上传的文档
  • 存储与分发媒体文件
  • 实现头像上传
  • 搭建文档管理系统
  • 处理批量文件导入

主要能力

该技能提供以下参考指南(位于 references/ 目录):

  • Python/Flask 文件上传
  • Node.js Express 配合 Multer 的文件上传
  • FastAPI 文件上传
  • S3/云存储集成

使用方式

资料提供了一个最小可运行示例,包含配置与文件服务两部分。

配置示例(config.py):

# config.py
import os

class Config:
    MAX_CONTENT_LENGTH = 50 * 1024 * 1024  # 50 MB
    UPLOAD_FOLDER = 'uploads'
    ALLOWED_EXTENSIONS = {'txt', 'pdf', 'png', 'jpg', 'jpeg', 'gif', 'docx', 'doc'}
    UPLOAD_DIRECTORY = os.path.join(os.path.dirname(__file__), UPLOAD_FOLDER)

文件服务示例(file_service.py):

# file_service.py
import os
import mimetypes
import hashlib
import secrets
from werkzeug.utils import secure_filename
from datetime import datetime
import magic
import aiofiles

class FileUploadService:
    def __init__(self, upload_dir, allowed_extensions, max_size=50*1024*1024):
        self.upload_dir = upload_dir
        self.allowed_extensions = allowed_extensions
        self.max_size = max_size
        self.mime = magic.Magic(mime=True)
// ... (see reference guides for full implementation)

完整实现请参见参考指南。

最佳实践

应当(DO):

  • 校验文件扩展名与 MIME 类型
  • 在处理前检查文件大小
  • 使用安全文件名以防止目录穿越
  • 将文件存储在 Web 根目录之外
  • 实施病毒扫描
  • 使用 CDN 进行文件分发
  • 为直接访问生成签名 URL
  • 记录文件上传/下载事件
  • 实施访问控制检查
  • 清理临时文件

不应(DON'T):

  • 信任用户提供的文件名
  • 将文件存储在 Web 可访问的目录中
  • 允许任意文件类型
  • 跳过对上传文件的病毒扫描
  • 暴露绝对文件路径
  • 允许无限文件大小
  • 忽略访问控制
  • 使用可预测的文件路径
  • 在文件名中存储敏感元数据
  • 忘记校验文件内容

限制

资料未提供具体的收费、价格、平台支持范围或性能效果数据,这些信息暂未提供。