tarfile-不安全成员 (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()