反序列化代码安全性

时间:2016-02-04 15:04:21

标签: java security serialization deserialization

我有一个Web服务器,用于检索从applet发送的序列化图像。 反序列化代码如下:

  //Http request from applet that contains serialized image 
  in = request.getInputStream();
  inputFromApplet = new ObjectInputStream(in);
  byte[] sendimage = (byte[]) inputFromApplet.readObject();
  //image is created then using byte[]

此代码是否容易受到反序列化攻击? 感谢。

1 个答案:

答案 0 :(得分:1)

我同意目前的意见。但是使用的ObjectInputStream可能存在一个特殊问题。将从给定的序列化中检索.readObject()方法将返回的对象的类型。

恶意请求可能包含意外对象的序列化。然后ObjectInputStream将读取此数据和

  

使用标准机制根据需要加载[...] [...]。

因此可能会出现以下问题:

  • 一个简单的ClassCastException
  • 您的应用程序速度变慢,每个已加载的类需要更多内存
  • 可以在实例化期间调用类构造函数中包含的恶意代码
  • 在实例化期间可以调用类初始值设定项中包含的恶意代码(如果有的话)

最后两件事发生的可能性非常低。这个代码所需的类必须在类路径中可用。