使用安全字符串并保持安全

时间:2009-01-16 20:47:53

标签: .net securestring application-security

因此,.NET框架提供了SecureString类,用于以安全的方式存储字符串。但要阅读信息并使用它,您必须将其返回到标准字符串。请参阅this implementation example

正如您从使用指针的示例中看到的,我们返回一个未加密的字符串。我们现在如何管理字符串的“不安全”实例?一旦设置了值,最安全的方法是什么?

修改

这个问题的目的是讨论在使用SecureStrings然后使用这些值时减少潜在攻击的表面区域的方法。不是关于“重复”链接的“原因”。

1 个答案:

答案 0 :(得分:8)

SecureString的内容放回String时,您会重新介绍使用此处列出的字符串的问题:

http://blogs.msdn.com/shawnfa/archive/2004/05/27/143254.aspx

使用SecureString,提供了一些选项,用于将内容编组到非托管内存中,以便您可以访问数据,然后在完成数据后处理

这些是您在托管代码中没有的选项。在处理非托管字节时,你可以将内存清零,确保它没有被分页到磁盘等,这正是你想要在这里减少攻击面的目的。

这里的关键是创建String的另一个实例,并以一种在处理此数据时更容易管理安全性的方式处理数据(遗憾的是,这是不受管理的)现在的代码)。