import os
import tarfile
br
def is_within_directory(directory, target):
abs_directory = os.path.abspath(directory)
abs_target = os.path.abspath(target)
return abs_target.startswith(abs_directory + os.sep)
br
with tarfile.open('archive.tar', 'r') as tar:
for member in tar.getmembers():
member_path = os.path.join("safe_folder", member.name)
if not is_within_directory("safe_folder", member_path):
raise Exception("Attempted Path Traversal in Tar File")
tar.extractall("safe_folder", filter="data")