在iOS设备上保护ObjC对象的dealloc

use*_*178 4 security memory-management objective-c ios

当一个对象被解除分配时会发生什么?是否所有的内存都被淘汰了,或者痕迹仍然存在?

如果我理解正确,如果应用程序的内存处于活动状态,则会将其内存保存到闪存存储中.假设一个能够读出这个内存的足智多谋的黑客.理论上,NSString如果内存没有被某些东西覆盖,他有时能够读出解除分配的内容吗?

hot*_*aw2 5

不要将安全数据存储在Objective C数据类型中.它们是不透明的数据类型,每次尝试清除某些部分时,可能会在内存中制作和/或留下大量的数据副本.

补充:Swift数据类型似乎也是如此,包括结构,数组和字符串.它们是不透明的,因此谁知道DRAM中可能留下多少副本的数据.

使用非不透明的普通C数据类型(字符数组等),您可以在完成使用后立即使用它们,并且只要应用程序处于活动状态即可.您还可以对数组元素进行模糊处理,以便通过内存转储进行字符串搜索更加困难.