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

标签 c# security debugging securestring

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

最佳答案

您可以检查的一件事是您的明文密码是否由库保存,方法是添加对它的弱引用,然后查看需要多长时间才能消失。您可以检查不时进行一定数量的强制垃圾收集是否有帮助。但要避免在生产代码中进行强制 GC,尤其是在服务器上。

但这只是问题的一半:它主要取决于其他库如何处理您的字符串。如果他们将密码嵌入其他字符串中,并保留它的引用,则在您无法控制的情况下,它在内存中将不安全。

关于c# - 从我的 WPF 应用程序和 C# 库跟踪内存中的敏感数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4598650/

相关文章:

c# - 删除已经绘制的形状

MySQL/ASP 参数化以防止注入(inject)

html - 如何在 https 站点的 iframe 中允许 http 内容

javascript - 浏览器无法对不支持 CORS 的服务器进行远程请求

c# - 使用 Visual Studio 2013 处理 SQLITE 数据库

c# - AutoMapper 将 2 个表中的记录连接到单个 IEnumerable View 模型中

android - 在没有密码的情况下从 AndroidKeyStore 获取 AES key 是否不安全?

debugging - 如何调试 jasper 报告?

javascript - 为什么这个页面会导致 iOS 崩溃?

c# - 如何在 C# 中创建 16 位灰度 PNG?