Python Glossary English

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Сообщить о неточности