Python 3.12+tarfileисключение
tarfile.OutsideDestinationError
исключения
Исключение фильтра распаковки: член архива оказался бы вне целевой папки (path traversal через '..').
Синтаксис
except tarfile.OutsideDestinationError:
Это защита от классической атаки: архив с именем '../../.bashrc' при распаковке без фильтра перезаписывает файл вне папки. Фильтры 'data' и 'tar' считают итоговый путь и отказывают; до Python 3.14 без filter защиты не было. Сообщение содержит абсолютный путь назначения, поэтому в логах лучше показывать e.tarinfo.name.
Примеры
import tarfile
m = tarfile.TarInfo('../../.bashrc')
try:
tarfile.tar_filter(m, 'out')
except tarfile.OutsideDestinationError as e:
print(type(e).__name__, e.tarinfo.name) # → OutsideDestinationError ../../.bashrc
См. также
Частые ошибки
Открыть в полном глоссарииdocs.python.orgСообщить о неточности