我知道有 SecureString 类,但对于大多数情况,我认为它并没有真正有用。
例如,假设我有一个客户端/服务器系统。服务器不需要我制作的应用程序,它甚至可以是没有集成身份验证的 SQL Server。当用户在客户端应用程序的表单上输入他的密码时,它以明文形式存储在内存中,因此,虽然我可以使用 SecureString 来读取它,但我真的看不出这样做的意义。当然,它可以减少攻击面,但不多……即使我这样做了,当用户点击“OK”时,必须生成一个纯文本字符串,即使我只需要从中计算一个哈希值。
那么,在 GC 决定回收内存之前,是否有避免密码字符串浮动的方法?即使那样,内存在再次使用之前会被擦除吗?