我有一个网络服务器,可以检索从小程序发送的序列化图像。 反序列化代码如下:
//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[]
此代码是否容易受到反序列化攻击? 谢谢。
最佳答案
我同意目前的评论。但使用的 ObjectInputStream 可能存在一个特殊问题。 .readObject() 方法将返回的对象的类型是从给定的序列化中检索的。
恶意请求可能包含意外对象的序列化。然后,ObjectInputStream 将读取此数据并
Classes [...] [will be] loaded as required using the standard mechanisms.
因此可能会出现以下问题:
- 一个简单的 ClassCastException
- 您的应用程序速度变慢,并且每个加载的类都需要更多内存
- 实例化期间可能会调用类构造函数中包含的恶意代码
- 类初始化程序(如果有)中包含的恶意代码可能会在实例化期间被调用
最后两件事发生的概率非常低。这是具有此类代码的必需类,必须在您的类路径上可用。
关于java - 反序列化代码安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35204488/