【发布时间】:2012-11-06 12:03:06
【问题描述】:
我正在开发 WPF .net 3.5 应用程序。
由于内置密码框存在安全问题,我需要创建自己的密码框。 新的 PasswordwordBox 基于常规 TextBox。
一切正常,只有在 WPF 密码框中双字节字符被阻止,我想将此行为也添加到我的新密码框。
我该怎么做?
【问题讨论】:
-
什么是双字节字符,为什么要阻止它们?为什么基于
TextBox的密码框比内置密码框更安全? -
很多问题 :) 在中文中你需要 2 个字节来表示一个字符,所以当你按下键盘中的一个键时,会打开一个小窗口,里面有可供选择的字符数(这意味着,例如,如果您按下“G”,则可能意味着多个字符)。这对于密码框是不可接受的,因为这样有人可以看到您选择的密钥是什么。
-
在这种情况下,您应该阻止 IME,而不是具有更高代码点的字符。有很多代码点高于 255 的字符是用普通键输入的。顺便说一句,因为 .net 对所有内容都使用 UTF-16(16 位
chars),每个字符至少需要 2 个字节(少数罕见的需要 4 个字节)。所以多字节字符分类不再有用了。 -
常规密码框的问题是,例如,字符并没有真正隐藏,如果有人会运行例如 snoop - 你会看到字符并窃取密码....
-
在 WPF 文本框中是否有阻止 IME 的方法?
标签: c# wpf textbox passwordbox