Pythonのドキュメントにpickle
は、安全ではなく、信頼できないユーザー入力を解析してはならないことが記載されています。あなたがこれを研究するならば; ほとんどすべての例は、system()
を介した呼び出しでこれを示していますos.system
。
私にはわかりませんが、モジュールをインポートos.system
せずに正しく解釈される方法です。os
>>> 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
>>>
誰かが説明できますか?