跳到内容

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

参考