2015-06-04 25 views
0

我正在创建一个带有密码框的表单,并且在我试图将其绑定到视图模型中的属性时出现错误。PasswordBox不可绑定的原因

我做了一些研究,发现出于安全考虑,它被制作成不可绑定的。我不是一个真的可以接受的人,我想知道原因。是什么使命名属性和调用.password比绑定到视图模型中的属性更安全?

我还发现,您可以使用附加属性使其可绑定。这是否更安全?

+0

就像你说的,出于安全原因。解决这个问题的最好方法是使用'Command'并通过'CommandParameter'发送整个'PasswordBox'元素。 –

+0

但我的问题是什么是安全的原因,使它比调用命名对象不安全? – Keithin8a

+0

我喜欢使用命令的想法,这似乎是一个不错的优雅解决方案。而且要比写一个附属的财产去做它设计不到的东西要容易得多。 – Keithin8a

回答

1

你要求的原因是你永远不应该在内存中使用纯文本密码。暴露密码的依赖属性需要框架在内存中保持密码未加密,直到它被垃圾回收,这被认为是安全问题。

+0

因此,当您调用passwordBoxName.password时,是不是将框架放入未确定的内存中? – Keithin8a

+0

安全风险总是存在,但直接使用属性时,与暴露的DP相比,至少它会在内存中存在更短的时间。你也应该使用SecureString。 –

0

使用类似WPF Inspector或Snoop的工具,您可以侦测密码字符串。所以它是不安全的绑定密码