使用蛇形序列化程序进行安全对象酸洗

2024-05-23 14:52:22 发布

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

据我所知,在序列化对象时,使用serpent比pickle更安全。在

我使用以下类别:

import serpent

class Test:
    def save(self, fileName) :
        ser = serpent.dumps({"schema": self}, indent=True)
        open(fileName, "wb" ).write(ser)


    def load(self, fileName) :

        self = serpent.load(open(fileName, "rb"))["schema"]



    def someFunction(self) :

        [...]

我想做点像

^{pr2}$

但是,当我调用Test().load()时,我得到的是一个对象树,而不是一个对象。所以我不能用它。。。如何从对象树中获取对象?这样做,我会不会又遇到和泡菜一样的安全问题呢?在

EDIT:FromPyro's doc:serpent序列化为Python文本表达式。接受很多不同的类型。许多将被连载为dicts。如果需要,您可能需要显式地将文本转换回接收端的特定类型,因为大多数自定义类不是自动处理的。在

所以,我想最后的问题是:有没有什么诀窍可以把这样的文字词典翻译成宾语?我想,它一定是很多人做的。。。在


Tags: 对象test文本self类型序列化schemadef
1条回答
网友
1楼 · 发布于 2024-05-23 14:52:22

这个问题可能有更好的答案,但由于没有人提出,我可以分享一些我自己研究的解决办法。这个问题的解决方案在很大程度上取决于需要序列化/反序列化的类的结构,但是要了解如何进行这种解析,可以看看在Pyro4.util中实现的dict_-to-u类方法。在

相关问题 更多 >