【发布时间】:2015-06-05 00:06:33
【问题描述】:
我使用 AFNetworking 作为我的基本网络课程。当我在越狱手机上进行内存转储时,我可以很容易地在转储文件中以纯文本形式查看请求 url 或响应(如 json 对象)。我检查了xcode中的泄漏工具,并没有基于此的内存泄漏。我的应用在 url 或响应中有敏感数据(如用户名、电子邮件地址......),我想在连接完成后立即清除这些信息。
我尝试在应用中禁用 NSURLCache:
NSURLCache *sharedCache = [[NSURLCache alloc] initWithMemoryCapacity:0
diskCapacity:0
diskPath:nil];
[NSURLCache setSharedURLCache:sharedCache];
我也试过了:
[[NSURLCache sharedURLCache] removeAllCachedResponses];
或
[[NSURLCache sharedURLCache] removeCachedResponseForRequest:NSURLRequest];
但这些都不起作用。 有人知道怎么做吗?
【问题讨论】:
-
如果您正在执行内存转储,您将看到已释放的 Foundation 对象的剩余部分,因为它们不会在释放时擦除内存,因此它们会一直保留到内存被重新使用为止。除了一些如何不使用 Foundation 类型之外,没有真正的通用解决方案。 Apple 不提供
NSString和NSData的安全版本。提交请求安全 Foundation 对象的错误报告:bugreporter.apple.com -
您应该考虑使用
AFHTTPSessionManager并在临时会话中使用initWithSessionConfiguration。请参阅NSURLSessionConfiguration文档中的ephemeralSessionConfiguration参考。 -
您为什么关心用户是否可以在越狱设备上看到自己的信息?他们选择破坏设备的安全性。
标签: ios objective-c afnetworking memory-dump