用户可以从您的Xcode项目(Swift 4)中访问哪些文件/数据

用户可以从您的Xcode项目(Swift 4)中访问哪些文件/数据,swift,xcode,csv,core-data,Swift,Xcode,Csv,Core Data,我最近了解到,将您希望安全的数据存储在plist中是个坏主意,最好将其存储在密钥链中,因为用户可以访问存储在其中的内容 这让我不禁要问,一个“积极”的用户一旦进入应用商店,还能从Xcode项目中访问哪些其他数据。例如,有人可以通过下载应用程序下载项目的核心数据库吗?或者,如果您的项目文件夹中有一个用于解析数据的.csv文件,用户可以通过访问该应用程序下载原始的.csv文件吗 这可能是一个明显的答案,比如“当然不是,用户无法从您的项目中获取任何文件。”但我是一个相当新的人,我找不到任何关于这方面的

我最近了解到,将您希望安全的数据存储在plist中是个坏主意,最好将其存储在密钥链中,因为用户可以访问存储在其中的内容

这让我不禁要问,一个“积极”的用户一旦进入应用商店,还能从Xcode项目中访问哪些其他数据。例如,有人可以通过下载应用程序下载项目的核心数据库吗?或者,如果您的项目文件夹中有一个用于解析数据的.csv文件,用户可以通过访问该应用程序下载原始的.csv文件吗

这可能是一个明显的答案,比如“当然不是,用户无法从您的项目中获取任何文件。”但我是一个相当新的人,我找不到任何关于这方面的讨论,所以我想确保我以一种安全的方式进行工作

谢谢

当Xcode打包应用进行上传时,“有动力”的用户可以访问应用包中的所有内容。查看项目的“复制捆绑资源”构建阶段,了解除了编译的代码外还复制了哪些文件。

当Xcode打包应用程序以供上传时,“受激励的”用户可以访问应用程序捆绑包中的所有内容。查看项目的“复制捆绑资源”构建阶段,了解除了编译的代码外还复制了哪些文件。

iOS上的应用程序是“捆绑包”,这意味着它们是一个目录,其名称以
结尾。app
结束。你为你的应用程序提供的任何文件最终都会在捆绑包中,应该假设一个积极的用户可以访问捆绑包中的所有内容。这包括您包含的任何数据模型、CSV文件、图像、声音等,以及已编译的故事板等。反编译代码很有挑战性,但反向工程数据模型很容易

以下是您可以查看的方式:

  • 编译你的应用程序
  • 在Xcode中,转到左侧的文件浏览器。在“产品”下,找到你的应用程序
  • 右键单击应用程序条目并选择“在Finder中显示”
  • 在Finder中,右键单击应用程序并选择“显示软件包内容”
  • 现在浏览包的内容,看看有什么

    这与保存数据不同,这是应用程序内置的功能。保存的数据也大部分可用。钥匙链数据应该不可用,因为苹果对其进行加密,并将其与应用程序分开。

    iOS上的应用程序是“捆绑包”,这意味着它们是一个目录,名称以
    .app
    结尾。你为你的应用程序提供的任何文件最终都会在捆绑包中,应该假设一个积极的用户可以访问捆绑包中的所有内容。这包括您包含的任何数据模型、CSV文件、图像、声音等,以及已编译的故事板等。反编译代码很有挑战性,但反向工程数据模型很容易

    以下是您可以查看的方式:

  • 编译你的应用程序
  • 在Xcode中,转到左侧的文件浏览器。在“产品”下,找到你的应用程序
  • 右键单击应用程序条目并选择“在Finder中显示”
  • 在Finder中,右键单击应用程序并选择“显示软件包内容”
  • 现在浏览包的内容,看看有什么


    这与保存数据不同,这是应用程序内置的功能。保存的数据也大部分可用。钥匙链数据应该不可用,因为苹果对其进行加密,并将其与应用程序分开。

    非常感谢您给出的明确答案。这是否足以让人担心不包括预加载的信息并尝试其他方法?我担心在应用程序中预加载数据的盗版问题,如果不进行必要的应用程序内购买就可以访问数据的话。我正在开发的应用程序是离线运行的,这就是我采用这种方法的原因。但听起来这可能是个坏主意?获取预加载的数据并不能帮助别人制作你的应用程序的盗版副本。您的应用程序需要通过检查文件是否存在来验证应用程序内购买。即使下载在那里,你的应用程序内购买代码是否说它们应该在那里?该应用程序是一个闪存卡应用程序,我原本打算将所有数据保存在预加载的数据库中,并通过项目文件夹中包含的csv文件进行更新。如果用户进行了应用内购买,它将从数据库中解锁一定数量的闪存卡,供他们使用。因此,这与应用程序的副本无关,但人们实际上只是立即下载所有flashcard内容,甚至不需要购买。我注意到Assets.xcsets中的内容并不直接包含在“show package contents”中。我看到了一个名为Assets.car的东西。我假设这意味着Assets.xAssets中包含的任何内容都包含在这个.car文件中,用户也可以访问它们?是的,这是资产目录。请尽管如此,我已经看到对盗版的过度担忧可能会导致其他有用应用程序的死亡。你很容易让这种担忧远离你,最终你会得到一个残废或不存在的应用程序。也许不会受到盗版的影响,但只能是因为没用或失踪。非常感谢你给出的明确答案。这是否足以让人担心不包括预加载的信息并尝试其他方法?我担心在应用程序中预加载数据的盗版问题,如果不进行必要的应用程序内购买就可以访问数据的话。我正在开发的应用程序是离线运行的,这就是我采用这种方法的原因。但听起来这可能是个坏主意?获取预加载的数据并不能帮助别人制作你的应用程序的盗版副本。您的应用程序需要通过检查文件是否存在来验证应用程序内购买。即使下载在那里,你的应用程序内购买代码是否说它们应该在那里?该应用程序是一个闪存卡应用程序,我原本打算将所有数据保存在预加载的数据库中,并且