刪除的NSString我有一個NSString
(含有一些機密數據)從存儲器但不僅通過將其設置到nil
除去,而是通過抵消它的字節。什麼到目前爲止,我已經試過是:從存儲器
NSString *str = @"test";
NSLog(@"original string:%@", str);
CFStringRef ref = (__bridge CFStringRef)str;
const char * strPtr = CFStringGetCStringPtr(ref, kCFStringEncodingUTF8);
memset(strPtr, 0, [str lengthOfBytesUsingEncoding:NSUTF8StringEncoding]);
NSLog(@"cleared string:%@", str);
但CFStringGetCStringPtr
將返回NULL
的功能,所以它崩潰在與memset
行。蘋果說here,在某些情況下,該功能返回NULL
是正常的,但我不知道如何解決這個問題。
在此先感謝
爲什麼不釋放指針之前,只需要改變字符串的內容? – Alexander
這是不變的,所以我所能做的是改變'str'指向一個不同的對象,但我可能只是單純的將其設置爲'nil'這是不夠的 – Levi
這種企圖隱藏敏感數據是徒勞的。即使您設法清除內存,攻擊者也可以在清除內存之前獲取內存。國際海事組織(IMO)目前沒有辦法阻止從內存獲取信息,或者利用其他技巧獲取機密信息,假設設備遭到破解。 – CouchDeveloper