1.原理
序列化即是把对象转变为字节流,存放在内存、文件数据库中,而反序列化即是把字节流转变为对象。
在java中有一个ObjectOutputStream类的writeobject方法可以实现序列化,而ObjectInputStream类的Readobject方法可以实现反序列化。
该漏洞的原因出自于如果应用对不可信的数据,例如恶意构造的用户输入进行反序列化,从而产生非预期的对象,从而有可能产生远程代码执行。
2.防范措施
总的防范思想是采用白名单策略,只允许白名单上的对象生成,不允许生成未经定义的对象。
如果做不到的话,可采取以后策略:
1.对序列化对象执行完整性检查和加密处理,防止被恶意篡改和创建恶意对象。
2.反序列化过程之前执行严格的类型限制。
3.隔离反序列化的代码,将其放在低权限的状态下运行。
4.监视反序列化的过程。
网友评论