最早的保护敏感信息的技术是把包含敏感数据的成员声明为私有的(private)和暂时的(transietn) . 使用transietn修饰的变量不会被串行化,也不可能通过任何串行化机制
保存. 这样的声明可以使得敏感数据不会出现在流中,也不会通过串行化机制恢复.而且,对私有成员的读写不能扩散到类之外,所以这种方法可以保护敏感数据的安全.
保存. 这样的声明可以使得敏感数据不会出现在流中,也不会通过串行化机制恢复.而且,对私有成员的读写不能扩散到类之外,所以这种方法可以保护敏感数据的安全.
特别重要的类根本不应该串行化,为了保证这一点,这样的类不能实现Serializable接口或Externalizable接口.
transient关键字使用的场合
对于某些类型的对象,其状态是瞬时的,这样的对象是无法保存其状态的,例如一个Thread对象或一个FileInputStream对象,对于这些字段,我们必须用
transient关键字声明,否则编译器报错.
另外,串行化可能涉及将对象存放到磁盘或在网络上传输,
这时候就会产生安全问题,因为数据位于Java运行环境之外,
不在Java安全机制的控制之中.对于需要保密的字段,不
应该保存在永久介质中,或者不就简单地不加处理地保存下来,为了保证安全性,应该在这些字段前面加上transient关键字加以修饰.