Extraia zip ou tar com segurança usando Python

Eu estou tentando extrair arquivos zip e tar enviados pelo usuário para um diretório. A documentação para o zipfileextrair tudo método (da mesma forma com o tarfileextrair tudo) afirma que é possível que os caminhos sejam absolutos ou contenham.. caminhos que saem do caminho de destino. Em vez disso, eu poderia usarextract eu mesmo assim:

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

Isso é seguro? É possível que um arquivo no arquivo seja liberado fora dosome_path nesse caso? Em caso afirmativo, de que maneira posso garantir que os arquivos nunca fiquem fora do diretório de destino?

questionAnswers(4)

yourAnswerToTheQuestion