我最近遇到了Python pickle和cPickle模块的安全问题。 显然,除非你覆盖,否则在pickle中没有实现真正的安全措施 将find_class方法作为基本修改来获得更多安全性。但我经常 听说JSON更安全。
有人可以详细说明一下吗?为什么JSON比pickle更安全?
非常感谢! 标记
答案 0 :(得分:13)
unicode
,int
,float
,NoneType
,bool
,list
和{{1 }}。它们以基本上微不足道的方式编组/解组,不易受代码注入攻击。
答案 1 :(得分:8)
Pickle的问题是它可以调用任意Python代码。有关详细信息,请参阅http://nadiana.com/python-pickle-insecure。 JSON解析器只需要创建字符串,数字,列表,dicts等。它永远不会创建用户定义的类,因此它不需要执行任意Python。