我的應用臨時存儲了大量敏感數據,我想再次覆蓋內存中的數據。iPhone NSString用零覆蓋敏感數據
我發現一個帖子較早的提示是:
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);
但這並不爲我工作。因爲我以許多不同的方式收集數據。例如:
mySensibleString = [anotherString substringWithRange:NSMakeRange(5,15)];
,甚至通過HTTPS連接得到它:
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
// Append the new data to receivedData.
// receivedData is an instance variable declared elsewhere.
[receivedData appendData:data];
}
所以我想知道是否有任何的方式來定位存儲在內存中的對象內的敏感數據,並找出其長度和覆蓋內存(不管多麼複雜)?
你的意思是'敏感'嗎? – 2011-02-24 20:59:21
是的。謝謝您的幫助。更正了帖子。 – hol 2011-02-24 21:03:09
如果可以從內存中讀取敏感數據,那麼什麼是安全的?似乎有點沒用,只需在完成時釋放字符串。 – 2011-02-24 21:04:41