我正在编写一个将用户输入存储在对象中的网络应用程序。这个对象将被腌制。
用户是否有可能制作恶意输入,当对象未腌制时可能会做一些令人震惊的事情?
这是一个非常基本的代码示例,它忽略了封装等奇妙的原则,但集中体现了我正在查看的内容:
import pickle
class X(object):
some_attribute = None
x = X()
x.some_attribute = 'insert some user input that could possibly be bad'
p = pickle.dumps(x)
# Can bad things happen here if the object, before being picked, contained
# potentially bad data in some_attribute?
x = pickle.loads(p)