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

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

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

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

@interface WipingMemoryViewController : UIViewController

@property (nonatomic,copy) NSString *text;

@end

當(dāng) A push 到另外一個(gè) View Controller B 時(shí),該數(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ù),被有效的擦除了。

還有提個(gè)醒,如果是這樣

_text = @"information";

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

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

_text = @"information";

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

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

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

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

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

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

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

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