Версия источника: 4880e8b4372c96001c2e052be28b68a95d31252b
Синхронизировано: 2026-11-09T11:15:07.649Z
Источник: https://github.com/sergey-from-riders/vibecoding-base/tree/4880e8b4372c96001c2e052be28b68a95d31252b

<a id="integrations-files"></a>

# Загрузка файлов

## Коротко

Имя и Content-Type от клиента не доказывают безопасность содержимого.

## Плохо

```text
Разрешён .png → сохраняем как исполняемый файл по имени клиента.
```

## Хорошо

```text
Ограничиваем размер и тип.
Генерируем имя. Храним вне исполняемого каталога.
```

## Почему

Загрузка может принести исполняемый код, переполнение хранилища или опасный документ.

## Когда применять

Нужные сканеры и преобразования зависят от типа файла. Проверяйте права на скачивание отдельно.

## Как проверить

- Проверьте неверный тип, большой файл, путь ../ и чужой доступ.

## Человек

Определяет разрешённые типы, размеры и сроки хранения.

## Агент

Реализует интеграцию по документации установленной версии и проверяет отказ, тайм-аут и повтор.

Контроль результата:

- Проверьте неверный тип, большой файл, путь ../ и чужой доступ.

## Источники

- [File Upload - OWASP Cheat Sheet Series](https://cheatsheetseries.owasp.org/cheatsheets/File_Upload_Cheat_Sheet.html)

Уровень: Обязательно. Проверено: 2026-11-09. Изменено: 2026-11-09.

[Исходный файл](https://github.com/sergey-from-riders/vibecoding-base/blob/4880e8b4372c96001c2e052be28b68a95d31252b/registry/standards/integrations/external/rules/files.md)
