Lui*_*ese 8 java stream java-8 java-time
阅读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");
}
Run Code Online (Sandbox Code Playgroud)
描述让我很好奇.什么是"恶意流"?这种方法如何防御呢?
Instant和其他java.time类,使用包作用域委托序列化 - java.time.Ser.请参阅writeReplace方法以查看如何创建委托.
因此,readObject可以调用该方法的唯一方法是,如果有人传入恶意流(一个用于尝试创建无效对象的唯一目的).该例外可确保阻止此类恶意流.
通常,只要使用序列化委托,就应该考虑readObject像这样阻塞.
| 归档时间: |
|
| 查看次数: |
174 次 |
| 最近记录: |