首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iPhone NSString使用零覆盖敏感数据

iPhone NSString使用零覆盖敏感数据
EN

Stack Overflow用户
提问于 2011-02-25 04:54:04
回答 2查看 884关注 0票数 1

我的应用程序临时存储了大量敏感数据,我想再次覆盖内存中的数据。

我早些时候发现了一篇文章,建议这样做:

代码语言:javascript
复制
char* block = malloc(200);
NSString* string = [[NSString alloc] initWithBytesNoCopy:length:encoding:freeWhenDone];
//use string
memset(block, 0, 200);// overwrite block with 0
[string release];
free(block);

但这对我不起作用。因为我用很多不同的方式收集数据。例如:

代码语言:javascript
复制
mySensibleString = [anotherString substringWithRange:NSMakeRange(5,15)];

或者甚至通过HTTPS连接获得它:

代码语言:javascript
复制
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
    // Append the new data to receivedData.
    // receivedData is an instance variable declared elsewhere.
    [receivedData appendData:data];
}

因此,我想知道是否有任何方法可以在内存中定位存储在对象中的敏感数据,并找出其长度并覆盖该内存(无论有多复杂)?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-02-25 05:13:38

有太多的未知因素让这样的努力值得一试。在数据到达你之前,你不知道它走了哪条路,也不知道它的副本留在了内存中,但没有被清除,等等。

如果你在去年关注了任何关于iPhone安全的新闻,你会发现这是一个非常糟糕的时刻--非常有缺陷的加密,发生了像键盘数据可能被保留很长很长时间这样的糟糕事情,等等。如果我是你,我不会费心!

显然,将数据写入磁盘是另一回事,值得考虑。

结论:非常非常敏感的重要数据可能不应该放在iPhone (也许还有其他一些需要启动的智能设备)附近。

票数 3
EN

Stack Overflow用户

发布于 2011-02-25 05:24:02

如果要加密存储在堆上的任何数据,情况会怎样?所以,任何时候,当你将一些东西存储到一个变量或一个数据结构中时,通过一个密码传递它。然后,当你想使用它的时候,只要解密它即可。

省去了你想要擦掉任何东西的麻烦。即使他们能拿到数据,如果他们不知道你的加密密码/密钥/方法,他们也无法读取。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5110339

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档