數(shù)據(jù)擦除

對于敏感數(shù)據(jù),我們不希望長時間放在內(nèi)存中,而希望使用完后立即就被釋放掉。

但是不管是 ARC 還是 MRC,自動釋放池也有輪循工作周期,我們都無法控制內(nèi)存數(shù)據(jù)被擦除的準(zhǔn)確時間,讓 hackers 們有機可乘。 本文介紹一個小技巧——及時數(shù)據(jù)擦除。

假如一個 View Controller A的一個數(shù)據(jù)被綁在一個 property 上,

@interface WipingMemoryViewController : UIViewController

@property (nonatomic,copy) NSString *text;

@end

當(dāng) A push 到另外一個 View Controller B 時,該數(shù)據(jù)還是有可能被讀到的

WipingMemoryViewController *lastController = (WipingMemoryViewController *)self.navigationController.viewControllers[0];

NSLog(@"text = %@",lastController.text);

于是,“用后即擦”變得十分必要:


_text = [[NSString alloc]initWithFormat:@"information"];

NSLog(@"Origal string = %@",_text);

//do something...

charchar *string = (charchar *)CFStringGetCStringPtr((CFStringRef)_text, CFStringGetSystemEncoding());

memset(string, 0, [_text length]);

NSLog(@"final text = %@",_text);

Log 輸出如下:

WipingMemory[2518:70b] Origal string = information

WipingMemory[2518:70b] final text =

可以看到,我們想要保護(hù)的數(shù)據(jù),被有效的擦除了。

還有提個醒,如果是這樣

_text = @"information";

創(chuàng)建的字符串,是會被分配到 data 區(qū),而是無法修改的。

如果有興趣也有閑心,可以試試運行下面的代碼,有彩蛋哦:

_text = @"information";

memset((__bridge voidvoid *)(_text), 0, _text.length - 1);

NSString *myString = [[NSString alloc]initWithFormat:@"information"];

NSLog(@"Origal text : %@ \n",myString);

編譯器把兩個 information 的省略到一個地址了~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 注:原文---念茜的博客 對于敏感數(shù)據(jù),我們不希望長時間放在內(nèi)存中,而希望使用完后立即就被釋放掉。 但是不管是AR...
    richar_閱讀 202評論 0 0
  • 1,Search Bar 怎樣去掉背景的顏色(storyboard里只能設(shè)置background顏色,可是發(fā)現(xiàn)cl...
    以德扶人閱讀 2,895評論 2 50
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,699評論 19 139
  • 1.CoreData 1.1 CoreData概述 1)Core data 是數(shù)據(jù)持久存儲的最佳方式 2)Core...
    微春風(fēng)閱讀 4,013評論 0 10
  • *面試心聲:其實這些題本人都沒怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個offer,總結(jié)起來就是把...
    Dove_iOS閱讀 27,658評論 30 472

友情鏈接更多精彩內(nèi)容