我正在python中编写一个p2p项目,它涉及在不受信任的节点之间发送序列化数据。为方便起见,我最初使用了pickle,但这是不安全的,现在我将我的(有时非常复杂和高度嵌套的)类对象转换为JSON进行传输和存储。
我的问题是,在没有恶意代码运行风险的情况下执行以下操作是否安全:
#class initially created:
class MyClass():
def __init__(self, cat, list_of_dogs, nested_list_of_zebras):
self.cat = cat
self.dogs = list_of_dogs
self.zebras = nested_list_of_zebras
p = MyClass(cat, dog_list, zebra_list)
json_obj = jsonpickle.encode(p)
#on the receiving end (or when bringing out of storage) we do
class ReCreateMyClass():
def __init__(self, python_obj)
self.cat = python_obj['cat']
self.dogs = python_obj['dogs']
self.zebras = python_obj['zebras']
def decode_js(python_obj):
return ReCreateMyClass(json.loads(python_obj))
# is this safe?
class_obj = decode_js(python_obj)
我知道可以更好地自动执行此操作(Is parsing a json naively into a Python class or struct secure?)但以这种方式使用JSON执行恶意代码的风险是否存在?