WPF密码盒中密码的安全好处是不可绑定的

本文关键字:密码 绑定 安全 WPF | 更新日期: 2023-09-27 17:51:07

我偶然发现WPF PasswordBox es的Password属性由于安全原因是不可绑定的,这使得在MVVM上下文中使用它们非常麻烦。像https://stackoverflow.com/a/1493330/3198247这样的答案表明,否则,密码可能在运行时以纯文本形式存储在内存中,这将是一个坏主意,因为它可能被恶意软件读取。

然而,我似乎仍然不理解一般的原因或那个答案。在那里,它说在客户端机器RAM上以明文形式保存密码是安全禁忌。。但是,只要我能够从代码中访问密码,密码就会在内存中输入。那么为什么恶意软件不能直接从文本框中读取它呢?我是不是又漏了一点?

编辑:澄清一下,特别是w/关于Sheridan的回答:假设一个用户输入"pw"作为他的密码的PasswordBox。然后,显然"pw"在内存中,因为我可以通过PasswordBox.Password检索它。为什么它是不安全的,另外能够将它绑定到一个ViewModel的字符串属性?然后,"pw"最多包含在两个字符串中,但据我所知,这应该不会使它更安全或更不安全。还是说,这真的是在"提醒"程序员,PW不应该存储的时间超过需要的时间?

WPF密码盒中密码的安全好处是不可绑定的

看一下这个答案为什么char[]比String更适合作为密码?我知道这是java,但我相信同样的规则适用。但是根据系统所需的安全级别,这应该足够了。恶意软件总是有获取信息的方法,比如键盘记录,但你能做的也只有这么多。

错过了一些东西。

纯密码不应该存储在数据库中。相反,密码被加密并然后存储在数据库中。当用户尝试登录时,他们输入文本,您应该立即加密并将与来自数据库的加密密码进行比较。

因此,我们永远不会看到未加密的密码,无论是在数据库,还是代码中。