如果JSON對象/ String被注入了不可信數據(例如插入的附加密鑰),GSON是否會執行安全序列化操作來分隔和轉義不可信數據?GSON是否執行安全序列化?
請參閱link(儘管它在C#上)作爲注入JSON的示例。
這裏是我是如何解析接收到的數據:
T object = gson.<T>fromJson(sampleString, modelObject);
我沒有真正意識到安全的序列化或劃定不可信數據是如何工作的。與此相關的建議/參考非常感謝。
如果JSON對象/ String被注入了不可信數據(例如插入的附加密鑰),GSON是否會執行安全序列化操作來分隔和轉義不可信數據?GSON是否執行安全序列化?
請參閱link(儘管它在C#上)作爲注入JSON的示例。
這裏是我是如何解析接收到的數據:
T object = gson.<T>fromJson(sampleString, modelObject);
我沒有真正意識到安全的序列化或劃定不可信數據是如何工作的。與此相關的建議/參考非常感謝。
Gson要解析sampleString
中的任何內容,並將其應用於您的實例T
。 sampleString
是一個JSON字符串。 Gson無法知道JSON是否被注入了不可信數據,因爲Gson不知道什麼是「不可信」的,也不是「不可信的」。
但是,Gson只會關注T
及其超類定義的字段。如果sampleString
是一個JSON對象,並且有人攻擊了JSON以包含名爲bogeyman
的密鑰,並且T
沒有bogeyman
字段(並且沒有繼承一個字段),那麼bogeyman
將被忽略,因爲Gson無處可用。
因此,確保T
被寫入,以便它只接受有效密鑰。也許T
只有有字段的有效密鑰,或者您將其他字段標記爲transient
,或採取the user guide中概述的其他步驟。
請解釋在這種情況下「安全序列化」的含義。例如,您可以編輯您的問題以提供[mcve],其中顯示一些「已注入不可信數據的JSON」以及使用Gson解析該JSON的Java代碼。 – CommonsWare
請參閱更新的問題。 – sticky