有关序列化C#的安全问题

时间:2014-03-29 20:39:22

标签: c# serialization

我的应用程序中Serialized Dictionaries为文件。因此,当我打开这个文件时,我可以看到很多关于我的类名等的信息,这些信息已经与文件一起保存了。 这样安全吗?是否每个人都可以打开我的应用程序创建的已保存文件,看看我使用过哪些类?这是我习惯Serialize我的对象的方法。

Serialization of two Dictionaries at once

我有什么选择将我的应用程序中的对象保存到文件中。

3 个答案:

答案 0 :(得分:2)

是的,他们将能够看到序列化对象的结构(也许如果你将它序列化为二进制文件,它会有点困难,它没有多大帮助)。

但是,任何人都可以看到您的源代码,只需考虑.NET Reflectorildasm。我个人不担心,我没有看到任何问题。

答案 1 :(得分:2)

您可以加密文件以隐藏其内容。因此,要读取加密文件,您需要将其读取到内存中,解密然后传递给反序列化Formatter

答案 2 :(得分:1)

在我看来,你不应该害怕它......但这取决于你的需要。 如果您认为它对您很重要,我建议将数据存储在其他地方(远程存储)。

您可以使用3种方法隐藏内容:

  1. 加密对象并对其进行序列化(最适合本地存储和邮寄) - http://msdn.microsoft.com/en-us/library/as0w18af(v=vs.110).aspx
  2. 序列化对象并加密文件(更糟糕的是,您必须处理删除文件) - http://support.microsoft.com/kb/307010
  3. serialaztion to binary - 最糟糕的,不起作用 - 你可以在txt中打开文件,弄清楚发生了什么
  4. 所以,如果这是你程序中的重要内容,我认为第一种方法将是最好的。