System.Security.SecureString对象是不可变还是可变的?

时间:2017-02-17 13:54:03

标签: c# .net string security

  

为System.Security.SecureString

.NET框架中的对象是不可变的还是可变的?

1 个答案:

答案 0 :(得分:0)

根据文件显示它是可变的。

字符串与SecureString

System.String类的实例都是不可变的,当不再需要时,无法以编程方式安排进行垃圾回收;也就是说,实例在创建后是只读的,并且无法预测何时将从计算机内存中删除实例。因为System.String实例是不可变的,所以看起来修改现有实例的操作实际上会创建一个操作的副本。因此,如果String对象包含敏感信息(如密码,信用卡号或个人数据),则使用该信息后可能会显示该信息,因为您的应用程序无法从计算机内存中删除数据。

SecureString对象类似于String对象,因为它具有文本值。但是,SecureString对象的值固定在内存中,可以使用保护机制,如底层操作系统提供的加密,可以修改,直到您的应用程序将其标记为只读,并可以从计算机内存中删除您的应用程序调用Dispose方法或.NET Framework垃圾收集器。

https://msdn.microsoft.com/en-us/library/system.security.securestring(v=vs.110).aspx