数组可以在物理内存中的多个位置吗?

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

假设我有一个数组,其中存储了一些敏感数据。覆盖数组的每个元素可确保从物理内存中的current位置擦除数据。

但是,物理内存中其他地方是否有数据的旧副本?还是虚拟到物理内存映射在数组的生存期内固定不变?

我对了解C,Java和WebAssembly中的行为特别感兴趣。

security compilation compiler-optimization ram virtual-memory
1个回答
0
投票

在所有语言中-数组是从其他某个内存位置填充的,因此您需要确保其他内存位置也被覆盖。

在像Java和WebAssembly这样的垃圾收集语言中,完全可以想象,垃圾收集器的实现会在周围移动对象(例如数组),而可能不会覆盖先前的内存位置。

您还应注意,如果数据来自进程外部(例如,网络),并且在进入进程之前已解密(或者根本没有加密,那么它也可能存在于OS缓冲区中。

[在大多数情况下,更好的做法是,如果进程处理敏感信息,则不让您的进程与不受信任的一方共享内存,而不是追究可能的敏感数据泄漏。

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