定义密码,即 指定包含用户密码。但是,虽然以后将明文密码分配给密码,但这是 变量从内存中永远不会清除。
var password = ConfigurationManager.AppSettings["xyz"].ToString();
该如何删除此堆检查?
答案 0 :(得分:0)
您有两个选择可以从内存中手动删除字符串内容:
选项1:手动收集垃圾
保存密码的字符串对象消耗的内存没有什么特别的。要使用手动垃圾回收从内存中删除对象,请删除对password变量的所有引用,然后调用System.GC.Collect()。
选项2:使用System.Security.SecureString
SecureString具有Dispose方法,该方法将在处理完字符串后释放该字符串消耗的内存。我自己还没有尝试过,但是您应该可以执行以下操作:
// Create a SecureString
SecureString password = new SecureString();
foreach (char c in ConfigurationManager.AppSettings["xyz"].ToString())
{
password.AppendChar(c);
}
// Use password
this.SomeMethod(password);
// Remove password
password.Dispose();