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?