从我的WPF应用程序和C#库中跟踪内存中的敏感数据

时间:2011-01-04 21:32:39

标签: c# security debugging securestring

我一直在尝试浏览几个C#库和一个使用它们的WPF应用程序,并用SecureString替换纯文本字符串密码。我必须在某些地方将SecureString转换回常规字符串,以便与我无法控制的其他库/ Web服务进行交互,但我希望尽量减少我这样做的数量。我也试图关注如何正确地执行此操作this article。有没有一种简单的方法可以监视哪些字符串最终在我的代码中浮动在内存中?我想知道有多少弱点,可以说,在我的代码中,敏感数据存在于内存中的纯文本中。

1 个答案:

答案 0 :(得分:2)

您可以检查的一件事是,您的明文密码是否由库保留,通过添加弱引用,并查看消失所需的时间。您可以检查是否有助于不时进行一些强制垃圾收集。但是避免在生产代码中强制执行GC,特别是在服务器上。

但这只是问题的一半:它主要取决于其他库对你的字符串的作用。如果他们将密码嵌入到其他字符串中并保持引用,则在没有您控制它的情况下,它将在内存中不安全。