Безопасное извлечение zip или tar с помощью Python
Я пытаюсь извлечь отправленные пользователем файлы zip и tar в каталог. Документация для zipfile'овизвлечь все метод (аналогично tarfile'ам)извлечь все) утверждает, что пути могут быть абсолютными или содержать..
пути, которые выходят за пределы пути назначения. Вместо этого я мог бы использоватьextract
Я, вот так:
<code>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) </code>
Это безопасно? Возможно ли, чтобы файл в архиве оказался за пределамиsome_path
в этом случае? Если да, то каким образом я могу гарантировать, что файлы никогда не попадут за пределы каталога назначения?