Какие файлы / данные могут получить доступ пользователя к вашему проекту Xcode - Swift 4

Adam S. спросил: 28 марта 2018 в 02:00 в: swift

Недавно я узнал, что неплохо хранить данные, которые вы хотите защитить в plist, и лучше хранить их в цепочке ключей, поскольку пользователь может получить доступ к тому, что там хранится.

Это заставляет меня спросить, какие другие данные могут получить "мотивированный" пользователь изнутри вашего проекта Xcode, как только он находится в магазине приложений. Например, может ли кто-нибудь загрузить базовую базу данных проекта, просто загрузив приложение? Или, если у вас есть файл .csv в папке проекта, который вы используете для анализа данных, может ли пользователь загрузить исходный CSV-файл, просто имея доступ к приложению?

Это может быть очевидный ответ например, "конечно, нет, пользователь не может получить никаких файлов из вашего проекта". Но я довольно новичок, и я не мог найти никаких обсуждений по этому поводу, поэтому я хотел убедиться, что я делаю это безопасным способом.

Спасибо!


2 ответа

Есть решение
Tom Harrington ответил: 28 марта 2018 в 04:07

Приложения на iOS - это "связки", что означает, что это каталог с именем, которое заканчивается на .app. Любой файл, который вы включаете для использования вашим приложением, попадает в пакет, и предполагается, что мотивированный пользователь имеет доступ ко всему в пакете. Это включает в себя любые модели данных, файлы CSV, изображения, звуки и т. Д., Которые вы включаете, а также скомпилированные раскадровки и так далее. Декомпиляция кода - это сложная задача, но модели данных с обратным инжинирингом просты.

Вот как вы можете посмотреть:

  1. Скомпилируйте свое приложение.
  2. В Xcode, зайдите в браузер файлов слева. В разделе "Продукты" найдите свое приложение.
  3. Щелкните правой кнопкой мыши на записи приложения и выберите "показать в Finder".
  4. В Finder щелкните правой кнопкой мыши приложение и выберите "показать содержимое пакета".

Теперь просмотрите содержимое пакета и посмотрите, что там есть.

Это не то же самое, что сохранение данных, это то, что встроено в ваше приложение. Сохраненные данные также в основном доступны. Данные цепочки для ключей должны быть недоступны, потому что Apple шифрует их и хранит отдельно от приложения.

Adam S. ответил: 28 марта 2018 в 05:52
Большое спасибо за четкий ответ. Достаточно ли этого, чтобы не включать предварительно загруженную информацию и попробовать альтернативный метод? Я обеспокоен проблемами пиратства с предварительной загрузкой данных в приложение, если к ним можно получить доступ без необходимых покупок в приложении. Приложение, над которым я работаю, предназначено для запуска в автономном режиме, поэтому я выбрал этот подход. Но, похоже, это плохая идея?
Tom Harrington ответил: 28 марта 2018 в 07:20
Получение таких данных, как предварительно загруженные данные, не поможет кому-то сделать пиратские копии вашего приложения. Ваше приложение должно проверять покупки в приложении, а не проверять, существуют ли файлы. Даже если загрузки есть, в вашем коде покупки в приложении сказано, что они должны быть там?
Adam S. ответил: 28 марта 2018 в 08:18
Приложение представляет собой приложение на флэш-карте, и первоначально я собирался хранить все данные в предварительно загруженной базе данных, а обновления выполнялись с помощью файлов CSV, включенных в папку проекта. Если пользователь совершил покупку в приложении, он разблокировал бы определенное количество флэш-карт из базы данных, которую он мог бы использовать. Так что речь идет не о копиях приложения, а о том, что люди просто загружают все содержимое флэшкарты сразу, даже не покупая ее.
Adam S. ответил: 31 марта 2018 в 11:35
Я заметил, что то, что находится в Assets.xcassets, напрямую не включено в "показ содержимого пакета". Я вижу что-то под названием Assets.car. Я предполагаю, что это означает, что все, что включено в Assets.xcassets, включено в этот файл .car, и пользователь также может получить к ним доступ?
Tom Harrington ответил: 31 марта 2018 в 12:02
Да, это каталог активов. Однако, пожалуйста, я видел чрезмерное беспокойство по поводу пиратства из-за смерти других полезных приложений. Легко позволить такому беспокойству уйти от вас так сильно, что в итоге вы получите искалеченное или несуществующее приложение. Может быть, неуязвим для пиратства, но только потому, что бесполезен или отсутствует.
Gereon ответил: 28 марта 2018 в 02:32

"Мотивированный" пользователь имеет доступ ко всему, что попадает в ваш пакет приложений, когда Xcode упаковывает приложение для загрузки. Посмотрите на фазу сборки "Copy Bundle Resources" вашего проекта, чтобы понять, какие файлы копируются в дополнение к вашему скомпилированному коду.