如何从内存中删除带有密码的文本框?



我有一个简单的登录表单。

用户拥有数字密码后,我需要销毁文本框到内存中。

这样做就够了吗?

txtPassword.Text = string.Empty;
txtPassword = null;
System.GC.Collect(); 

我想你可能对SecureString感兴趣

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

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

将其设置为:

txtPassword.PasswordChar = '';

最新更新