Mac应用程序的文件权限

ios*_*nyc 6 macos objective-c

我正在创建一个加密文件的mac应用程序.现在,当用户准备打开文件时,我必须将其解密并将其传递给应用程序,让我们说这种情况下的预览.

这样做的最佳方法是什么?我应该将文件解密到某个位置并将该位置发送到预览位置吗?这是最好的方法,我可以对其他应用程序或进程执行任何文件权限不访问此文件吗?

rha*_*oto 2

如果您必须将明文文件放在文件系统上以允许其他程序读取它,那么可能无法确保 100% 安全。如果安全很重要,我的首选是避免这种情况。可能的替代方案是:

  1. 使用其他工具接受的加密交换格式。例如,预览可以读取加密的 PDF。您可以使用PDF Kit或底层Quartz 2D 库来编写加密的 PDF。请注意,默认加密为 40 位;您可能希望增加此值kCGPDFContextEncryptionKeyLength
  2. 通过本地主机将数据提供给其他程序,例如浏览器。您可以将环回 Web 服务器嵌入到您的应用程序中,并将您的数据显示为网页。您应该禁用浏览器缓存(以防止浏览器写入明文),并且需要添加某种形式的身份验证(以防止攻击者查询数据)。

如果必须在文件系统上放置明文,除了限制文件权限之外,一旦其他程序打开该文件,您还可以取消链接该文件。这将阻止正常方法访问该文件,并在其他程序关闭该文件时将其删除。但是,这并不能防止文件取消链接之前的文件系统访问或绕过文件系统的攻击。