开发者

JSON vs. Pickle security

开发者 https://www.devze.com 2023-03-22 13:04 出处:网络
I recently came across the security proble开发者_如何转开发ms of the Python pickle and cPickle modules.

I recently came across the security proble开发者_如何转开发ms of the Python pickle and cPickle modules. Obviously, there are no real security measures implemented in pickle unless you overwrite the find_class method as a basic modification to get a bit more security. But I often heard that JSON is more secure.

Can anyone elaborate a bit on this?`Why is JSON more secure than pickle?

Thanks a lot! Mark


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.


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.

0

精彩评论

暂无评论...
验证码 换一张
取 消