什么是序列化
序列化就是把后端开发语言中的对象转换为二进制数据,反序列化就把二进制数据转换为后端开发语言的对象
事实上的跨语言序列化方案只有三个: protobuf, thrift, json
序列化的安全问题:
应该重视反序列化漏洞,毕竟Oracle都不得不考虑把java序列化废弃了
序列化漏洞的根本原因是:没有控制序列化的类型范围
防止序列化漏洞,最好是使用白名单
protobuf通过IDL生成代码,严格控制了类型范围
protobuf不是完美的方案,但是作为跨语言的序列化事实方案之一,IDL生成代码比较麻烦也不是啥大问题