Я пытаюсь извлечь загруженные пользователем файлы zip и tar в каталог. Документация для zipfile extractall метод (аналогично tarfile extractall) указывает, что это возможно для путей быть абсолютным или содержать пути ..
, выходящие за пределы пути назначения. Вместо этого я мог бы использовать extract
сам, например:
some_path = '/destination/path'
some_zip = '/some/file.zip'
zipf = zipfile.ZipFile(some_zip, mode='r')
for subfile in zipf.namelist():
zipf.extract(subfile, some_path)
Это безопасно? Возможно ли, чтобы файл в архиве завершился за пределами some_path
в этом случае? Если да, то каким образом я могу гарантировать, что файлы никогда не выйдут за пределы целевого каталога?