iOS应用剖析 ---- Data目录

Data目录中最重要的是Application子目录。Data/Applications目录包含了应用程序运行所需的其他数据:参数设置,缓存,cookie等。这个目录也是需要重点检查的对象。因为大部分数据泄露都发生在这里。下面我来深入的介绍一下这些子目录,当然,目录树中的目录不一定会全部出现在应用的目录中,有一些是使用特定的API创建的。

Documents和Inbox目录

Documents目录主要用来存储非临时状态的应用数据,比如用户创建的内容或应用程序在离线模式下需要的本地缓存信息。 如果你在应用的Info.plist文件中设置了UIFileSharingEnabled,那么可以通过iTunes访问这些文件。

其他应用发送过来的文件储存在Documents/Index目录中。这些应用可以使用UIDocumentInteractionController类来发送文件。

你只能读取和删除存储在Inbox目录下的文件。这些来自于其他应用程序的文件不能写入你的应用目录里,他们将被一个优先级更高的系统进程处理。 你可以定期删除这些文件也可以让用户选择是否删除,这样用户就可以知道这里有没有敏感信息。

如果你正在开发一个应用想确保磁盘上不会遗留任何敏感信息,那么可以将Inbox目录中的文档复制到另外一个位置,从而对数据进行保护,然后从Inbox目录中移除这些文件。

注意,你的应用程序请求打开的任意文件都有可能永久的遗留在磁盘中。如果你尝试打开一个应用程序无法处理的文件类型,那么这个文件将会被传递给第三方应用,我们无法知道第三方应用是否会将它删除或者也许会将文件永久保留下来。换句话说,你无法清理那些要求第三方应用打开的文件即使只是用Quick Look API来简单预览一下内容。Inbox文件在外面存放太长时间很危险,应该考虑让你的应用能够查看自己的数据,而不是依赖一个帮手,你保证最后正确的清除这些文件。

Library目录

Library目录包含应用程序相关的大部分文件包括由应用程序和网络产生的缓存数据。Library目录下的文件可以通过iTunes和iCloud进行备份,Cache目录除外。

Application Support目录

由用户创建和接受的文件不会储存在Application Support目录中,该目录主要用来存储应用程序使用的数据文件。例如,一个应用程序内购买的下载内容,配置文件,积分榜等。正如它名字所暗示的那样,该目录下的文件,主要用来支持应用程序运行,这些文件可以在应用程序安装时不熟也可以由应用程序创建或从网络上下载。

默认情况下iiTunes会备份这个目录下的数据到你的计算机和iCloud中。但是如果你不放心将数据保存在苹果的云端也可以通过为新创建的文件设置NSURLIsExcludedFromBackupKey属性来禁止备份到云端。

值得注意的是,苹果只要求应用备份用户数据到iCloud,包括用户创建的文档配置文件等,不要求应用程序备份数据。如果一个应用程序,允许将应用相关的内容备份到iCloud上,比如可下载内容,那么该应用,一定会被App Store拒绝上架。

Caches和Snapshots目录

Caches目录在功能上类似网页浏览器的缓存:应用程序保留数据的主要目的是为了性能,而不是因为数据本身很重要。所以iTunes不会备份此目录。

虽然苹果声明应该由你的应用程序管理Caches目录但是操作系统,其实也会操作该目录下的内容和子文件夹Snapshots。我们应该形成一种思维定式:Caches目录用来存放临时内容,伴随着应用程序的启动与退出,这些内容将会被丢弃。iOS在系统运行空间不足时也会自动删除这些话传目录,不过并不会删除当前正在运行程序的缓存。

Caches目录有时也会把网页缓存内容存储在子目录Caches/com.mycompany.myapp

中。该位置也容易泄露敏感信息,因为通过https进行长时间传输数据可以被iOS缓存。如果开发者没有禁止数据缓存和尽快使缓存数据过期,那么攻击者总能在这里尝到甜头。

最后,当应用程序,进入后台操作系统会自动把当前应用的屏幕快照存储在Snapshots子目录中,这样做会无形中把一些敏感信息存储在本地。操作系统的初衷是好的:应用被切回前台时操作系统可以使它的屏幕快照创建一个快速的动画。不幸的是,在很多应用中经常看到由此产生的副作用:截图中包含了用户的社会保险号码,用户的详细信息以及其他敏感内容。

Cookies目录

由URL加载系统所产生的Cookie都存储在Cookies目录中。创建NSURLRequest请求时,你将指定相关的Cookie策略,或者选择系统默认的策略。和OS X不同,iOS上的Cookie不会在应用程序之间共享,每个应用都有单独的目录来存储自己的Cookie。

Preferences目录

iOS将应用的偏好设置存储在Preferences目录下,但是不允许应用,直接编辑目录中的文件。 取而代之,此目录下文件的创建,读取和操作都通过NSUserDefaults或CFPreferences API来完成。

这些API将应用设置文件已传文本的格式存储,因此绝不能用它们来存储敏感的用户信息和证书。审查一个应用的本地存储信息时一定要记得检查Preference目录中的plist文件。有时候你会在这些plist文件中,发现用户名和密码API访问密钥和不应该暴露给用户的安全设置。

保存应用程序状态的目录

用户期待应用能够记住他们输入文本框的内容和启用的设置。如果一个用户切换到另外一个应用,片刻后又切回之前的应用,原先的应用可能已经在后台被操作系统杀掉了。为了在应用启动时使它的界面和之前保持一致,新版本的iOS通过State Preservation API将对象状态信息存储在Saved Application State目录中。开发者可以将需要保存状态的UI标记出来。

tmp目录

正如你猜测的那样,tmp用来存储临时文件。和Caches目录一样,当你的应用程序停止运行时,该目录中包含的文件可能会被操作系统自动删除。此目录的使用方法与Caches目录类似,不同之处在于Caches意味着缓存的这些文件可能会被再次获取和重新创建。比如,你从远程服务器下载了特定的应用数据,然后为了提高性能,会将数据缓存在Caches中,如果输就消失了,可以重新去下载。另一方面tmp严格存储着由应用产生的临时数据,也就是说如果这些文件在重新访问前被删除,你并不能重新获取到他们。此外,和Caches目录一样,tmp也不会被分到iTunes或iCloud中。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,132评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,802评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,566评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,858评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,867评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,695评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,064评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,705评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,915评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,677评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,796评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,432评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,041评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,992评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,223评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,185评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,535评论 2 343

推荐阅读更多精彩内容