因此,.NET框架提供了SecureString类,用于以安全的方式存储字符串。但要阅读信息并使用它,您必须将其返回到标准字符串。请参阅this implementation example。
正如您从使用指针的示例中看到的,我们返回一个未加密的字符串。我们现在如何管理字符串的“不安全”实例?一旦设置了值,最安全的方法是什么?
修改
这个问题的目的是讨论在使用SecureStrings然后使用这些值时减少潜在攻击的表面区域的方法。不是关于“重复”链接的“原因”。
答案 0 :(得分:8)
将SecureString
的内容放回String
时,您会重新介绍使用此处列出的字符串的问题:
http://blogs.msdn.com/shawnfa/archive/2004/05/27/143254.aspx
使用SecureString
,提供了一些选项,用于将内容编组到非托管内存中,以便您可以访问数据,然后在完成数据后处理。
这些是您在托管代码中没有的选项。在处理非托管字节时,你可以将内存清零,确保它没有被分页到磁盘等,这正是你想要在这里减少攻击面的目的。
这里的关键是不创建String
的另一个实例,并以一种在处理此数据时更容易管理安全性的方式处理数据(遗憾的是,这是不受管理的)现在的代码)。