Ресурсы · 117

ZIP и TAR: извлекать в пределах каталога и ресурсов

Проверять пути, ссылки и распакованные данные до публикации файлов.

Обновлено · 2 min

Чего помогает достичь это руководство

  • Выбрать изолированный каталог
  • Ограничить фактическую работу
  • Публиковать только полный результат

Быстрая проверка

  • Правила путей и изолированный рабочий каталог.
  • Явные бюджеты и остановка при реальном превышении.
  • Матрица отказов и доказательство полной публикации.

Пошаговый метод

  1. 1

    Выбрать изолированный каталог

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

    Правила путей и изолированный рабочий каталог.

  2. 2

    Ограничить фактическую работу

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

    Явные бюджеты и остановка при реальном превышении.

  3. 3

    Публиковать только полный результат

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

    Матрица отказов и доказательство полной публикации.

Воспроизводимый приёмочный случай

Вымышленный пример: данные не описывают клиента или наблюдаемый результат.

Посмотреть данные случая
{
    "compressed_mb": 2,
    "expanded_mb": 600,
    "aggregate_budget_mb": 100,
    "first_files_valid": true,
    "expected": "stop_on_actual_overrun_and_do_not_promote"
}

Ожидаемое решение

Вымышленный пример: 2 МБ сжатых данных дают 600 МБ при бюджете 100 МБ. Остановитесь при превышении записанных байтов и не публикуйте пакет, даже если первые файлы выглядят правильными.

Python — tarfile extraction filters and further verification

Ваш журнал приёмки

Запишите наблюдения по критериям руководства. Журнал не является сертификацией.

Автоматического сохранения нет. Экспортируйте до выхода.

Показатели управления

ПоказательЧто он измеряетПервое действие
Наблюдаемые распакованные байтыСумма фактически записанных байтов пакетаСравнить с общим бюджетом, не ZIP
Отклонённые неопубликованные пакетыНеверные пакеты без публикации / проверенные неверные пакетыВключить ошибки в процессе извлечения

Распространенные ошибки

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

    Гарантирует ли маленький архив или фильтр безопасность?

    Нет. Он может сильно вырасти. Добавьте ограничения ресурсов, правила путей и проверку извлечённых файлов.

    Официальные ссылки

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

    Источники проверены .