当前位置:  开发笔记 > 编程语言 > 正文

Instant.readObject方法"防御恶意流"是什么意思?

如何解决《Instant.readObject方法"防御恶意流"是什么意思?》经验,为你挑选了1个好方法。

阅读Instant类的源代码,我碰到了这个方法

/**
 * Defend against malicious streams.
 *
 * @param s the stream to read
 * @throws InvalidObjectException always
 */
private void readObject(ObjectInputStream s) throws InvalidObjectException {
    throw new InvalidObjectException("Deserialization via serialization delegate");
}

描述让我很好奇.什么是"恶意流"?这种方法如何防御呢?



1> JodaStephen..:

Instant和其他java.time类,使用包作用域委托序列化 - java.time.Ser.请参阅writeReplace方法以查看如何创建委托.

因此,readObject可以调用该方法的唯一方法是,如果有人传入恶意流(一个用于尝试创建无效对象的唯一目的).该例外可确保阻止此类恶意流.

通常,只要使用序列化委托,就应该考虑readObject像这样阻塞.

推荐阅读
夏晶阳--艺术
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有