Bezpiecznie wyodrębnij zip lub tar za pomocą Pythona

Próbuję wyodrębnić pliki zip i tar przesłane przez użytkownika do katalogu. Dokumentacja plików zipWypakuj wszystko metoda (podobnie jak pliki tarfile)Wypakuj wszystko) stwierdza, że ​​ścieżki mogą być bezwzględne lub zawierać.. ścieżki wychodzące poza ścieżkę docelową. Zamiast tego mógłbym użyćextract ja w ten sposób:

<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>

Czy to bezpieczne? Czy możliwe jest zamknięcie pliku w archiwum pozasome_path w tym przypadku? Jeśli tak, to w jaki sposób mogę zapewnić, że pliki nigdy się nie zamkną poza katalogiem docelowym?

questionAnswers(4)

yourAnswerToTheQuestion