JSON与Pickle安全性

时间:2011-07-22 18:26:18

标签: python json pickle

我最近遇到了Python pickle和cPickle模块的安全问题。 显然,除非你覆盖,否则在pickle中没有实现真正的安全措施 将find_class方法作为基本修改来获得更多安全性。但我经常 听说JSON更安全。

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

非常感谢! 标记

2 个答案:

答案 0 :(得分:13)

json更安全,因为它基本上更有限。 json文档可以编码的唯一python类型是unicodeintfloatNoneTypeboollist和{{1 }}。它们以基本上微不足道的方式编组/解组,不易受代码注入攻击。

答案 1 :(得分:8)

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