我知道有SecureString类,但在大多数情况下,我认为它并不真正有用。
例如,假设我有一个客户端/服务器系统。服务器不需要我制作的应用程序,甚至可能是没有集成身份验证的SQL Server。当用户在客户端应用程序中的表单上输入密码时,它会以明文形式存储在内存中,因此,虽然我可以使用SecureString来读取它,但我无法真正看到这样做的重点。当然,它可以减少攻击面,但不会太多......即使我这样做,当用户点击'OK'时,必须生成纯文本字符串,即使我只需要从中计算哈希值。
那么,无论如何都要避免密码字符串浮动,直到GC决定回收内存?即使这样,在再次使用之前,记忆会被删除吗?
答案 0 :(得分:3)
SecureString
是一个好主意,时间尚未到来。它在以下场景中最有用:
SecureString
个按键。该类公开了几种专门为促进这一点而设计的变异方法。例如,WPF支持此功能(通过PasswordBox.SecurePassword控件属性)。SecureString
类型的密码。如果其中任何一个都是不真实的,那么你几乎要浪费你的时间,因为在代码路径的某个时刻,你将被迫将SecureString
解压缩到String
。
对用户进行身份验证的最安全方法是始终避免完全处理用户名/密码凭据。您可以使用Windows身份验证,InfoCards,OpenID等。
答案 1 :(得分:1)
您可以按键生成哈希键。只需使用文本框的OnKeyPress事件,然后使用该附加字节计算哈希值,并在文本框中输入其他字符,如*
。