Навыки file-uploads
📦

file-uploads

Безопасно

Безопасная загрузка файлов и облачное хранилище

Загружайте файлы безопасно без блокировки приложения и утечки конфиденциальных данных. Этот навык предоставляет проверенные паттерны для presigned URL, валидации по magic bytes и безопасной интеграции с облачными хранилищами.

Поддерживает: Claude Codex Code(CC)
📊 71 Адекватно
1

Скачать ZIP навыка

2

Загрузить в Claude

Перейдите в Settings → Capabilities → Skills → Upload skill

3

Включите и начните использовать

Протестировать

Использование «file-uploads». Загрузить видеофайл 500МБ в облачное хранилище

Ожидаемый результат:

  • 1. Клиент запрашивает presigned URL для multipart загрузки
  • 2. Сервер генерирует 5 URL для частей загрузки (по 100МБ каждая)
  • 3. Клиент загружает части параллельно напрямую в S3
  • 4. Клиент вызывает API завершения multipart загрузки
  • 5. Файл доступен по адресу s3://bucket/videos/user123/video.mp4

Использование «file-uploads». Валидировать тип загруженного файла изображения

Ожидаемый результат:

  • Проверены байты заголовка файла: FF D8 FF (обнаружена сигнатура JPEG)
  • Значение заголовка Content-Type: image/jpeg - VALID
  • Размер файла: 2.3MB - в пределах лимита 5MB
  • Имя файла санитизировано: 'photo.jpg' -> 'uploads/user123/abc123.jpg'
  • Загрузка авторизована и возвращён presigned 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
Контент
32
Сообщество
100
Безопасность
91
Соответствие спецификации

Что вы можете построить

Функция загрузки файлов в веб-приложении

Создайте безопасную функцию загрузки изображений для системы пользовательских профилей с автоматической валидацией и облачным хранилищем.

Обработка больших видеофайлов

Реализуйте multipart загрузку для видеофайлов размером более 100МБ без проблем с памятью сервера.

Система управления документами

Создайте безопасный пайплайн загрузки документов с валидацией типов и организованной структурой путей в облачном хранилище.

Попробуйте эти промпты

Базовая настройка S3 загрузки
Сгенерируйте код для загрузки изображения аватара пользователя в S3 с использованием presigned URL. Валидируйте файл как корректное изображение с помощью magic bytes перед разрешением загрузки.
Реализация Multipart загрузки
Создайте обработчик multipart загрузки для файлов размером более 100МБ. Включите клиентскую нарезку на чанки, отслеживание прогресса и интеграцию с S3 multipart API.
Безопасная санитизация имён файлов
Напишите функцию, которая санитизирует имена загружаемых файлов для предотвращения path traversal атак. Удалите опасные символы, нормализуйте unicode и генерируйте уникальные ключи хранения.
Миграция на Cloudflare R2
Конвертируйте существующий код загрузки S3 для работы с Cloudflare R2. Включите генерацию presigned URL, корректную настройку endpoint и советы по оптимизации стоимости.

Лучшие практики

  • Всегда валидируйте типы файлов с помощью magic bytes, никогда не доверяйте расширениям файлов или предоставленным клиентом заголовкам Content-Type
  • Используйте presigned URL для загрузки клиентами напрямую в облачное хранилище, избегая затрат на пропускную способность сервера
  • Устанавливайте явные ограничения по размеру и применяйте их как на уровне API gateway, так и в ваших обработчиках загрузки

Избегать

  • Хранение загруженных файлов в файловой системе приложения вместо облачного хранилища
  • Использование оригинального имени файла в качестве ключа хранения без санитизации
  • Проксирование загрузки файлов через ваш backend сервер вместо использования presigned URL

Часто задаваемые вопросы

Что такое presigned URL и зачем он мне нужен?
Presigned URL — это временный URL, предоставляющий временный доступ для загрузки или скачивания из облачного хранилища. Использование presigned URL позволяет клиентам загружать файлы напрямую в S3 или R2, уменьшая нагрузку на сервер и затраты на пропускную способность при сохранении безопасности через временные учётные данные.
Как безопасно валидировать типы файлов?
Проверяйте magic bytes (сигнатуру заголовка) файла вместо доверия к расширению файла или заголовку Content-Type. Например, JPEG файлы начинаются с байтов FF D8 FF. Это предотвращает загрузку злоумышленниками вредоносных файлов с поддельными расширениями.
Какие ограничения по размеру установить для загрузок?
Устанавливайте лимиты в зависимости от вашего варианта использования: изображения профиля (5МБ), документы (25МБ), видео (500МБ+). Всегда применяйте лимиты на нескольких уровнях: API gateway, логика приложения и политики bucket облачного хранилища.
Как предотвратить path traversal атаки в именах файлов?
Никогда не используйте оригинальное имя файла напрямую. Удалите все компоненты пути, уберите или замените специальные символы, нормализуйте unicode и рассмотрите генерацию случайных ключей хранения с сопоставлением оригинальных имён в вашей базе данных.
Что такое multipart загрузка и когда её использовать?
Multipart загрузка разбивает большие файлы на чанки, загружаемые параллельно. Используйте для файлов более 100МБ. Преимущества: возможность возобновления загрузки, параллельная скорость передачи и возможность обработки файлов до 5ТБ в S3.
Можно ли использовать этот навык с другими провайдерами хранилищ кроме S3?
Да. Паттерны работают с любым S3-совместимым хранилищем, включая Cloudflare R2, MinIO, DigitalOcean Spaces и Wasabi. Нужно изменить только URL endpoint и учётные данные.

Сведения для разработчиков

Автор

sickn33

Лицензия

MIT

Ссылка

main

Структура файлов

📄 SKILL.md