是否有更安全的.Net SQLConnection类替代品?

inv*_*ert 6 .net sql memory security windbg

我很惊讶这个问题没有得到深入讨论:

本文告诉我们如何使用windbg在内存中转储正在运行的.Net进程字符串.

我花了很多时间研究SecureString类,它使用非托管固定内存块,并保持数据加密.好东西.

当您使用其值并将其分配给SQLConnection.ConnectionString属性(属于System.String类型)时,会出现此问题.这是什么意思?好...

  • 它以纯文本格式存储
  • 垃圾收集将其移动,将副本留在内存中
  • 它可以通过windbg内存转储读取

这完全否定了SecureString功能!

最重要的是,SQLConnection类是无法使用的,我甚至无法使用SecureString属性自行滚动; 耶和闭源.好极了.

新的DAL层正在进行中,但是对于新的主要版本以及对于这么多用户而言,每个用户升级之前至少需要2年,其他人可能会无限期地保留旧版本.

由于使用连接的频率,从SecureString编组将无济于事,因为不可变的旧副本会粘在内存中,直到GC出现.集成的Windows安全性不是一种选择,因为一些客户端不在域上工作,而其他客户端通过网络漫游和连接.

如何在内存中保护连接字符串,以便使用windbg无法查看?

And*_*mar 10

如果您控制机器到可以读取另一个进程内存的程度,您还可以使用对引用替换对SecureString类的引用string.您可以访问其他进程可以使用的任何私钥.

没有防御拥有你的进程内存的黑客.:)