tarfile-unsafe-members (S202)
源自 flake8-bandit linter。
作用
检查对 tarfile.extractall 的使用。
为什么这不好?
在未事先检查的情况下从不受信任的源提取归档文件存在安全风险,因为恶意制作的归档文件可能包含会被写入目标目录之外的文件。例如,归档文件可能包含带有绝对路径的文件(如 /etc/passwd),或带有父目录引用的相对路径(如 ../etc/passwd)。
在 Python 3.12 及更高版本中,请使用 filter='data' 来防范最危险的安全问题(详见:PEP 706)。在更早的版本中,请将 members 参数设置为归档成员中受信任的子集。
示例
import tarfile
import tempfile
tar = tarfile.open(filename)
tar.extractall(path=tempfile.mkdtemp())
tar.close()