我在阅读《Effective Java》时遇到了一个问题,希望你能为我翻译一下。如果这个问题实在太简单和直接了当,请原谅我的无知。在第74条 - 明智地实现Serializable接口中,作者说即使你使用私有和包级私有字段对类进行了良好的信息隐藏,它仍然容易失去效力?过去我所了解的是,所有序列化只是将对象转换为字节流形式,反序列化后相同的对象会被还原回来。那么,在这个过程中,它如何失去数据隐藏呢?
我在阅读《Effective Java》时遇到了一个问题,希望你能为我翻译一下。如果这个问题实在太简单和直接了当,请原谅我的无知。在第74条 - 明智地实现Serializable接口中,作者说即使你使用私有和包级私有字段对类进行了良好的信息隐藏,它仍然容易失去效力?过去我所了解的是,所有序列化只是将对象转换为字节流形式,反序列化后相同的对象会被还原回来。那么,在这个过程中,它如何失去数据隐藏呢?
@candiru指出了与OOP上下文中的序列化有关的数据隐藏问题。
但是,序列化还有另一个方面。
您可以发送序列化文件通过网络,因此它可以被窥视,而应该是私有的东西很容易被侵犯。
下面是我序列化的Bean类的内容(使用默认技术)。我可以通过在文本编辑器中打开序列化文件来查看内容。
’ sr SerializationPractice1 I ageL extrat Ljava/lang/String;L nameq ~ xp
pt SidKumarq ~ x
现在,即使不知道该类的详细信息,您也可以轻松找到以下信息:
这些事情您肯定能够注意到;其他细节并不那么清晰。以上信息是正确的。
class SensitiveData implemets java.io.Externalizable{
int sensitiveInteger;
writeExternal (OutputData outputData){
//encrypt sensitiveInteger here
//serialize the sensitiveInteger which is now encrypted to any persistent store
outputData.writeInt(sensitiveInteger);
//do other processing
}
}