我一直在尝试浏览我的几个 C# 库和一个使用它们的 WPF 应用程序,并将纯文本、字符串密码替换为 SecureString
。我确实必须在某些地方将 SecureString
转换回常规字符串,以便与我无法控制的其他库/Web 服务进行交互,但我想尽量减少这样做的数量。我也在尝试关注 this article 以了解如何正确执行此操作。有没有一种简单的方法可以从我的代码中监控哪些字符串最终在内存中 float ?我想知道有多少弱点,可以这么说,在我的代码中,关于内存中的纯文本敏感数据有多少。
最佳答案
您可以检查的一件事是,您的明文密码是否由库保存,通过添加对它的弱引用,并查看它需要多长时间才能消失。您可以检查不时进行一些强制垃圾收集是否有帮助。但是避免在生产代码中执行强制 GC,尤其是在服务器上。
但这只是问题的一半:这主要取决于其他库如何处理您的字符串。如果他们将密码嵌入到其他一些字符串中,并保持引用,它将在内存中不安全,而您无法控制它。
关于c# - 从我的 WPF 应用程序和 C# 库跟踪内存中的敏感数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4598650/