Java平台安全中的对象处理与安全机制
1. 序列化
序列化是一项允许将对象的非瞬态状态存储在“序列化”形式中的功能,其目的包括将对象传输到另一台机器,然后在目的地进行反序列化或重建对象。远程方法调用(RMI)广泛使用序列化,其他包也是如此。对象通过 ObjectOutputStream 和 ObjectInputStream 类进行序列化和反序列化,分别调用 ObjectOutputStream.writeObject 和 ObjectInputStream.readObject 的默认实现。
对于实现了 java.io.Serializable 接口的可序列化类,你还可以编写 writeObject 和 readObject 方法来自定义序列化和反序列化的过程。
在防御性编程中,需要注意以下几点:
- 不变性检查 :如果一个类有任何维护不变性的私有或包私有字段,应该提供一个显式的 readObject 方法来检查这些不变性是否满足。示例代码如下:
private void readObject(ObjectInputStream s) throws IOException, ClassNotFoundException {
s.defaultReadObject();
if (<invarian
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



