Python:我可以安全地释放不受信任的数据吗?

问题描述 投票:9回答:3

pickle module documentation一开始就说:

警告:腌制模块并非旨在防止错误或损坏。恶意构建的数据。切勿破坏从计算机接收到的数据不受信任或未经身份验证的来源。

但是,在restricting globals下,似乎描述了一种使用允许的对象的白名单来确保安全剔除数据的方法。

这是否意味着如果我使用仅允许某些“基本”类型的RestrictedUnpickler,或者可以通过这种方法解决的其他安全问题,可以安全地释放不受信任的数据?如果有,是否还有另一种方法可以使脱酸变得安全(显然是以无法为每个流脱酸为代价的?)?

对于“基本类型”,我的确切含义是:

  • bool
  • [strbytesbytearray
  • [intfloatcomplex
  • [tuplelistdictsetfrozenset] >>

泡菜模块文档一开始就说得很对:警告:泡菜模块并非旨在防止错误或恶意构建的数据。永远不会泄漏数据...

python security pickle
3个回答
6
投票

我可以说的是,没有安全的方法可以使用pickle处理不受信任的数据。


2
投票

在解决在标准库中添加安全的getattr替代项的问题时,也已在邮件列表python-ideas上讨论了此想法。例如pickle


2
投票

在这个答案中,我们将探究泡菜协议允许我们做什么。这意味着我们将仅依赖于协议的文档功能,而不依赖实现细节(有一些例外)。换句话说,我们将假设RestrictedUnpickler模块的源代码正确无误,并允许我们完全按照文档中的说明进行操作。

© www.soinside.com 2019 - 2024. All rights reserved.