实例化直接用JSON数据填充的python类对象安全吗?

2024-05-12 21:24:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用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执行恶意代码是否有任何风险?你知道吗


Tags: of项目selfjsonobjinitdefmyclass