Могут ли пользователи изменять значения ключей NSUserDefaults в приложении iOS?

У меня вопрос о безопасности.

Я делаю приложение iOS с покупкой приложения после этого урока, и я храню продукты, которые были куплены в NSUserDefaults. Вот почему я задаюсь вопросом:

Может ли пользователь с jailbroken-устройством изменить ключ NSUserDefaults и значения для приложения?

Большое спасибо, если вы знаете об этом.

Иер

Ответ 1

Да, они могут. Пользовательские значения по умолчанию хранятся относительно вашего каталога приложений здесь:

./MyAppName.app
./Library/Preferences/com.mycompany.MyAppName.plist

Файл plist не зашифрован или подписан, поэтому его можно легко изменить:

plutil -convert xml1 com.mycompany.MyAppName.plist
vim com.mycompany.MyAppName.plist

Вы можете посмотреть в keychain iOS, как сказал @rckoenes, или что-то как эта безопасная замена по умолчанию с открытым исходным кодом, которая предлагает интерфейс, аналогичный NSUserDefaults.


Обновление:

Так как iOS 8, каталог данных (и, следовательно, файлы plist настроек) теперь находится под:

/var/mobile/Containers/Data/Application/<GUID>/Library/Preferences/

Справочные документы Apple

Ответ 2

Даже пользователи без устройства Jailbroken могут изменять размеры...

Ответ 3

Да, пользователь с устройством jailbroke может легко изменить NSUserDefault, так как он просто представляет собой файл plist в каталоге библиотеки изолированной программной среды вашего приложения.

Возможно, вы захотите хранить защищенные вещи в цепочке ключей, что немного более безопасно, чем NSUserDefault.