为什么SecureString没有重载的构造函数?

Mat*_*att 0 vb.net securestring

考虑以下:

_securePassword = New SecureString()
For Each character As Char In password
    _securePassword.AppendChar(character)
Next
Run Code Online (Sandbox Code Playgroud)

令人惊讶的是,文档似乎暗示这是填充SecureString实际信息的"最佳实践"方式:

从一个角色一次创建一个字符串时......

我的问题

为什么不包括New SecureString(password)

对于我来说,这似乎是纯粹的锅炉板代码.

Dav*_*idG 5

文件告诉你为什么:

永远不应该从String构造SecureString对象,因为敏感数据已经受到不可变String类的内存持久性影响.构造SecureString对象的最佳方法是来自一次一个字符的非托管源,例如Console.ReadKey方法.

所以基本上,你应该永远不要在内存中使用字符串,因为这是不安全的.您无法保证字符串已从易受攻击的内存中删除.