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