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