Могут ли пользователи изменять значения ключей 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
.