2010-07-22 20 views
3

序列化可以用作存儲程序狀態的安全手段嗎?使用c#序列化#

+0

請問你能解釋多一點請 – anishMarokey 2010-07-22 04:11:08

+0

序列化的目的不是安全的,所以想想加密。 – Incognito 2010-07-22 04:21:19

+0

防禦會有什麼攻擊? – rook 2010-07-22 04:25:26

回答

4

不,序列化只是一種技術,允許您將對象或對象圖的內存中表示轉換爲稍後可以與類型定義一起使用的字節流,並將其重新恢復爲內存中的表示形式相同的對象。如果您需要某種安全性,您可以在將其保存(存儲)到磁盤或數據庫之前加密字節流,然後在解序列化之前再解密它,但串行化/反序列化過程本身不提供安全性。

1

尼斯摘自wikipedia:

序列化,但是,通過 可能暴露私人 實施細則打破了 不透明的抽象數據類型。爲了阻止 競爭對手製作兼容 產品,專有 軟件的發佈者經常保留 其程序的序列化格式 的商業祕密。有些人故意 混淆或甚至加密序列化的數據。

換句話說,序列化本身並不安全可言,因爲它可能暴露數據,而不是混淆或隱藏數據。人類可讀序列化可能會使這種困境變得更糟。

作爲一個完全側面的說明,我可以建議看看協議緩衝區而不是序列化嗎?

http://code.google.com/apis/protocolbuffers/docs/faq.html

Protobuf-net

Also: Jon Skeet's C# port of the protocol buffers (from Java, I believe...)

0

+1 @Charles'的解釋。

如果您要以每個用戶爲基礎保存應用程序設置,則應使用System.Security.Cryptography命名空間中的ProtectedData類來安全地存儲序列化數據;使用每個用戶數據的DataProtectionScope.CurrentUser範圍。

ProtectedData類使用用戶的登錄密碼加密數據;底層的DPAPI代碼處理密碼更改,因此仍然可以訪問數據。