首页 > 解决方案 > 腌制和取消腌制包含用户输入字符串的python对象是否安全?

问题描述

我有一个带有 python 对象的应用程序(例如类 Human)。
现在我从一个文件中读取这个人的名字并将其存储在 human.name 属性中。此文件内容不受信任。
腌制和解封这个人类实例是否安全?
当攻击者可以使用 __reduce__ 方法提供泡菜时,我已经阅读了有关泡菜蜂不安全的信息。
所以从我读过的内容来看,腌制它是安全的,因为我只向我的对象添加字符串。我是对的还是还有风险?

import pickle
class Human:

def __init__(self, name):
    self.name = name

name = open("filepath").read()
h = Human(name)
p = pickle.dumps(h)
unpickledhuman = pickle.loads(p)

标签: pythonsecuritypickle

解决方案


安全方面,酸洗和解开你自己的物品没有危险。当您解开从不受信任的来源获得的对象时,危险就在于此。

在这种情况下,从您提供的代码中我可以看到,数据是从文本文件中读取的,然后由您自己腌制然后解封,因此不会有任何风险。


推荐阅读