在NSString中安全地清零内存

wol*_*ats 8 security cocoa cocoa-touch memory-management objective-c

在iOS上,我想知道,如果我读取用户提供的密码值如下:

NSString* strPwd = UITextField.text;

//Check 'strPwd'
...

//How to clear out 'strPwd' from RAM?
Run Code Online (Sandbox Code Playgroud)

我只是不喜欢将敏感数据"悬挂"在RAM中.知道怎么把它归零吗?

zap*_*aph 9

基本上你真的不能.Apple在这个问题上存在漏洞.此外,存在问题UITextField并且NSString至少存在问题.

重申@Leo Natan现在删除的答案中的评论:

释放封闭的NSString对象并不能保证字符串字节在内存中是零.此外,如果一个设备被越狱,所有沙盒苹果承诺将毫无用处.但是,在这种情况下,几乎没有人可以做,因为可以在应用程序运行的中间交换整个运行时,这从内存中获取密码.

请提交苹果的另一个错误请求,越多越好.

Apple Bug Reporter