iOS安全攻防(十三):数据擦除

原创 2014年01月22日 18:47:20

数据擦除



对于敏感数据,我们不希望长时间放在内存中,而希望使用完后立即就被释放掉。
但是不管是ARC还是MRC,自动释放池也有轮循工作周期,我们都无法控制内存数据被擦除的准确时间,让hackers们有机可乘。
本文介绍一个小技巧——及时数据擦除。


假如一个View Controller A的一个数据被绑在一个property上,

@interface WipingMemoryViewController : UIViewController

@property (nonatomic,copy) NSString *text;
@end

当A push到 另外一个View Controller B时,该数据还是有可能被读到的

WipingMemoryViewController *lastController = (WipingMemoryViewController *)self.navigationController.viewControllers[0];
NSLog(@"text = %@",lastController.text);


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

_text = [[NSString alloc]initWithFormat:@"information"]; 
NSLog(@"Origal string = %@",_text);
//do something...
char *string = (char *)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 = 

可以看到,我们想要保护的数据,被有效的擦除了。


还有提个醒,如果是这样

_text = @"information";


创建的字符串,是会被分配到data区,而是无法修改的。




如果有兴趣也有闲心,可以试试运行下面的代码,有彩蛋哦:

_text = @"information";
memset((__bridge void *)(_text), 0, _text.length - 1);
NSString *myString = [[NSString alloc]initWithFormat:@"information"];
NSLog(@"Origal text : %@ \n",myString);

编译器把两个information的省略到一个地址了~





版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yiyaaixuexi/article/details/18669201

硬盘数据恢复实例全解(1)

硬盘数据恢复实例全解(1)cLinuxer laissez-aller 2001-05-09 10:04:05     难道在硬盘数据由于各种原因被破坏后,我们就只能自怨自艾?   这篇实例全解,就是...
  • tchaikov
  • tchaikov
  • 2001-05-14 10:12:00
  • 1366

iOS安全攻防(十三):数据擦除

数据擦除对于敏感数据,我们不希望长时间放在内存中,而希望使用完后立即就被释放掉。但是不管是ARC还是MRC,自动释放池也有轮循工作周期,我们都无法控制内存数据被擦除的准确时间,让hackers们有机可...
  • yiyaaixuexi
  • yiyaaixuexi
  • 2014-01-22 18:47:20
  • 16424

存储介质<em>擦除</em>工具

下载 &gt; <em>安全</em>技术 &gt; 系统<em>安全</em> &gt; 存储介质<em>擦除</em>工具 存储介质<em>擦除</em>工具 2013-09-28 上传大小:311KB 上网保密取证 痕迹<em>擦除</em>工具 该工具可以完成<em>擦除</em>存储介质的使用...
  • 2018年04月14日 00:00

Android 反调试反内存dump总结

一切都在代码中:https://github.com/parkerpeng/DroidAnti
  • autohacker
  • autohacker
  • 2016-05-10 16:39:46
  • 2692

黑莓wipe工具 清空 <em>擦除</em>手机<em>内存</em>

4000万 程序员的必选 600万 绿色<em>安全</em>资源 现在开通 立省522元 或者 购买C币...黑莓wipe工具 清空 <em>擦除</em>手机<em>内存</em> 3积分 立即下载 ...
  • 2018年04月16日 00:00

关于网上一些关于内存泄漏和内存溢出资料整理(一)

一、概述 1 二、Android(Java)中常见的容易引起内存泄漏的不良代码 1 (一) 查询数据库没有关闭游标 2 (二) 构造Adapter时,没有使用缓存的 convertView 3 ...
  • qq_29678299
  • qq_29678299
  • 2016-07-27 17:58:51
  • 607

内存技术和优化

Flash Flash和标准DRAM的区别 Flash在被重写之前必须被擦除,而且擦除是以块为单位而不是以个别字节或字。 Flash是静态的,具有掉电不丢失的性质。 Flash对于每个块有有有限的写...
  • aq7218
  • aq7218
  • 2016-09-06 15:22:31
  • 189

Java____堆内存和栈内存

—————————————————存储器知识前瞻—————————————— 寄存器 寄存器是中央处理器内的组成部份。它跟CPU有关。寄存器是有限存贮容量的高速存贮部件,它们可用来暂存指令、数据和位址...
  • u010241120
  • u010241120
  • 2015-09-03 02:20:42
  • 569

Linux下用命令行彻底删除文件

一、Linux下用命令行彻底删除文件 Linux下一般会使用删除键或者rm命令、将文件扔到垃圾箱。但是,这些方法并没把文件从我们的电脑里彻底删除,只是把文件隐藏起来,让用户看不见而已。 ...
  • gaotengfei001
  • gaotengfei001
  • 2017-10-18 15:15:14
  • 524

内存学习

掌上电脑的内存一般分为ROM(read only memory)和RAM( read and write memory),只读存储器ROM里面有固化的操作系统,剩余容量可用来存储数据。rom的种类,按...
  • alfiede
  • alfiede
  • 2007-04-24 12:57:00
  • 563
收藏助手
不良信息举报
您举报文章:iOS安全攻防(十三):数据擦除
举报原因:
原因补充:

(最多只允许输入30个字)