ios 数据泄露

前提:移动端的数据窃取是一个非常严重的问题,哪些保存着重要数据的设备丢失或被盗,不要让攻击者通过物理手段来读取到数据,在本文章介绍几种数据泄露方式。

1.解密NSLog 和苹果日志

NSLog:在调试时将消息发送到Xcode控制台,在设备上运行时将消息发送到系统全局日志,然后由NSLog记录数据可以被任何拿到物理设备,和其他缓存的应用程序类似。

在发布版本中禁用NSLog
移除NSLog输出最简单的方法就是使用可变参数宏,

#ifdef DEBUG
 #define _GTMDevLog(...) NSLog(__VA_ARGS__)
#else
 #define _GTMDevLog(...) do { } while (0)
#endif

注意:

NSLog 可能将数据泄露到硬盘,从而给物理攻击者,创造机会,除此之外数据也可能通过其他方式在应用程序之间泄露,

2.敏感数据如何通过剪贴板泄露

iOS 剪贴板是一种灵活的机制,能够在应用内,或应用间共享任意数据。借助剪贴板可以在应用之间共享文本数据或系列化对象,你可以选择是否将剪贴板数据储存到硬盘中。

UIPasteboard 系统的剪贴板,没有任何访问控制,或者访问限制,如果应用向剪贴板存放了一些信息,那所有的应用都可以读取,删除,或者窃取数据,一些后台可能会定期访问剪贴板内容以获取敏感数据。

剪贴板的保护策略

  • 我是否希望用户将信息复制到其他应用?应用是否只需要在我的应用中移除数据?
  • 剪贴板数据应该储存多长时间?
  • 应用中的一些数据是否应该禁止复制数据?
  • 应用中哪些位置应改禁止粘贴数据?

切换应用时清空剪贴板
如果只是希望用户自己的应用中使用复制和粘贴,那那在相应的事件中。清空粘贴板,以确保数据不会遗留在粘贴板中。在applicationDidEnterBackground和applicationWillTerminate 中设置pasteBoard.items = nil 清空粘贴板即可。

有选择性的禁止复制/粘贴

  • (BOOL)canPerformAction:(SEL)action withSender:(id)sender

3.缓存管理
官方文档中删除缓存数据的方法[[NSURLCache sharedURLCache] removeAllCachedResponses];只会从内存中删除缓存条目,同样的信息,仍然会被保存在硬盘中,并且不会被删除

干脆不要缓存
[[NSURLCache sharedURLCache] setDiskCapacity:0];
[[NSURLCache sharedURLCache] setMemoryCapacity:0];
通过限制缓存的容量禁止缓存储存。
另外一种方法

- (NSCachedURLResponse *)connection:(NSURLConnection *)connection
                  willCacheResponse:(NSCachedURLResponse *)cachedResponse
{
    if (self.cacheResponse) {
        return self.cacheResponse(connection, cachedResponse);
    } else {
        if ([self isCancelled]) {
            return nil;
        }

        return cachedResponse;
    }

}

通过服务器禁止缓存
Cache-Control HTTP头来命令客户端不要缓存请求,这个不仅可以在应用级别禁用缓存,还可以针对特定的网络请求禁用缓存。

推荐使用

之前的方法都是禁止数据缓存,但是有时候想要在数据缓存之后,将其删除,可能处于性能原因。

删除硬盘的唯一方法
[[NSFileManager defaultManager] removeItemAtPath:filePath error:nil];

4.用户偏好设置的错误用法

用户偏好设置通常包含敏感信息。
如果认证的信息文明储存在属性列表,这就是最严重的数据泄露。
用偏好设置储存信息最好用加密过得数据

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值