I recently came across the security problems of the Python pickle and cPickle modules. Obviously, there are no real security measures implemented in pickle unless you overwr
Pickle's problem is that it will can invoke arbitrary Python code. See http://nadiana.com/python-pickle-insecure for details. The JSON parser only has to create strings, numbers, lists, dicts, and so on. It never creates user-defined classes, so it doesn't need to execute arbitrary Python.
json is more secure because it's fundamentally more limited. The only python types that a json document can encode are unicode
, int
, float
, NoneType
, bool
, list
and dict
. these are marshaled/unmarshalled in a basically trivial fashion that isn't vulnerable to code injection attacks.