2016-06-08 104 views
0

如果JSON對象/ String被注入了不可信數據(例如插入的附加密鑰),GSON是否會執行安全序列化操作來分隔和轉義不可信數據?GSON是否執行安全序列化?

請參閱link(儘管它在C#上)作爲注入JSON的示例。

這裏是我是如何解析接收到的數據:

T object = gson.<T>fromJson(sampleString, modelObject); 

我沒有真正意識到安全的序列化或劃定不可信數據是如何工作的。與此相關的建議/參考非常感謝。

+0

請解釋在這種情況下「安全序列化」的含義。例如,您可以編輯您的問題以提供[mcve],其中顯示一些「已注入不可信數據的JSON」以及使用Gson解析該JSON的Java代碼。 – CommonsWare

+0

請參閱更新的問題。 – sticky

回答

1

Gson要解析sampleString中的任何內容,並將其應用於您的實例TsampleString是一個JSON字符串。 Gson無法知道JSON是否被注入了不可信數據,因爲Gson不知道什麼是「不可信」的,也不是「不可信的」。

但是,Gson只會關注T及其超類定義的字段。如果sampleString是一個JSON對象,並且有人攻擊了JSON以包含名爲bogeyman的密鑰,並且T沒有bogeyman字段(並且沒有繼承一個字段),那麼bogeyman將被忽略,因爲Gson無處可用。

因此,確保T被寫入,以便它只接受有效密鑰。也許T只有字段的有效密鑰,或者您將其他字段標記爲transient,或採取the user guide中概述的其他步驟。