我的应用程序要求用户输入密码,如下所示:
using (var passwordForm = new PasswordForm())
{
var result = passwordForm.ShowDialog();
if (result == DialogResult.OK)
{
password = new SecureString();
foreach(var c in passwordForm.PasswordBox.Text)
{
password.AppendChar(c);
}
}
}
password
是一个 SecureString
字段,它保留密码很长一段时间。
很明显,PasswordField.Text
只是一个普通的未加密字符串,这意味着用户的密码被暴露了。没有真正解决这个问题的方法(据我所知)所以这是一个必要的邪恶。因此,我希望密码暴露的时间越短越好。
实现此目标的最佳方法是什么?密码表格将在我完成后立即处理,但这实际上会从内存中删除密码的所有“明文出现”吗?如果没有,确保尽快实现这一目标的最佳方法是什么?
最佳答案
我相信这已经得到解答 here ,但让我总结一下我的理解:
关于c# - 确保从内存中删除敏感数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31038929/