正如安全编码网站所解释的:
Blockquote 这个不兼容的代码示例显示了一个带有私有构造函数的类 Ser,表明该类外部的代码应该无法创建它的实例。该类实现 java.io.Serializable 并定义公共 readObject() 和 writeObject() 方法。因此,不受信任的代码可以使用 readObject() 获取重构的对象,并可以使用 writeObject() 写入流。
public class Ser implements Serializable {
private final long serialVersionUID = 123456789;
private Ser() {
// initialize
}
public static void writeObject(final ObjectOutputStream stream)
throws IOException {
stream.defaultWriteObject();
}
public static void readObject(final ObjectInputStream stream)
throws IOException, ClassNotFoundException {
stream.defaultReadObject();
}
}
如您所知,writeObject 和 readObject 方法应该被定义为私有(并且也没有 static 关键字!)并且这些方法不被 JVM 调用。
我的问题是:为什么这些方法不安全。这些方法甚至不被 JVM 调用!!我想要一个示例代码,向我展示此代码可能不安全,并且攻击者可以访问我们的数据。
任何帮助将不胜感激。