Проверка загружаемых файлов перед помещением в хранилище

Форма загрузки превращает чужой файл в часть вашей инфраструктуры. Риск связан не только с вирусом: можно переполнить хранилище, раскрыть документ другому пользователю или заставить сервер обработать опасный формат. Поэтому ограничения проектируют до запуска функции.

Определите действительно нужные форматы

Для заявки на расчёт обычно не требуется принимать любые файлы. Установите разрешённый список, размер и количество вложений. Расширение и заявленный браузером MIME-тип не дают достаточной проверки: содержимое должен проверять сервер подходящими средствами.

Как организовать хранение

  • Не использовать исходное имя как доверенный путь на сервере.
  • Исключить выполнение загруженных файлов.
  • Хранить закрытые документы вне публичной раздачи либо выдавать через проверяемый доступ.
  • Ограничить общий объём, срок хранения и скорость загрузки.
  • Отделить карантин и проверку от последующей обработки.

Проверьте обработчики

Создание превью, распаковка архивов и конвертация документов требуют отдельных ограничений ресурсов. Даже разрешённый формат может эксплуатировать ошибку библиотеки. Обновляйте обработчики и не давайте им лишних прав. Антивирусная проверка полезна, но не гарантирует безопасность любого файла.

Как принимать функцию

Испытайте допустимый файл, превышение лимита, неверный формат, повторное имя и отсутствие прав. Для закрытых кабинетов проверьте, что один пользователь не скачивает вложения другого. Такие тесты выполняют на искусственных документах, без персональных данных клиентов.

Отдельно проверьте сообщения об ошибках: пользователю должно быть понятно, что изменить. Не отправляйте опасное вложение менеджеру автоматически до завершения предусмотренной проверки. Если бизнесу достаточно ссылки на согласованное хранилище, иногда лучше не создавать собственную обработку произвольных файлов вообще.

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

Дополнительно: OWASP: безопасная загрузка файлов.

Читайте также

Если задача связана с вашим сайтом, можно обсудить проверку и доработку. Объём работ определяется после знакомства с проектом.