我刚刚发现,由于安全原因,WPF
然而,我仍然不明白一般的原因或该答案。在那里,它说:在客户端机器RAM中明文保存您的密码是不安全的。 但是,一旦输入密码,密码就在内存中,我可以从代码中访问它。 那么为什么恶意软件不能直接从文本框中读取它呢?我错过了另一点吗?
编辑:为了澄清,特别是 Sheridan 的回答:假设用户在
PasswordBox
的Password
属性不可绑定,这使得在MVVM上下文中使用它们非常麻烦。
https://dev59.com/8XM_5IYBdhLWcg3wMgAF#1493330等答案表明,否则,密码可能以明文形式存储在内存中,在运行时可能被恶意软件读取,这是一个很糟糕的想法。然而,我仍然不明白一般的原因或该答案。在那里,它说:在客户端机器RAM中明文保存您的密码是不安全的。 但是,一旦输入密码,密码就在内存中,我可以从代码中访问它。 那么为什么恶意软件不能直接从文本框中读取它呢?我错过了另一点吗?
编辑:为了澄清,特别是 Sheridan 的回答:假设用户在
PasswordBox
中键入“pw”作为密码。那么,很明显,我可以通过PasswordBox.Password
检索到“pw”。“为什么将其绑定到ViewModel的字符串属性会不安全?”然后,“pw”最多包含在两个字符串中,但就我所看到的,这应该不会使它更加安全或不安全。难道重点真的是“提醒”程序员不要将密码存储时间超过所需吗?
PasswordBox.Password
绑定到字符串属性并不理想(就像一开始使用它并不理想一样),但将PasswordBox.SecurePassword
绑定到SecureString
不应该影响安全性。 - CodesInChaosSecureString
根本无法防止恶意软件攻击,它只能防止密码出现在交换文件和崩溃转储中。 - CodesInChaos