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