2014-09-21 107 views
2

我有一个基于Serializable类的问题。Java可序列化 - 序列化/反序列化是否具有安全性?

在Google上搜索后,我找不到任何满足我的问题的答案。

下面是我在做什么:

通过发送UDP(DatagramPacket类)一个序列化对象到服务器。

Packet类是所有数据包应该继承的抽象类。 数据包是可序列化的,它有一个生成的UUID作为静态变量。 客户端和服务器都有这个生成的UUID。

服务器反序列化对象,检查它是否继承了包,然后评估哪些数据包级(服务器双面)得当需要被浇铸。

我想知道序列化和投射物体是否安全的方式;与这是说:

如果有人修改了客户端包类,并增加了新的方法和字段等,将在该对象到服务器端对象的铸造仍然有资格?

希望这可以很好地清除。

+0

此链接可能会对您有所帮助:https://www.youtube.com/watch?v=V1vQf4qyMXg#t=3366 – ares 2014-09-21 08:12:19

+1

我不明白您认为修改某个类以添加方法和字段与安全性有关。 – EJP 2014-09-21 09:48:25

+0

....你甚至看过我的文章吗? 我从客户端发送一个序列化的对象到代表游戏数据包的服务器。 有人修改客户端对象并尝试发送它。我在问Serializable如何适用于这个普通领域,因此我说安全。 我不认为你完全理解这个话题。 – 2014-09-21 22:00:54

回答

2

是的,当可序列化对象公开私有变量时,会存在安全隐患。 参考:Serializable Interface

关于添加新的字段和方法,有一些事情是兼容的,有些是不兼容的。请查看此帖以了解更多详情。 Java Serialization

而且以了解详情:IBM Dev Works : Java Things

我希望这是你所期待的。