我的应用程序要求用户输入如下密码:
subject.getStudent()
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
只是一个常规的未加密字符串,这意味着会泄露用户的密码。实际上没有办法解决这个问题(据我所知),所以这是一个必要的邪恶。因此,我希望密码暴露的时间段尽可能短。
实现这一目标的最佳方法是什么?密码表单将在我完成后立即处理,但这实际上是否会从内存中删除密码的所有“明文出现”?如果没有,那么确保尽快实现这一目标的最佳方法是什么?