繁体   English   中英

解析来自不受信任的Java序列化对象的数据

[英]Parsing data from untrusted Java serialized object

我需要解析不受信任的Java序列化对象。 数据作为字节数组(由ObjectOutputStream有时写入)提供给我。

不想简单地调用ObjectInputStream.readObject()和/或加载实际的对象。 我正在寻找一种安全地解析字节并获取字段名称和值的方法。

-

在查看了用于反序列化对象的ObjectInputStream过程之后,这是到目前为止我的尝试的一些摘要。

我试图根据预期的流常量递归地提取字段类型/名称(作为unicode字符串)。 我最后得到了一个字段名列表,其值应按顺序出现在字节数组中。 我对这种方法感到不安,因为它可能是越野车。 特别适合于似乎是单个序列化协议,然后是HashMap,ArrayList等的协议。但是,如果我能找到一种读取代表字段值的字节的方法,它可能会起作用:

我可以尝试根据大小/偏移量读取和存储基元,但是当遇到第一个对象时,它会变得更加复杂-没有清晰的方法来区分哪些字节与哪些值相关(不再实际加载)对象以ObjectInputStream可能的方式工作?)。

-

谁能建议我显然已经过去的潜在解决方案,还是可以在加载对象的情况下帮助解析序列化数据的受信任库?

感谢您的阅读,以及所有的评论/建议!!! 如果有不清楚的地方,我深表歉意。如果您愿意与我保持联系,我很乐意澄清。

原则上您不能这样做。 任何Java类都可以接管自己的序列化,并通过仅在反序列化期间调用的代码将任意数据写入只有它知道如何解析和重构的流。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM