【发布时间】:2012-04-24 16:42:23
【问题描述】:
它在 Python 文档中声明 pickle 不安全,不应解析不受信任的用户输入。如果你研究这个;几乎所有示例都通过os.system 调用system() 来证明这一点。
我不清楚的是,在不导入 os 模块的情况下如何正确解释 os.system。
>>> import pickle
>>> pickle.loads("cos\nsystem\n(S'ls /'\ntR.") # This clearly works.
bin boot cgroup dev etc home lib lib64 lost+found media mnt opt proc root run sbin selinux srv sys tmp usr var
0
>>> dir() # no os module
['__builtins__', '__doc__', '__name__', '__package__', 'pickle']
>>> os.system('ls /')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'os' is not defined
>>>
谁能解释一下?
【问题讨论】:
标签: python security namespaces pickle