2014-09-21 94 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

我希望這是你所期待的。