3 回答
TA贡献1934条经验 获得超2个赞
我会停止使用SecureString。看起来PG家伙正在放弃对它的支持。可能甚至在将来拉它 - https://github.com/dotnet/apireviews/tree/master/2015-07-14-securestring。
我们应该在.NET Core中的所有平台上从SecureString中删除加密 - 我们应该废弃SecureString - 我们可能不应该在.NET Core中公开SecureString
TA贡献1829条经验 获得超13个赞
目前使用的框架的某些部分SecureString:
WPF的System.Windows.Controls.PasswordBox控件在内部将密码保存为SecureString(作为副本公开PasswordBox::SecurePassword)
该System.Diagnostics.ProcessStartInfo::Password物业是一个SecureString
用于X509Certificate2获取SecureString密码的构造函数
主要目的是减少攻击面,而不是消除它。SecureStrings在RAM中被“固定”,因此垃圾收集器不会移动它或复制它。它还确保纯文本不会写入Swap文件或核心转储中。加密更像是混淆,并且不会阻止确定的黑客,谁能够找到用于加密和解密它的对称密钥。
正如其他人所说的那样,你必须创建一个SecureString逐个字符的原因是因为第一个明显的缺点:你可能已经将秘密值作为一个普通的字符串了,那么重点是什么?
SecureStrings是解决Chicken-and-Egg问题的第一步,因此即使大多数当前场景需要将它们转换回常规字符串以完全使用它们,它们在框架中的存在现在意味着更好地支持它们。未来 - 至少到你的程序不一定是薄弱环节的地步。
添加回答
举报