РУКОВОДСТВО · ОБНОВЛЕНО 2026-10-31
Архивы для AI-разбора: как ограничить распаковку и пути файлов
Защита обработчика документов до вызова OCR, парсера или языковой модели.
Небольшой архив может потребовать намного больше памяти и диска после распаковки. До передачи документов нейросети ограничьте не только размер загрузки, но и объём извлечённых данных, число файлов, глубину вложенности и время обработки. Проверяйте конечные пути файлов и не допускайте выхода за рабочую директорию. Распаковка должна выполняться с ограниченными правами в отдельном временном пространстве. Успешная антивирусная проверка не заменяет ограничения ресурсов, а инструкция модели не защищает обработчик, который работает ещё до генерации ответа.
1. Сократите разрешённые форматы
Определите, зачем пользователю нужен архив: один документ проще загрузить напрямую. Принимайте только форматы, необходимые вашему процессу, и проверяйте фактическое содержимое, а не одно расширение. Архив с паролем или неизвестный формат должен приводить к понятному отказу либо отдельной процедуре, а не к попыткам случайных декодеров. Не обещайте обработку любого файла только потому, что интерфейс допускает его выбор. Лимиты проверяются сервером независимо от ограничений формы браузера.
2. Ограничьте работу при извлечении
Проверяйте фактическое количество распакованных байтов во время чтения, а не только метаданные архива. Задайте предел числа файлов, размера одного файла, суммарного объёма, вложенности и срока выполнения. Не запускайте бесконтрольную рекурсивную распаковку каждого найденного вложения. OWASP отдельно рассматривает ограничения после декомпрессии. При достижении лимита прекращайте обработку и освобождайте собственные временные ресурсы, сохраняя понятный статус задания вместо частичного успешного результата без пояснения.
3. Проверяйте пути и типы записей
Вычисляйте конечный нормализованный путь каждого элемента относительно выделенной рабочей директории и проверяйте, что он остаётся внутри неё. Обрабатывайте абсолютные пути, переходы к родителю, символические ссылки и специальные типы согласно строгой политике. Не перезаписывайте файлы приложения или других заданий. Имена внутри архива не должны становиться публичными URL автоматически. Для каждого задания используйте отдельную область, ограниченные права и библиотеку с документированным безопасным поведением извлечения.
4. Передавайте дальше только принятые документы
После распаковки заново проверьте каждый разрешённый файл перед OCR или другим парсером. Лимит архива не отменяет ограничение страниц, пикселей и времени обработки документа. Не отправляйте модели все вложения автоматически, если пользователю нужен один файл. Проверьте отказ на безопасных синтетических архивах с необычными именами и небольшими заранее известными лимитами. Не создавайте огромную бомбу на рабочем сервере ради теста. Очистка должна удалять только временные данные собственного задания.
Частые вопросы
Хватит ли ограничения размера загружаемого ZIP?
Нет. После декомпрессии объём может сильно вырасти. Нужны ограничения извлечённых данных и ресурсов обработчика во время работы.
Защитит ли антивирус от всех проблем архива?
Нет. Обход пути и чрезмерный расход ресурсов требуют отдельных проверок. Сканирование дополняет их, а не заменяет.
Нужно ли разрешать вложенные архивы?
Только если это требуется процессом и явно ограничено. Проще запретить ненужную вложенность и объяснить пользователю допустимый формат.
Можно ли тестировать защиту на production?
Для воспроизводимой проверки используйте изолированную среду и безопасные малые примеры. Нагрузочный эксперимент на рабочем сервере требует отдельной процедуры.