Python Glossary English

Python 3.12+tarfileфункция

tarfile.fully_trusted_filter()

фильтры распаковки

Фильтр распаковки 'fully_trusted': возвращает член без изменений — архиву доверяют полностью.

Синтаксис

tar.extractall(path, filter='fully_trusted')

Так tarfile распаковывал всегда до Python 3.14, и на 3.12–3.13 вызов extractall() без filter выдаёт DeprecationWarning ровно потому, что работает этим фильтром. С ним '../x', абсолютные пути и ссылки наружу пишут куда угодно — это и есть path traversal. Брать его стоит только для архивов, которые вы создали сами.

Примеры

import tarfile
m = tarfile.TarInfo('../outside.txt')
print(tarfile.fully_trusted_filter(m, 'out') is m)  # → True — член не тронут
try:
    tarfile.data_filter(m, 'out')
except tarfile.OutsideDestinationError:
    print('data не пустит наружу')  # → data не пустит наружу

См. также

Открыть в полном глоссарииdocs.python.orgСообщить о неточности