首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >非酸洗危害

非酸洗危害
EN

Stack Overflow用户
提问于 2013-03-30 20:45:52
回答 3查看 246关注 0票数 1

在python3 pickle模块的文档中,它说:

“pickle模块不是为了防止错误或恶意构造的数据而设计的。永远不要取消从不受信任或未经身份验证的来源接收的数据。”

从不受信任的来源取消筛选数据的风险是什么?不受信任的数据本身是危险的吗?或者,使用未经酸洗的对象是唯一危险的吗?那么,取消不受信任的数据,然后(在对结果对象执行任何操作之前)证明它是否是保存对象是否安全呢?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-03-30 20:53:20

Pickle通过查找可调用对象(通常是类,但实际上是任何可调用的)并使用固定的参数调用它们来重新创建对象。这意味着unpickling可以在任何地方运行任何带有任何参数的callable。即使相关模块还没有导入,pickle也会很乐意导入它。例如,execute os.system只需要几十个字符。所以你甚至在拿回一个对象之前就完蛋了。

票数 2
EN

Stack Overflow用户

发布于 2013-03-30 20:53:02

取消pickle相当于执行任意代码。攻击者可以创建一个pickle,该pickle将在取消pickle期间执行系统命令。

这里有一个来自a good blog post on the topic的例子

这清楚地说明了pickle是不安全的。许多人认为这是因为它可以加载您所期望的以外的类,并可能欺骗您运行它们的函数。但实际的安全风险要危险得多。攻击者可以利用取消酸洗在您的计算机上执行任意命令!

票数 2
EN

Stack Overflow用户

发布于 2013-03-30 20:53:07

pickle格式使用成熟的虚拟机。如果输入机器的代码由攻击者控制,它可以做对象序列化以外的事情(包括执行任意OS命令)。

有关讨论,请参阅Why Python Pickle is Insecure

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15718667

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档