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的省略到一个地址了~





版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

iOS安全攻防(二十三):Objective-C代码混淆

iOS安全攻防(二十三):Objective-C代码混淆 class-dump可以很方便的导出程序头文件,不仅让攻击者了解了程序结构方便逆向,还让着急赶进度时写出的欠完善的程序给同行...

iOS安全攻防(二十一):废除应用程序的ASLR特性

原文地址:http://blog.csdn.net/yiyaaixuexi/article/details/19642621 ASLR (Address Space Layout...

关于真实

或许,单纯和质朴是RD的一贯品质;我们追求所有事物的本质、追求最为真实的呈现。亦因此,我们常常在处事时、做人时,不屑于掩饰、更不屑于粉饰。(一)目前为止,我尚未听过所知道的哪家通过认证的公司,是没有在...

iOS安全攻防(一):Hack必备的命令与工具

你的应用正在被其他对手反向工程、跟踪和操作?你的应用是否依旧裸奔毫不防御? 郑重声明一下,懂得如何攻击才会懂得如何防御,一切都是为了之后的防御作准备。废话少说,进入正题。 今天总结一下为h...

iOS安全攻防(十五):使用iNalyzer分析应用程序

好想用 doxygen 画iOS app的class继承关系。 有没有比 class-dump-z 更直观的分析工具? 利器 iNalyzer 隆重登场~ 一...

iOS安全攻防(十九):基于脚本实现动态库注入

基于脚本实现动态库注入MobileSubstrate可以帮助我们加载自己的动态库,于是开发者们谨慎的采取了对MobileSubstrate的检索和防御措施。那么,除了依靠MobileSubstrate...

少壮不努力,长大干IT。

刚才QQ弹出新闻:清华将分1000套住房给教师。在线的都看见了吧?   那么我又关注一下其他城市的教师待遇,珠海的中学老师都8000+啦,公积金都3000了。机关幼儿园的教师都有房可以分。深圳龙岗区小...

漫谈Objective-C :空段selector

Objective-C支持空段selector,这显然不具备良好的代码可读性,平时我们也不会这么写这么用,那为什么还要特别提出来说这件事呢?只是想给大家提个醒......
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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