Зачем разбирать эту тему
Расширению и Content-Type от клиента доверять нельзя. Сначала ограничиваем размер, затем определяем фактический MIME по содержимому и сравниваем с белым списком.
Как устроена задача на практике
Оригинальное имя хранится как metadata, физическое имя генерируется случайно. Файлы лучше держать вне web-root, чтобы даже ошибочно загруженный скрипт нельзя было выполнить по URL.
Что важно в production
Для корпоративного обмена можно добавить асинхронный antivirus scan и quarantine. Изображения полезно декодировать и сохранять заново проверенной библиотекой.
Типичные ошибки
Главная ошибка — выбирать технологию или паттерн раньше, чем сформулирован пользовательский сценарий и ограничения. Второй частый промах — проверять решение только на идеальном happy path и не продумывать восстановление после сбоя, повторный запрос и права доступа.
Практический вывод
Скачивание всегда проходит проверку owner/organization/share token. Знание UUID ссылки само по себе не является правом доступа.
- фиксируйте допущения до реализации;
- проверяйте решение на реальных данных и устройствах;
- сохраняйте наблюдаемость и возможность безопасного отката;
- усложняйте архитектуру только когда это подтверждает задача.