JSON与Pickle的安全性比较

12

我最近遇到了Python pickle和cPickle模块的安全问题。很明显,除非您重写find_class方法以进行基本修改以获得更多的安全性,否则pickle没有实现任何真正的安全措施。但是我经常听说JSON比pickle更安全。

有人能详细说明一下吗?为什么JSON比pickle更安全?

非常感谢! Mark


3
“Came across” 是什么意思?是指您读到了一些内容表明他们缺乏安全性吗?还是实施的某些东西被黑客攻击了?或者其他什么情况? - Karl Knechtel
他可能已经阅读了Python文档中pickle模块顶部的大红色警告:https://docs.python.org/3/library/pickle.html。 - Maarten Derickx
BSON包是否存在与Pickle相同的漏洞? - ArekBulski
2个回答

19

JSON更加安全,因为它基本上比较受限。JSON文档可以编码的Python类型仅包括unicodeintfloatNoneTypeboollistdict。这些类型的编组/解组方式基本上是简单的,不容易受到代码注入攻击的影响。


10
Pickle存在的问题是它可以调用任意Python代码。详细信息请参见http://nadiana.com/python-pickle-insecure。JSON解析器只需创建字符串、数字、列表、字典等,它从不创建用户定义的类,因此不需要执行任意的Python代码。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接