但是,虽然后来将明文密码分配给密码,但是永远不会从内存中清除此变量

时间:2019-05-30 11:07:09

标签: c# asp.net asp.net-mvc model-view-controller passwords

定义密码,即 指定包含用户密码。但是,虽然以后将明文密码分配给密码,但这是 变量从内存中永远不会清除

var password = ConfigurationManager.AppSettings["xyz"].ToString();

该如何删除此堆检查?

1 个答案:

答案 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();