.Net中的数据保护

问题描述 投票:0回答:2

我从我们的客户那里得到这个问题他们说如果我们进行复制粘贴或将数据存储在变量中,那么有可能数据被黑客攻击,黑客可以从RAM获取数据并在GC处理之前使用它它。

我们通常不会将字符串对象置于存储在堆内存中的位置,并且在刷新内存时将由GC收集。

这就是我对GC的看法

托管堆上已分配对象使用的内存超过可接受的阈值。在该过程运行时不断调整该阈值。调用GC.Collect方法。几乎在所有情况下,您都不必调用此方法,因为垃圾收集器会持续运行

在GC刷新之前,任何黑客都可以进入RAM并从中读取数据吗?如果是,那么我们如何克服它。

c# .net memory-management garbage-collection
2个回答
1
投票

如果黑客可以在您的进程中读取内存,那么由于GC导致的对象的不可预测的生命周期是您遇到的最少问题。任何语言都容易受到这类问题的攻击,因为计算机有效地操纵内存中的所有数据(无论是在GC堆中还是其他地方--C和汇编语言也需要将数据存储在内存中)。

存在(如Intel SGX)试图克服这个问题的技术,但它也有利用。从根本上说,没有软件解决方案可以阻止坏人一旦他们读取你的记忆。


1
投票

如果攻击者已经具备完全读取进程内存的能力,我同意有关在内存中尝试保护数据无效的评论。

也就是说,许多攻击者将通过漏洞进行攻击,这些攻击允许不完美地访问系统内存的子部分,这意味着使用SecureString仍具有实用价值。

我建议阅读此主题以讨论应用程序和限制:When would I need a SecureString in .NET?

© www.soinside.com 2019 - 2024. All rights reserved.