- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我很想知道是否可以分配可用磁盘空间仅用于在 iOS 应用程序中读取。这个问题的背景是安全问题。
假设您有一个在沙箱中运行的应用程序 A,该应用程序将用户文档存储在其应用程序私有(private)文件夹中。此数据使用一些只能从应用程序 A 访问的磁盘空间。由于沙箱的原因,应用程序 B 无法访问此用户文档。如果应用程序 A 删除用户文档,则只会删除引用该文档的 inode。文档使用的磁盘空间已经存在,但没有人链接到它,因此被标记为可用磁盘空间。如果应用程序 B 现在分配整个可用磁盘空间并按字节读取整个分配的空间(用户文档也位于其中),则应用程序 B 可以访问用户文档。理论上。
为了保护用户文档,有一些想法。首先是文档的加密。通过删除,它们仍然是加密的。但它们仍然可以访问。下一个想法是在删除之前覆盖文档。但磁盘空间是闪存存储,这意味着此时数据将被更改,它们会不确定地移动到闪存中的其他位置。这意味着这也没有帮助。
我发现可以通过使用来分配可用堆空间UnsafeMutableRawPointer.allocate
并使用 UnsafeMutableRawPointer.load
按字节读取分配的空间。我不知道这对于磁盘空间是否也可行。在 this文章我读到有三个选项可以访问磁盘空间 FileHandle
、FileManager
和 Data
。但我认为,所有这些都只能读取文件,而不能读取磁盘空间的字节。
在苹果的文档文件中,我找不到答案,这种情况是否真的可能。我希望其他人能给我一些提示,让我可以找到我正在寻找的信息,或者也许能找到我的问题的答案。
最佳答案
文件系统上的每个文件都使用唯一的 key 进行加密;即使恶意应用程序请求磁盘分配并尝试读取可用空间,它也不会获得任何信息,因为它不拥有必要的解密 key 。
您可以在The iOS security publication中阅读更多相关信息。来自苹果:
File Data Protection
In addition to the hardware encryption features built into iOS devices, Apple uses a technology called Data Protection to further protect data stored in flash memory on the device. Data Protection allows the device to respond to common events such as incoming phone calls, but also enables a high level of encryption for user data. Key system apps, such as Messages, Mail, Calendar, Contacts, Photos, and Health data values use Data Protection by default, and third-party apps installed on iOS 7 or later receive this protection automatically.
关于iOS : Is it possible to allocate free disc space just for reading in an iOS app,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52872459/
这个问题在这里已经有了答案: How do free and malloc work in C? (8 个答案) 关闭 8 年前。 如果你使用malloc()为4个整数分配内存,它不应该返回第一个整
首先,介绍一下背景知识,这样您就不会认为我在尝试做一些疯狂的事情: 我正在尝试调试由其他人编写的 C 库中的崩溃。崩溃看起来像这样: TheProgram(44365,0x7fff75996310)
我正在 cstdlib malloc() 和 free() 函数之上创建自定义内存分配器(出于性能原因)。分配器位于一个简单的类中,该类存储一些内存缓冲区和其他参数。我想将释放内存的方法命名为 fre
我一直在解决这个练习,我不知道从哪里开始: 语言 B 是上下文无关的;语言 C 是 B 的子集:C 是否是上下文无关的?证明或反驳。 我试过使用闭包属性: C = B - ( (A* - C) ∩ B
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 8 年前。 Improve th
如果我想获得在 C 中进行 malloc 的指针的所有权,则 docs for the Python cffi package和 this answer假设使用 ffi.gc 和 lib.free 作
#include #include struct node { int value; struct node* next; }; typedef struct node node_
众所周知,Oracle 在 Java 11 中更改了 Java 许可证,要求 JDK 的商业用途需要付费许可证。然而,使用 OpenJDK 仍然是免费的。 我的 PC 上有一个 JDK 11 文件夹,
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a softwar
我是 C 的新手,在 Linux 中使用带有开关 gcc -g -std=c89 -Wall ... 的 gcc4.4.6 进行编程,我在许多函数深处遇到了这个错误我的程序名为 compute: **
在多线程编程中,我们可以找到两个或多个线程/任务之间的数据传输同步的不同术语。 什么时候我们可以说某个算法是: 1)Lock-Free 2)Wait-Free 3)Wait-Freedom 我明白无锁
我正在尝试使用我通过 malloc() 手动分配的数组来运行程序。我在程序末尾释放()这个数组,但我不断收到错误消息 *** glibc detector *** ./test: double fre
我将 libxml2 与 libxslt 一起用于 C++ 程序的 XML 处理。为了使用 XSL 转换 XML 文档,我使用了以下函数(删除了错误处理): xmlDocPtr transformXm
new/delete 关键字使用免费商店 malloc/free 关键字是使用堆 我看到某处写着new 使用malloc。怎么会这样?它们不在内存段中使用? 其次,我看到某处写道我们不能在new 之后
我有这个简单的代码,我想在 tutorialspoint.com 上运行 #include using namespace std; class Vehicle { string vehic
我需要创建一个函数来删除 c 中链表的前 n 个节点,并返回删除的节点数。如果列表小于 n,它应该变为空。 另外,我不能使用递归。 使用现在的代码,它可以工作,但我没有释放“已删除”节点的内存。如果我
我需要调试这段代码的帮助。我知道问题出在 malloc 和 free 中,但找不到确切的位置、原因和解决方法。请不要回答:“使用 gdb”,仅此而已。我会使用 gdb 来调试它,但我仍然不太了解它并且
这个问题在这里已经有了答案: Unable to free const pointers in C (12 个答案) 关闭 8 年前。 将 C++11 代码连接到某些 C 回调,我必须传递 cons
这是出于好奇,我试图找到我对之前问题的疑问的答案,但他们似乎没有答案。所以在这里问,我只是写了一个代码,我试图将内存分配给一个 int 指针(以填充一个数组)并将 int 值扫描到它。完成数组后,我想
我有两个免费的单子(monad),用于不同上下文中的不同操作。但是,如果特定操作位于上下文中,则一个(主要)DSL 需要包含另一个(action)DSL: import Control.Monad.F
我是一名优秀的程序员,十分优秀!